From 5a4d1a3b473766d3d182f42d0d4030b62ba36099 Mon Sep 17 00:00:00 2001 From: Danny Yang Date: Fri, 14 Jun 2024 12:01:40 -0700 Subject: [PATCH] move errpy source under pyre directory Summary: this diff moves errpy from `fbcode/python/errpy` to `fbcode/tools/pyre/source/errpy`, allowing Pyre to use it directly as a dependency instead of pulling from opam the changes I've made to get errpy to build using dune in our internal environment are noted with comments this should allow errpy API changes to be handled in pyre immediately, without needing an OSS release + opam update and without breaking the buck tests Reviewed By: stroxler Differential Revision: D58110305 fbshipit-source-id: 225ede1fc997bfe86927d96fbbbdb7c5e42fb78c --- .cargo/config.toml | 5 + source/errpy/.cargo/config.toml | 5 + .../errpy/.github/workflows/cargo_vendor.yml | 37 + source/errpy/.gitignore | 1 + source/errpy/.ocamlformat | 29 + source/errpy/CODE_OF_CONDUCT.md | 76 + source/errpy/CONTRIBUTING.md | 36 + source/errpy/Cargo.toml | 37 + source/errpy/LICENSE | 21 + source/errpy/README.md | 58 + source/errpy/ast.ml | 476 + source/errpy/ast.rs | 642 + source/errpy/benchmark/benchmark_errpy.py | 103 + .../benchmark_resources/simple.pytest | 34 + source/errpy/constants.rs | 534 + source/errpy/cst_to_ast.rs | 5520 + source/errpy/dune | 39 + source/errpy/dune-project | 30 + source/errpy/errors.rs | 47 + source/errpy/errpy.opam | 34 + source/errpy/ffi_ocaml.rs | 54 + source/errpy/ffi_python.pyi | 12 + source/errpy/ffi_python.rs | 89 + source/errpy/node_wrapper.rs | 260 + source/errpy/parse_and_print.ml | 26 + source/errpy/parser.ml | 15 + source/errpy/parser_post_process.rs | 98 + source/errpy/parser_pre_process.rs | 160 + source/errpy/print_ast.rs | 45 + source/errpy/print_cst.rs | 50 + source/errpy/printers.rs | 237 + source/errpy/printers/ast_pretty_print.rs | 1755 + .../errpy/printers/ast_pretty_print_helper.rs | 106 + source/errpy/printers/ast_print.rs | 970 + source/errpy/rust_to_ocaml_config.toml | 11 + source/errpy/sitter.rs | 601 + source/errpy/string_helpers.rs | 94 + source/errpy/tests/Cargo.toml | 20 + source/errpy/tests/dune | 3 + source/errpy/tests/test_error_recovery.py | 49 + source/errpy/tests/test_ffi_ocaml.ml | 314 + source/errpy/tests/test_grammar_support.py | 43 + source/errpy/tests/test_invalid_syntax.py | 35 + source/errpy/tests/test_more_match.py | 58 + .../errpy/tests/test_parser_post_process.rs | 83 + source/errpy/tests/test_parser_pre_process.rs | 87 + source/errpy/tests/test_pretty_printer.py | 24 + .../error_recovery/simple.pytest | 36 + .../error_recovery/simple.pytest.expect_fails | 0 .../Simple-broad-case_expected_results | 20525 +++ .../Simple-broad-case_expected_results | 21193 +++ .../Simple-broad-case_expected_results | 19337 +++ .../Simple-broad-case_expected_results | 18514 +++ .../Simple-broad-case_expected_results | 10900 ++ .../invalid_grammar.pytest | 18 + .../invalid_grammar.pytest_expected_results | 30 + .../milestone_tests.pytest | 82 + .../milestone_tests.pytest_expected_results | 116 + .../node_dropping.pytest | 16 + .../node_dropping.pytest_expected_results | 37 + .../parso_error_recovery_tests.pytest | 95 + ...ror_recovery_tests.pytest_expected_results | 117 + .../invalid_identifiers.pytest | 39 + ...nvalid_identifiers.pytest_expected_results | 137 + .../invalid_match_case.pytest | 20 + ...invalid_match_case.pytest_expected_results | 73 + .../invalid_syntax_tests/invalid_types.pytest | 15 + .../invalid_types.pytest_expected_results | 43 + .../pretty_printer_bugs.pytest | 158 + .../tests/test_resources/test_config.json | 1 + .../unit_tests/ast_async_and_await.pytest | 39 + .../unit_tests/ast_control_flow.pytest | 233 + .../unit_tests/ast_expressions.pytest | 319 + .../ast_functions_and_classes.pytest | 302 + .../unit_tests/ast_literals.pytest | 736 + .../unit_tests/ast_pattern_matching.pytest | 381 + .../unit_tests/ast_statements.pytest | 130 + .../unit_tests/ast_variables.pytest | 73 + .../unit_tests/more_match/match1.pytest | 198 + .../more_match/match1.pytest.expect_fails | 1 + .../unit_tests/more_match/match10.pytest | 124 + .../unit_tests/more_match/match11.pytest | 72 + .../unit_tests/more_match/match12.pytest | 72 + .../more_match/match12.pytest.expect_fails | 1 + .../unit_tests/more_match/match2.pytest | 381 + .../unit_tests/more_match/match3.pytest | 399 + .../unit_tests/more_match/match4.pytest | 145 + .../unit_tests/more_match/match5.pytest | 120 + .../unit_tests/more_match/match6.pytest | 83 + .../more_match/match6.pytest.expect_fails | 1 + .../unit_tests/more_match/match7.pytest | 72 + .../unit_tests/more_match/match8.pytest | 26 + .../unit_tests/more_match/match9.pytest | 60 + .../test_resources/unit_tests/sandbox.pytest | 8 + source/errpy/tests/test_sandbox.py | 80 + source/errpy/tests/test_string_helpers.rs | 163 + source/errpy/tests/utils/ast_utils.py | 154 + .../tests/utils/error_recovery_common.py | 425 + source/errpy/tests/utils/test_common.py | 245 + .../vendor/ocaml/interop/.cargo/config.toml | 13 + .../vendor/ocaml/interop/.circleci/config.yml | 185 + .../errpy/vendor/ocaml/interop/CHANGELOG.md | 2 + .../vendor/ocaml/interop/CODE_OF_CONDUCT.md | 80 + .../vendor/ocaml/interop/CONTRIBUTING.md | 36 + source/errpy/vendor/ocaml/interop/Cargo.toml | 27 + source/errpy/vendor/ocaml/interop/LICENSE | 21 + source/errpy/vendor/ocaml/interop/README.md | 21 + .../ocaml/interop/cargo_test_utils/Cargo.toml | 11 + .../cargo_test_utils/cargo_test_utils.rs | 48 + .../ocaml/interop/macro_test_util/Cargo.toml | 16 + .../macro_test_util/macro_test_util.rs | 74 + .../vendor/ocaml/interop/ocamlrep/Cargo.toml | 20 + .../vendor/ocaml/interop/ocamlrep/arena.rs | 277 + .../vendor/ocaml/interop/ocamlrep/block.rs | 270 + .../vendor/ocaml/interop/ocamlrep/cache.rs | 86 + .../vendor/ocaml/interop/ocamlrep/error.rs | 111 + .../vendor/ocaml/interop/ocamlrep/from.rs | 92 + .../vendor/ocaml/interop/ocamlrep/impls.rs | 1389 + .../vendor/ocaml/interop/ocamlrep/lib.rs | 527 + .../vendor/ocaml/interop/ocamlrep/ptr.rs | 144 + .../errpy/vendor/ocaml/interop/ocamlrep/rc.rs | 313 + .../interop/ocamlrep/test/test_add_root.rs | 196 + .../ocamlrep/test/test_add_root/Cargo.toml | 16 + .../interop/ocamlrep/test/test_bindings.rs | 361 + .../ocamlrep/test/test_bindings/Cargo.toml | 21 + .../ocamlrep/test/test_from_ocamlrep.rs | 235 + .../test/test_from_ocamlrep/Cargo.toml | 16 + .../ocamlrep/test/test_from_ocamlrep_in.rs | 86 + .../test/test_from_ocamlrep_in/Cargo.toml | 17 + .../interop/ocamlrep/test/test_ocamlrep.ml | 830 + .../vendor/ocaml/interop/ocamlrep/value.rs | 203 + .../interop/ocamlrep_caml_builtins/Cargo.toml | 18 + .../interop/ocamlrep_caml_builtins/lib.rs | 57 + .../ocaml/interop/ocamlrep_custom/Cargo.toml | 16 + .../ocaml/interop/ocamlrep_custom/lib.rs | 547 + .../interop/ocamlrep_custom/test/Cargo.toml | 20 + .../interop/ocamlrep_custom/test/counter.rs | 103 + .../ocamlrep_custom/test/counter_client.ml | 24 + .../ocamlrep_custom/test/test_custom.ml | 71 + .../ocamlrep_custom/test/test_custom.rs | 95 + .../ocaml/interop/ocamlrep_derive/Cargo.toml | 24 + .../ocaml/interop/ocamlrep_derive/lib.rs | 584 + .../interop/ocamlrep_ocamlpool/Cargo.toml | 22 + .../ocaml/interop/ocamlrep_ocamlpool/build.rs | 40 + .../ocaml/interop/ocamlrep_ocamlpool/dune | 8 + .../ocaml/interop/ocamlrep_ocamlpool/lib.rs | 463 + .../interop/ocamlrep_ocamlpool/ocamlpool.c | 412 + .../interop/ocamlrep_ocamlpool/ocamlpool.h | 95 + .../ocamlrep_ocamlpool/test/Cargo.toml | 20 + .../ocamlrep_ocamlpool/test/ocamlpool_test.ml | 33 + .../ocamlrep_ocamlpool/test/ocamlpool_test.rs | 146 + .../vendor/ocaml/interop/oss/.buckconfig | 20 + .../errpy/vendor/ocaml/interop/oss/.gitignore | 10 + .../vendor/ocaml/interop/oss/CHANGELOG.md | 2 + .../ocaml/interop/oss/CODE_OF_CONDUCT.md | 80 + .../vendor/ocaml/interop/oss/CONTRIBUTING.md | 36 + source/errpy/vendor/ocaml/interop/oss/LICENSE | 21 + .../vendor/ocaml/interop/oss/README-BUCK.md | 62 + .../vendor/ocaml/interop/oss/ocaml-setup.sh | 30 + .../rust_to_ocaml/attr/rust_to_ocaml_attr.rs | 21 + .../rust_to_ocaml/attr_parser/Cargo.toml | 16 + .../rust_to_ocaml/attr_parser/attr_parser.rs | 280 + .../rust_to_ocaml/rust_to_ocaml/Cargo.toml | 25 + .../rust_to_ocaml/rust_to_ocaml/config.rs | 153 + .../rust_to_ocaml/rust_to_ocaml/convert.rs | 323 + .../interop/rust_to_ocaml/rust_to_ocaml/ir.rs | 169 + .../rust_to_ocaml/rust_to_ocaml/ir/display.rs | 314 + .../rust_to_ocaml/rust_to_ocaml/macros.rs | 42 + .../rust_to_ocaml/rewrite_module_names.rs | 79 + .../rust_to_ocaml/rewrite_types.rs | 118 + .../rust_to_ocaml/rust_to_ocaml.rs | 160 + .../rust_to_ocaml_attr/Cargo.toml | 14 + .../rust_to_ocaml_attr/rust_to_ocaml_attr.rs | 21 + .../ocaml/interop/rust_to_ocaml/src/config.rs | 153 + .../interop/rust_to_ocaml/src/convert.rs | 323 + .../ocaml/interop/rust_to_ocaml/src/ir.rs | 169 + .../interop/rust_to_ocaml/src/ir/display.rs | 314 + .../ocaml/interop/rust_to_ocaml/src/macros.rs | 42 + .../rust_to_ocaml/src/rewrite_module_names.rs | 79 + .../rust_to_ocaml/src/rewrite_types.rs | 118 + .../rust_to_ocaml/src/rust_to_ocaml.rs | 160 + .../interop/rust_to_ocaml/test/Cargo.toml | 18 + .../rust_to_ocaml/test/cases/.ocamlformat | 7 + .../interop/rust_to_ocaml/test/cases/attrs.rs | 36 + .../rust_to_ocaml/test/cases/attrs.rs.exp | 15 + .../rust_to_ocaml/test/cases/bool_alias.rs | 6 + .../test/cases/bool_alias.rs.exp | 1 + .../rust_to_ocaml/test/cases/doc_comment.rs | 70 + .../test/cases/doc_comment.rs.exp | 68 + .../rust_to_ocaml/test/cases/inline_tuple.rs | 13 + .../test/cases/inline_tuple.rs.exp | 5 + .../test/cases/inline_tuple_bad.rs | 9 + .../test/cases/inline_tuple_bad.rs.exp | 4 + .../interop/rust_to_ocaml/test/cases/int.rs | 28 + .../rust_to_ocaml/test/cases/int.rs.exp | 23 + .../rust_to_ocaml/test/cases/keywords.rs | 104 + .../rust_to_ocaml/test/cases/keywords.rs.exp | 154 + .../interop/rust_to_ocaml/test/cases/lists.rs | 11 + .../rust_to_ocaml/test/cases/lists.rs.exp | 9 + .../rust_to_ocaml/test/cases/mutual_rec.rs | 9 + .../test/cases/mutual_rec.rs.exp | 3 + .../rust_to_ocaml/test/cases/my_result.rs | 9 + .../rust_to_ocaml/test/cases/my_result.rs.exp | 3 + .../test/cases/name_attribute.rs | 36 + .../test/cases/name_attribute.rs.exp | 20 + .../rust_to_ocaml/test/cases/option.rs | 9 + .../rust_to_ocaml/test/cases/option.rs.exp | 3 + .../rust_to_ocaml/test/cases/pointers.rs | 16 + .../rust_to_ocaml/test/cases/pointers.rs.exp | 17 + .../test/cases/qualified_name.rs | 12 + .../test/cases/qualified_name.rs.exp | 7 + .../rust_to_ocaml/test/cases/struct.rs | 21 + .../rust_to_ocaml/test/cases/struct.rs.exp | 14 + .../interop/rust_to_ocaml/test/cases/tuple.rs | 8 + .../rust_to_ocaml/test/cases/tuple.rs.exp | 3 + .../rust_to_ocaml/test/cases/tuple_structs.rs | 14 + .../test/cases/tuple_structs.rs.exp | 9 + .../rust_to_ocaml/test/cases/type_args.rs | 10 + .../rust_to_ocaml/test/cases/type_args.rs.exp | 5 + .../cases/type_name_matches_module_name.rs | 17 + .../type_name_matches_module_name.rs.exp | 13 + .../rust_to_ocaml/test/cases/variants.rs | 25 + .../rust_to_ocaml/test/cases/variants.rs.exp | 19 + .../interop/rust_to_ocaml/test/config.toml | 19 + .../rust_to_ocaml/test/test_rust_to_ocaml.rs | 126 + .../ocaml/interop/signed_source/Cargo.toml | 20 + .../interop/signed_source/signed_source.rs | 182 + .../vendor/tree-sitter-python/Cargo.toml | 19 + .../bindings/rust/README.md | 36 + .../tree-sitter-python/bindings/rust/build.rs | 19 + .../tree-sitter-python/bindings/rust/lib.rs | 68 + .../vendor/tree-sitter-python/grammar.js | 1186 + .../tree-sitter-python/queries/highlights.scm | 126 + .../tree-sitter-python/queries/tags.scm | 12 + .../tree-sitter-python/src/grammar.json | 6319 + .../tree-sitter-python/src/node-types.json | 3664 + .../vendor/tree-sitter-python/src/parser.c | 118747 +++++++++++++++ .../vendor/tree-sitter-python/src/scanner.c | 484 + .../src/tree_sitter/parser.h | 223 + .../tree-sitter-python/test/corpus/errors.txt | 30 + .../test/corpus/expressions.txt | 1087 + .../test/corpus/literals.txt | 1003 + .../test/corpus/pattern_matching.txt | 2026 + .../test/corpus/statements.txt | 1438 + .../test/highlight/keywords.py | 30 + .../test/highlight/parameters.py | 4 + .../test/highlight/pattern_matching.py | 54 + 247 files changed, 259309 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 source/errpy/.cargo/config.toml create mode 100644 source/errpy/.github/workflows/cargo_vendor.yml create mode 100644 source/errpy/.gitignore create mode 100644 source/errpy/.ocamlformat create mode 100644 source/errpy/CODE_OF_CONDUCT.md create mode 100644 source/errpy/CONTRIBUTING.md create mode 100644 source/errpy/Cargo.toml create mode 100644 source/errpy/LICENSE create mode 100644 source/errpy/README.md create mode 100644 source/errpy/ast.ml create mode 100644 source/errpy/ast.rs create mode 100644 source/errpy/benchmark/benchmark_errpy.py create mode 100644 source/errpy/benchmark/benchmark_resources/simple.pytest create mode 100644 source/errpy/constants.rs create mode 100644 source/errpy/cst_to_ast.rs create mode 100644 source/errpy/dune create mode 100644 source/errpy/dune-project create mode 100644 source/errpy/errors.rs create mode 100644 source/errpy/errpy.opam create mode 100644 source/errpy/ffi_ocaml.rs create mode 100644 source/errpy/ffi_python.pyi create mode 100644 source/errpy/ffi_python.rs create mode 100644 source/errpy/node_wrapper.rs create mode 100644 source/errpy/parse_and_print.ml create mode 100644 source/errpy/parser.ml create mode 100644 source/errpy/parser_post_process.rs create mode 100644 source/errpy/parser_pre_process.rs create mode 100644 source/errpy/print_ast.rs create mode 100644 source/errpy/print_cst.rs create mode 100644 source/errpy/printers.rs create mode 100644 source/errpy/printers/ast_pretty_print.rs create mode 100644 source/errpy/printers/ast_pretty_print_helper.rs create mode 100644 source/errpy/printers/ast_print.rs create mode 100644 source/errpy/rust_to_ocaml_config.toml create mode 100644 source/errpy/sitter.rs create mode 100644 source/errpy/string_helpers.rs create mode 100644 source/errpy/tests/Cargo.toml create mode 100644 source/errpy/tests/dune create mode 100644 source/errpy/tests/test_error_recovery.py create mode 100644 source/errpy/tests/test_ffi_ocaml.ml create mode 100644 source/errpy/tests/test_grammar_support.py create mode 100644 source/errpy/tests/test_invalid_syntax.py create mode 100644 source/errpy/tests/test_more_match.py create mode 100644 source/errpy/tests/test_parser_post_process.rs create mode 100644 source/errpy/tests/test_parser_pre_process.rs create mode 100644 source/errpy/tests/test_pretty_printer.py create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.expect_fails create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_garbage._expected_results/Simple-broad-case_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_keyword._expected_results/Simple-broad-case_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_whitespace._expected_results/Simple-broad-case_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.nth_removed._expected_results/Simple-broad-case_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery/simple.pytest.tailtest._expected_results/Simple-broad-case_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest create mode 100644 source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest create mode 100644 source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest_expected_results create mode 100644 source/errpy/tests/test_resources/pretty_printer_tests/pretty_printer_bugs.pytest create mode 100644 source/errpy/tests/test_resources/test_config.json create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_async_and_await.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_control_flow.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_expressions.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_functions_and_classes.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_literals.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_pattern_matching.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_statements.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/ast_variables.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest.expect_fails create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match10.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match11.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest.expect_fails create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match2.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match3.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match4.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match5.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest.expect_fails create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match7.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match8.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/more_match/match9.pytest create mode 100644 source/errpy/tests/test_resources/unit_tests/sandbox.pytest create mode 100644 source/errpy/tests/test_sandbox.py create mode 100644 source/errpy/tests/test_string_helpers.rs create mode 100644 source/errpy/tests/utils/ast_utils.py create mode 100644 source/errpy/tests/utils/error_recovery_common.py create mode 100644 source/errpy/tests/utils/test_common.py create mode 100644 source/errpy/vendor/ocaml/interop/.cargo/config.toml create mode 100644 source/errpy/vendor/ocaml/interop/.circleci/config.yml create mode 100644 source/errpy/vendor/ocaml/interop/CHANGELOG.md create mode 100644 source/errpy/vendor/ocaml/interop/CODE_OF_CONDUCT.md create mode 100644 source/errpy/vendor/ocaml/interop/CONTRIBUTING.md create mode 100644 source/errpy/vendor/ocaml/interop/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/LICENSE create mode 100644 source/errpy/vendor/ocaml/interop/README.md create mode 100644 source/errpy/vendor/ocaml/interop/cargo_test_utils/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/cargo_test_utils/cargo_test_utils.rs create mode 100644 source/errpy/vendor/ocaml/interop/macro_test_util/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/macro_test_util/macro_test_util.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/arena.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/block.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/cache.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/error.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/from.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/impls.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/lib.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/ptr.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/rc.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/test/test_ocamlrep.ml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep/value.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/lib.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/lib.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter_client.ml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.ml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_derive/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_derive/lib.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/build.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/dune create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/lib.rs create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.c create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.h create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.ml create mode 100644 source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.rs create mode 100644 source/errpy/vendor/ocaml/interop/oss/.buckconfig create mode 100644 source/errpy/vendor/ocaml/interop/oss/.gitignore create mode 100644 source/errpy/vendor/ocaml/interop/oss/CHANGELOG.md create mode 100644 source/errpy/vendor/ocaml/interop/oss/CODE_OF_CONDUCT.md create mode 100644 source/errpy/vendor/ocaml/interop/oss/CONTRIBUTING.md create mode 100644 source/errpy/vendor/ocaml/interop/oss/LICENSE create mode 100644 source/errpy/vendor/ocaml/interop/oss/README-BUCK.md create mode 100755 source/errpy/vendor/ocaml/interop/oss/ocaml-setup.sh create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr/rust_to_ocaml_attr.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/attr_parser.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/config.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/convert.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir/display.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/macros.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_module_names.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_types.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rust_to_ocaml.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/rust_to_ocaml_attr.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/config.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/convert.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir/display.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/macros.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_module_names.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_types.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rust_to_ocaml.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/.ocamlformat create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs.exp create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/config.toml create mode 100644 source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/test_rust_to_ocaml.rs create mode 100644 source/errpy/vendor/ocaml/interop/signed_source/Cargo.toml create mode 100644 source/errpy/vendor/ocaml/interop/signed_source/signed_source.rs create mode 100644 source/errpy/vendor/tree-sitter-python/Cargo.toml create mode 100644 source/errpy/vendor/tree-sitter-python/bindings/rust/README.md create mode 100644 source/errpy/vendor/tree-sitter-python/bindings/rust/build.rs create mode 100644 source/errpy/vendor/tree-sitter-python/bindings/rust/lib.rs create mode 100644 source/errpy/vendor/tree-sitter-python/grammar.js create mode 100644 source/errpy/vendor/tree-sitter-python/queries/highlights.scm create mode 100644 source/errpy/vendor/tree-sitter-python/queries/tags.scm create mode 100644 source/errpy/vendor/tree-sitter-python/src/grammar.json create mode 100644 source/errpy/vendor/tree-sitter-python/src/node-types.json create mode 100644 source/errpy/vendor/tree-sitter-python/src/parser.c create mode 100644 source/errpy/vendor/tree-sitter-python/src/scanner.c create mode 100644 source/errpy/vendor/tree-sitter-python/src/tree_sitter/parser.h create mode 100644 source/errpy/vendor/tree-sitter-python/test/corpus/errors.txt create mode 100644 source/errpy/vendor/tree-sitter-python/test/corpus/expressions.txt create mode 100644 source/errpy/vendor/tree-sitter-python/test/corpus/literals.txt create mode 100644 source/errpy/vendor/tree-sitter-python/test/corpus/pattern_matching.txt create mode 100644 source/errpy/vendor/tree-sitter-python/test/corpus/statements.txt create mode 100644 source/errpy/vendor/tree-sitter-python/test/highlight/keywords.py create mode 100644 source/errpy/vendor/tree-sitter-python/test/highlight/parameters.py create mode 100644 source/errpy/vendor/tree-sitter-python/test/highlight/pattern_matching.py diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000000..3006143ff0c --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,5 @@ +[source.crates-io] # @oss-disable +replace-with = "vendored-sources" # @oss-disable + +[source.vendored-sources] # @oss-disable +directory = "../../../third-party/rust/vendor" # @oss-disable diff --git a/source/errpy/.cargo/config.toml b/source/errpy/.cargo/config.toml new file mode 100644 index 00000000000..406fc872651 --- /dev/null +++ b/source/errpy/.cargo/config.toml @@ -0,0 +1,5 @@ +[source.crates-io] # @oss-disable +replace-with = "vendored-sources" # @oss-disable + +[source.vendored-sources] # @oss-disable +directory = "../../../../../third-party/rust/vendor" # @oss-disable diff --git a/source/errpy/.github/workflows/cargo_vendor.yml b/source/errpy/.github/workflows/cargo_vendor.yml new file mode 100644 index 00000000000..0e5db6a4cbc --- /dev/null +++ b/source/errpy/.github/workflows/cargo_vendor.yml @@ -0,0 +1,37 @@ +on: + push: + branches: + - main +name: cargo vendor and commit +run-name: cargo vendor 🚚 on - ${{ github.event.head_commit.message }} +jobs: + cargo_vendor: + runs-on: ubuntu-latest + steps: + - name: Delete release branch + uses: dawidd6/action-delete-branch@v3 + with: + soft_fail: true # set to true so that if the branch doesn't exist action doesnt fail + branches: release + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@stable + - run: cargo vendor vendor_external + - name: Create .cargo dir + run: | + mkdir -p .cargo + - name: Create cargo config + shell: bash + run: | + cat << EOF > .cargo/config.toml + [source.crates-io] + replace-with = "vendored-sources" + + [source.vendored-sources] + directory = "vendor_external" + EOF + - name: commit to 'new' release branch + uses: EndBug/add-and-commit@v9.1.1 + with: + new_branch: release + author_name: GitHub Action + author_email: action@github.com diff --git a/source/errpy/.gitignore b/source/errpy/.gitignore new file mode 100644 index 00000000000..69fa449dd96 --- /dev/null +++ b/source/errpy/.gitignore @@ -0,0 +1 @@ +_build/ diff --git a/source/errpy/.ocamlformat b/source/errpy/.ocamlformat new file mode 100644 index 00000000000..55290f3009d --- /dev/null +++ b/source/errpy/.ocamlformat @@ -0,0 +1,29 @@ +assignment-operator=end-line +break-cases=all +break-fun-decl=fit-or-vertical +break-infix=fit-or-vertical +break-infix-before-func +break-separators=after +break-sequences +dock-collection-brackets=true +doc-comments=before +exp-grouping=preserve +field-space=tight-decl +if-then-else=fit-or-vertical +indicate-nested-or-patterns=unsafe-no +let-and=sparse +let-binding-spacing=sparse +margin=100 +ocp-indent-compat +parens-tuple=multi-line-only +parens-tuple-patterns=multi-line-only +sequence-style=terminator +sequence-blank-line=preserve-one +single-case=sparse +space-around-lists=false +space-around-records +space-around-variants +type-decl=sparse +wrap-comments +wrap-fun-args=false +parse-docstrings diff --git a/source/errpy/CODE_OF_CONDUCT.md b/source/errpy/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..f049d4c5317 --- /dev/null +++ b/source/errpy/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when +an individual is representing the project or its community in public spaces. +Examples of representing a project or community include using an official +project e-mail address, posting via an official social media account, or acting +as an appointed representative at an online or offline event. Representation of +a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/source/errpy/CONTRIBUTING.md b/source/errpy/CONTRIBUTING.md new file mode 100644 index 00000000000..3de6b732343 --- /dev/null +++ b/source/errpy/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# Contributing to Errpy + +## Issues + +We use GitHub issues to track public bugs. Please ensure your description is +clear and has sufficient instructions to be able to reproduce the issue. +We want to make contributing to this project as easy and transparent as +possible. + +## Contributor License Agreement ("CLA") + +In order to accept your pull request, we need you to submit a CLA. You only need +to do this once to work on any of Facebook's open source projects. + +Complete your CLA here: . If you have any questions, +please drop us a line at cla@fb.com. + +You are also expected to follow the [Code of Conduct](CODE_OF_CONDUCT.md), +so please read that if you are a new contributor. + +## Developing Errpy + +Unfortunately at the moment it is difficult to build Errpy because we +are still in the process of open-sourcing a dependency, +[ocamlrep](https://github.com/facebook/ocamlrep). It is possible to build, +but requires cloning `ocamlrep` and setting paths appropriately. + +If you are interested in working on Errpy, please file an issue and we'll +work on the docs for this, in the meantime we are focused on getting +`ocamlrep` into the Rust repository in crates.io so that the build will be +come standard. + +## License + +By contributing to Pyre, you agree that your contributions will be licensed +under the LICENSE file in the root directory of this source tree. diff --git a/source/errpy/Cargo.toml b/source/errpy/Cargo.toml new file mode 100644 index 00000000000..3f748e7e072 --- /dev/null +++ b/source/errpy/Cargo.toml @@ -0,0 +1,37 @@ +# @generated by autocargo from //tools/pyre/source/errpy:[ffi_ocaml,print_ast,print_cst] + +[package] +name = "ffi_ocaml" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "ffi_ocaml.rs" +test = false +doctest = false +crate-type = ["lib", "staticlib"] + +[[bin]] +name = "print_ast" +path = "print_ast.rs" + +[[bin]] +name = "print_cst" +path = "print_cst.rs" + +[dependencies] +bstr = { version = "1.4.0", features = ["serde", "std", "unicode"] } +clap = { version = "3.2.25", features = ["derive", "env", "regex", "unicode", "wrap_help"] } +itertools = "0.11.0" +num_enum = { version = "0.5", default-features = false } +ocamlrep = { path = "vendor/ocaml/interop/ocamlrep" } +ocamlrep_ocamlpool = { path = "vendor/ocaml/interop/ocamlrep_ocamlpool" } +phf = { version = "0.11", features = ["macros"] } +regex = "1.9.2" +rust_to_ocaml_attr = { path = "vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr" } +serde = { version = "1.0.185", features = ["derive", "rc"] } +thiserror = "1.0.49" +tree-sitter = "0.20.8" +tree_sitter_python = { path = "vendor/tree-sitter-python" } diff --git a/source/errpy/LICENSE b/source/errpy/LICENSE new file mode 100644 index 00000000000..b93be90515c --- /dev/null +++ b/source/errpy/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Meta Platforms, Inc. and affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/source/errpy/README.md b/source/errpy/README.md new file mode 100644 index 00000000000..7d66f0bd642 --- /dev/null +++ b/source/errpy/README.md @@ -0,0 +1,58 @@ +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +# Errpy: An Error Recovering Rust Python Parser + +This is a new project to provide an error-recovering Python parser, implemented +in Rust based on tree-sitter. Our short-term goal is to use it in the [pyre +type checker](https://github.com/facebook/pyre-check), in order to provide +better IDE features. + +## License + +Errpy is licensed under the MIT license. + +## Building +Errpy depends upon the following: + * Ocaml + * Dune + * Rust + * Cargo + +### Platform +ERRPY is verified as being buildable on Linux on OCaml 4.14.0 + +### Installing Ocaml and Dune +Install `opam` and run `opam switch install "4.14.0"` + +## Usage +It is recommended to use dune as your build system. To use errpy in your dune project, you can add errpy to the libraries stanza in your dune file. For example, + +``` +(library + (name mylib) + (libraries errpy)) +``` + +### For local development +If you want to test your changes to errpy locally and use them in another OCaml project (.e.g. Pyre) you can try the following, + +First clone the repo with: `$ git clone https://github.com/facebook/errpy.git` + +Or use `$ git clone --branch release https://github.com/facebook/errpy.git` if you're operating within an `offline` rust enviroment. + +``` +... make the required changed ... +$ cd errpy +$ dune build @install # Build the errpy library +$ dune test # Run tests +$ opam pin add errpy . -n # pin opam to errpy +$ opam install errpy --verbose # install local build as errpy in opam +``` + +## Formatting +When making Ocaml changes you can run `ocamlformat` in order to ensure code is +formatted in a conistent manner. This is invoked as follows: +``` +$ dune build @fmt +$ dune promote +``` diff --git a/source/errpy/ast.ml b/source/errpy/ast.ml new file mode 100644 index 00000000000..cc62e7f9735 --- /dev/null +++ b/source/errpy/ast.ml @@ -0,0 +1,476 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +type num = + | Int of int + | Float of float + | Complex of float + | Big_int of string + (** pyast uses Py.Object.t for Big_int, but this is presumably not what we want (if it's an + opaque wrapper for a CPython object). Just have the source text representing the integer + digits for now instead. *) +[@@deriving show] + +type object_ = num [@@deriving show] + +type constant_desc = + | Ellipsis + | Bool of bool + | Num of num + | Str of string + | ByteStr of string +[@@deriving show] + +type constant = constant_desc option [@@deriving show] +type singleton = bool option [@@deriving show] + +type withitem = { + context_expr: expr; + optional_vars: expr option; +} + +and recoverableerrorwithlocation = { + error: string; + lineno: int; + col_offset: int; + end_lineno: int; + end_col_offset: int; +} + +and unaryop = + | Invert + | Not + | UAdd + | USub + +and type_ignore = + | TypeIgnore of { + lineno: int; + tag: string; + } + +and stmt = { + desc: stmt_desc; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} + +and stmt_desc = + | FunctionDef of { + name: string; + args: arguments; + body: stmt list; + decorator_list: expr list; + type_params: expr list; + returns: expr option; + type_comment: string option; + } + | AsyncFunctionDef of { + name: string; + args: arguments; + body: stmt list; + decorator_list: expr list; + type_params: expr list; + returns: expr option; + type_comment: string option; + } + | ClassDef of { + name: string; + bases: expr list; + keywords: keyword list; + body: stmt list; + decorator_list: expr list; + type_params: expr list; + } + | Return of expr option + | Delete of expr list + | Assign of { + targets: expr list; + value: expr; + type_comment: string option; + } + | AugAssign of { + target: expr; + op: operator; + value: expr; + } + | AnnAssign of { + target: expr; + annotation: expr; + value: expr option; + simple: int; + } + | For of { + target: expr; + iter: expr; + body: stmt list; + orelse: stmt list; + type_comment: string option; + } + | AsyncFor of { + target: expr; + iter: expr; + body: stmt list; + orelse: stmt list; + type_comment: string option; + } + | While of { + test: expr; + body: stmt list; + orelse: stmt list; + } + | If of { + test: expr; + body: stmt list; + orelse: stmt list; + } + | With of { + items: withitem list; + body: stmt list; + type_comment: string option; + } + | AsyncWith of { + items: withitem list; + body: stmt list; + type_comment: string option; + } + | Match of { + subject: expr; + cases: match_case list; + } + | Raise of { + exc: expr option; + cause: expr option; + } + | Try of { + body: stmt list; + handlers: excepthandler list; + orelse: stmt list; + finalbody: stmt list; + } + | Assert of { + test: expr; + msg: expr option; + } + | Import of alias list + | ImportFrom of { + module_: string option; + names: alias list; + level: int option; + } + | Global of string list + | Nonlocal of string list + | Expr of expr + | Pass + | Break + | Continue + +and slice = expr + +and pattern = { + desc: pattern_desc; + lineno: int; + col_offset: int; + end_lineno: int; + end_col_offset: int; +} + +and pattern_desc = + | MatchValue of expr + | MatchSingleton of constant + | MatchSequence of pattern list + | MatchMapping of { + keys: expr list; + patterns: pattern list; + rest: string option; + } + | MatchClass of { + cls: expr; + patterns: pattern list; + kwd_attrs: string list; + kwd_patterns: pattern list; + } + | MatchStar of string option + | MatchAs of { + pattern: pattern option; + name: string option; + } + | MatchOr of pattern list + +and operator = + | Add + | Sub + | Mult + | MatMult + | Div + | Mod + | Pow + | LShift + | RShift + | BitOr + | BitXor + | BitAnd + | FloorDiv + +and mod_ = + | Module of { + body: stmt list; + type_ignores: type_ignore list; + } + | Interactive of stmt list + | Expression of expr + | FunctionType of { + argtypes: expr list; + returns: expr; + } + +and match_case = { + pattern: pattern; + guard: expr option; + body: stmt list; +} + +and keyword = { + arg: string option; + value: expr; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} + +and expr_context = + | Load + | Store + | Del + +and expr = { + desc: expr_desc; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} + +and expr_desc = + | BoolOp of { + op: boolop; + values: expr list; + } + | NamedExpr of { + target: expr; + value: expr; + } + | BinOp of { + left: expr; + op: operator; + right: expr; + } + | UnaryOp of { + op: unaryop; + operand: expr; + } + | Lambda of { + args: arguments; + body: expr; + } + | IfExp of { + test: expr; + body: expr; + orelse: expr; + } + | Dict of { + keys: expr option list; + values: expr list; + } + | Set of expr list + | ListComp of { + elt: expr; + generators: comprehension list; + } + | SetComp of { + elt: expr; + generators: comprehension list; + } + | DictComp of { + key: expr; + value: expr; + generators: comprehension list; + } + | GeneratorExp of { + elt: expr; + generators: comprehension list; + } + | Await of expr + | Yield of expr option + | YieldFrom of expr + | Compare of { + left: expr; + ops: cmpop list; + comparators: expr list; + } + | Call of { + func: expr; + args: expr list; + keywords: keyword list; + } + | FormattedValue of { + value: expr; + conversion: int option; + format_spec: expr option; + } + | JoinedStr of expr list + | Constant of { + value: constant; + kind: string option; + } + | Attribute of { + value: expr; + attr: string; + ctx: expr_context; + } + | Subscript of { + value: expr; + slice: expr; + ctx: expr_context; + } + | Starred of { + value: expr; + ctx: expr_context; + } + | Name of { + id: string; + ctx: expr_context; + } + | List of { + elts: expr list; + ctx: expr_context; + } + | Tuple of { + elts: expr list; + ctx: expr_context; + } + | Slice of { + lower: expr option; + upper: expr option; + step: expr option; + } + +and excepthandler = { + desc: excepthandler_desc; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} + +and excepthandler_desc = + | ExceptHandler of { + type_: expr option; + name: string option; + body: stmt list; + } + +and comprehension = { + target: expr; + iter: expr; + ifs: expr list; + is_async: bool; +} + +and cmpop = + | Eq + | NotEq + | Lt + | LtE + | Gt + | GtE + | Is + | IsNot + | In + | NotIn + +and boolop = + | And + | Or + +and arguments = { + posonlyargs: arg list; + args: arg list; + vararg: arg option; + kwonlyargs: arg list; + kw_defaults: expr option list; + kwarg: arg option; + defaults: expr list; +} + +and arg = { + arg: string; + annotation: expr option; + type_comment: string option; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} + +and alias = { + name: string; + asname: string option; + lineno: int; + col_offset: int; + end_lineno: int option; + end_col_offset: int option; +} +[@@deriving show] + +type arguments_args = + | Expr_list of expr list + | Arg_list of arg list +[@@deriving show] + +type arguments_kwarg = + | Identifier_opt of string option + | Arg_opt of arg option +[@@deriving show] + +type arguments_vararg = + | Identifier_opt of string option + | Arg_opt of arg option +[@@deriving show] + +type excepthandler_excepthandler_name = + | Identifier_opt of string option + | Expr_opt of expr option +[@@deriving show] + +type expr_bytes_s = + | String of string + | Bytes of string +[@@deriving show] + +type expr_subscript_slice = + | Slice of slice + | Expr of expr +[@@deriving show] + +type expr_yieldfrom_value = + | Expr_opt of expr option + | Expr of expr +[@@deriving show] + +type keyword_arg = + | Identifier_opt of string option + | Identifier of string +[@@deriving show] + +type stmt_importfrom_module = + | Identifier_opt of string option + | Identifier of string +[@@deriving show] diff --git a/source/errpy/ast.rs b/source/errpy/ast.rs new file mode 100644 index 00000000000..af73105f663 --- /dev/null +++ b/source/errpy/ast.rs @@ -0,0 +1,642 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#![allow(dead_code)] + +use ocamlrep::FromOcamlRep; +use ocamlrep::ToOcamlRep; +use serde::Deserialize; +use serde::Serialize; + +#[derive(ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +pub struct RecoverableErrorWithLocation { + pub error: String, + pub lineno: usize, + pub col_offset: usize, + pub end_lineno: usize, + pub end_col_offset: usize, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum Num { + Int(isize), + Float(f64), + Complex(f64), + /// pyast uses Py.Object.t for Big_int, but this is presumably not what we + /// want (if it's an opaque wrapper for a CPython object). Just have the + /// source text representing the integer digits for now instead. + #[rust_to_ocaml(name = "Big_int")] + BigInt(String), +} + +#[rust_to_ocaml(attr = "deriving show")] +pub type Object_ = Num; + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ConstantDesc { + Ellipsis, + Bool(bool), + Num(Num), + Str(String), + ByteStr(String), +} + +#[rust_to_ocaml(attr = "deriving show")] +pub type Constant = Option; + +#[rust_to_ocaml(attr = "deriving show")] +pub type Singleton = Option; + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[repr(C)] +pub struct Withitem { + pub context_expr: Expr, + pub optional_vars: Option, +} + +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(u8)] +pub enum Unaryop { + Invert, + Not, + UAdd, + USub, +} + +#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum TypeIgnore { + TypeIgnore { lineno: isize, tag: String }, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Stmt { + pub desc: StmtDesc, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum StmtDesc { + FunctionDef { + name: String, + args: Arguments, + body: Vec, + decorator_list: Vec, + type_params: Vec, + returns: Option, + type_comment: Option, + }, + AsyncFunctionDef { + name: String, + args: Arguments, + body: Vec, + decorator_list: Vec, + type_params: Vec, + returns: Option, + type_comment: Option, + }, + ClassDef { + name: String, + bases: Vec, + keywords: Vec, + body: Vec, + decorator_list: Vec, + type_params: Vec, + }, + Return(Option), + Delete(Vec), + Assign { + targets: Vec, + value: Expr, + type_comment: Option, + }, + AugAssign { + target: Expr, + op: Operator, + value: Expr, + }, + AnnAssign { + target: Expr, + annotation: Expr, + value: Option, + simple: isize, + }, + For { + target: Expr, + iter: Expr, + body: Vec, + orelse: Vec, + type_comment: Option, + }, + AsyncFor { + target: Expr, + iter: Expr, + body: Vec, + orelse: Vec, + type_comment: Option, + }, + While { + test: Expr, + body: Vec, + orelse: Vec, + }, + If { + test: Expr, + body: Vec, + orelse: Vec, + }, + With { + items: Vec, + body: Vec, + type_comment: Option, + }, + AsyncWith { + items: Vec, + body: Vec, + type_comment: Option, + }, + Match { + subject: Expr, + cases: Vec, + }, + Raise { + exc: Option, + cause: Option, + }, + Try { + body: Vec, + handlers: Vec, + orelse: Vec, + finalbody: Vec, + }, + Assert { + test: Expr, + msg: Option, + }, + Import(Vec), + ImportFrom { + module__: Option, + names: Vec, + level: Option, + }, + Global(Vec), + Nonlocal(Vec), + Expr(Expr), + Pass, + Break, + Continue, +} + +#[rust_to_ocaml(and)] +pub type Slice = Expr; + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Pattern { + pub desc: Box, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: isize, + pub end_col_offset: isize, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum PatternDesc { + MatchValue(Expr), + MatchSingleton(Constant), + MatchSequence(Vec), + MatchMapping { + keys: Vec, + patterns: Vec, + rest: Option, + }, + MatchClass { + cls: Expr, + patterns: Vec, + kwd_attrs: Vec, + kwd_patterns: Vec, + }, + MatchStar(Option), + MatchAs { + pattern: Option, + name: Option, + }, + MatchOr(Vec), +} + +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(u8)] +pub enum Operator { + Add, + Sub, + Mult, + MatMult, + Div, + Mod, + Pow, + LShift, + RShift, + BitOr, + BitXor, + BitAnd, + FloorDiv, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum Mod_ { + Module { + body: Vec, + type_ignores: Vec, + }, + Interactive(Vec), + Expression(Expr), + FunctionType { + argtypes: Vec, + returns: Expr, + }, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct MatchCase { + pub pattern: Pattern, + pub guard: Option, + pub body: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Keyword { + pub arg: Option, + pub value: Expr, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(u8)] +pub enum ExprContext { + Load, + Store, + Del, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Expr { + pub desc: Box, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum ExprDesc { + BoolOp { + op: Boolop, + values: Vec, + }, + NamedExpr { + target: Expr, + value: Expr, + }, + BinOp { + left: Expr, + op: Operator, + right: Expr, + }, + UnaryOp { + op: Unaryop, + operand: Expr, + }, + Lambda { + args: Arguments, + body: Expr, + }, + IfExp { + test: Expr, + body: Expr, + orelse: Expr, + }, + Dict { + // keys is of Optional Expr type because dictionary splats `{**arg1} are + // represented by a value and a corresponding None key + // normally of course we expect a non None key and value pair e.g. + // for `{'a': 12}` + keys: Vec>, + values: Vec, + }, + Set(Vec), + ListComp { + elt: Expr, + generators: Vec, + }, + SetComp { + elt: Expr, + generators: Vec, + }, + DictComp { + key: Expr, + value: Expr, + generators: Vec, + }, + GeneratorExp { + elt: Expr, + generators: Vec, + }, + Await(Expr), + Yield(Option), + YieldFrom(Expr), + Compare { + left: Expr, + ops: Vec, + comparators: Vec, + }, + Call { + func: Expr, + args: Vec, + keywords: Vec, + }, + FormattedValue { + value: Expr, + conversion: Option, + format_spec: Option, + }, + JoinedStr(Vec), + Constant { + value: Constant, + kind: Option, + }, + Attribute { + value: Expr, + attr: String, + ctx: ExprContext, + }, + Subscript { + value: Expr, + slice: Expr, + ctx: ExprContext, + }, + Starred { + value: Expr, + ctx: ExprContext, + }, + Name { + id: String, + ctx: ExprContext, + }, + List { + elts: Vec, + ctx: ExprContext, + }, + Tuple { + elts: Vec, + ctx: ExprContext, + }, + Slice { + lower: Option, + upper: Option, + step: Option, + }, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Excepthandler { + pub desc: ExcepthandlerDesc, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C, u8)] +pub enum ExcepthandlerDesc { + ExceptHandler { + type__: Option, + name: Option, + body: Vec, + }, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Comprehension { + pub target: Expr, + pub iter: Expr, + pub ifs: Vec, + pub is_async: bool, +} + +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(u8)] +pub enum Cmpop { + Eq, + NotEq, + Lt, + LtE, + Gt, + GtE, + Is, + IsNot, + In, + NotIn, +} + +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(u8)] +pub enum Boolop { + And, + Or, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Arguments { + pub posonlyargs: Vec, + pub args: Vec, + pub vararg: Option, + pub kwonlyargs: Vec, + pub kw_defaults: Vec>, + pub kwarg: Option, + pub defaults: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and)] +#[repr(C)] +pub struct Arg { + pub arg: String, + pub annotation: Option, + pub type_comment: Option, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(and, attr = "deriving show")] +#[repr(C)] +pub struct Alias { + pub name: String, + pub asname: Option, + pub lineno: isize, + pub col_offset: isize, + pub end_lineno: Option, + pub end_col_offset: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ArgumentsArgs { + #[rust_to_ocaml(name = "Expr_list")] + ExprList(Vec), + #[rust_to_ocaml(name = "Arg_list")] + ArgList(Vec), +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ArgumentsKwarg { + #[rust_to_ocaml(name = "Identifier_opt")] + IdentifierOpt(Option), + #[rust_to_ocaml(name = "Arg_opt")] + ArgOpt(Option), +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ArgumentsVararg { + #[rust_to_ocaml(name = "Identifier_opt")] + IdentifierOpt(Option), + #[rust_to_ocaml(name = "Arg_opt")] + ArgOpt(Option), +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ExcepthandlerExcepthandlerName { + #[rust_to_ocaml(name = "Identifier_opt")] + IdentifierOpt(Option), + #[rust_to_ocaml(name = "Expr_opt")] + ExprOpt(Option), +} + +#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ExprBytesS { + String(String), + Bytes(String), +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ExprSubscriptSlice { + Slice(Slice), + Expr(Expr), +} + +#[derive(Clone, Debug, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum ExprYieldfromValue { + #[rust_to_ocaml(name = "Expr_opt")] + ExprOpt(Option), + Expr(Expr), +} + +#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum KeywordArg { + #[rust_to_ocaml(name = "Identifier_opt")] + IdentifierOpt(Option), + Identifier(String), +} + +#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize, ToOcamlRep, FromOcamlRep)] +#[rust_to_ocaml(attr = "deriving show")] +#[repr(C, u8)] +pub enum StmtImportfromModule { + #[rust_to_ocaml(name = "Identifier_opt")] + IdentifierOpt(Option), + Identifier(String), +} diff --git a/source/errpy/benchmark/benchmark_errpy.py b/source/errpy/benchmark/benchmark_errpy.py new file mode 100644 index 00000000000..10a564008ef --- /dev/null +++ b/source/errpy/benchmark/benchmark_errpy.py @@ -0,0 +1,103 @@ +#!/usr/bin/env fbpython +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import ast +import time + +from tools.pyre.source.errpy import ffi_python + +RESOURCES_DIR = "errpy/benchmark/benchmark_resources/" +NANO_TO_MS = 1e-6 + + +class BenchmarkRunner: + """For each benchmark return the time in nanoseconds to invoke the parser + on 'iterations' number of times with 'warm_up_cycles' iterations as + warm ups. Note that for ERRPY 'warm_up_cycles' is less relevant as + its not JIT compiled (but then CPython isnt currently either)""" + + def __init__( + self, source: str, warm_up_cycles: int = 1000, iterations: int = 100000 + ) -> None: + self.source = source + self.warm_up_cycles = warm_up_cycles + self.iterations = iterations + + def run_cpython(self) -> int: + source = self.source + for _ in range(self.warm_up_cycles): + ast.parse(source) + + iters = range(self.iterations) + # WARNING: be careful about code put between tick and toc as this can + # affect the benchmarking + tick = time.time_ns() + for _ in iters: + ast.parse(source) + toc = time.time_ns() + return toc - tick + + def run_errpy(self) -> int: + source = self.source + for _ in range(self.warm_up_cycles): + ffi_python.py_parse_module(source) + + iters = range(self.iterations) + # WARNING: be careful about code put between tick and toc as this can + # affect the benchmarking + tick = time.time_ns() + for _ in iters: + ffi_python.py_parse_module(source) + toc = time.time_ns() + return toc - tick + + +def main() -> int: + """DOC_STRING""" + source_filename = RESOURCES_DIR + "simple.pytest" + + with open(source_filename) as fobj: + source = fobj.read() + + runner = BenchmarkRunner(source) + ns_cpython = runner.run_cpython() + ns_errpy = runner.run_errpy() + + warm_up = runner.warm_up_cycles + iterations = runner.iterations + + print( + "Cpython vs Errpy benchmark complete! ({} warm ups, {} iterations each)".format( + warm_up, iterations + ) + ) + print( + "============================================================================\n" + ) + print( + "CPython: {} ns || {:.2f} ms per run of sample input".format( + ns_cpython, ns_cpython / iterations * NANO_TO_MS + ) + ) + print( + "Errpy: {} ns || {:.2f} ms per run of sample input\n".format( + ns_errpy, ns_errpy / iterations * NANO_TO_MS + ) + ) + if ns_errpy > ns_cpython: + pct = (ns_errpy - ns_cpython) / ns_cpython * 100.0 + print("Errpy is slower than CPython by: {:.2f} % \n".format(pct)) + else: + pct = (ns_cpython - ns_errpy) / ns_errpy * 100.0 + print("CPython is slower than Errpy by: {:.2f} % \n".format(pct)) + + return 0 + + +if __name__ == "__main__": + main() diff --git a/source/errpy/benchmark/benchmark_resources/simple.pytest b/source/errpy/benchmark/benchmark_resources/simple.pytest new file mode 100644 index 00000000000..726b4e8435b --- /dev/null +++ b/source/errpy/benchmark/benchmark_resources/simple.pytest @@ -0,0 +1,34 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# a simple program using a subset of python grammar, functions, expressions and some control flow + +def fib(a: int) -> int: + # just does some nonsense assignment + tmp = a, a + ba, bb = tmp + inset = a in {0,1} + if a <= 2 or a ==1: + return 1 + elif inset: + return 1 + else: + return fib(a-1) + fib(a-2) + +def somethingelse(): + pass + +def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + +if __name__ == "__main__": + main() diff --git a/source/errpy/constants.rs b/source/errpy/constants.rs new file mode 100644 index 00000000000..ff88ca53d33 --- /dev/null +++ b/source/errpy/constants.rs @@ -0,0 +1,534 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +use phf::phf_map; + +pub static SPECIAL_CHARS: [char; 13] = [ + 'a', 'b', 'f', 'n', 'r', 't', 'u', 'v', 'x', 'N', 'U', '\'', '\"', +]; + +pub static HEXA_CONVERSION: phf::Map = phf_map! { + 'a' => "x07", + 'b' => "x08", + 'f' => "x0c", + 'v' => "x0b" +}; + +// String representation of an octal number as int => Target character or hexa representation +// The key 1 corresponds to the octal string "1", "01" and "001" +pub static OCTAL_MAP: phf::Map = phf_map! { + 0_u16 => "\\x00", + 1_u16 => "\\x01", + 2_u16 => "\\x02", + 3_u16 => "\\x03", + 4_u16 => "\\x04", + 5_u16 => "\\x05", + 6_u16 => "\\x06", + 7_u16 => "\\x07", + 10_u16 => "\\x08", + 11_u16 => "\\t", + 12_u16 => "\\n", + 13_u16 => "\\x0b", + 14_u16 => "\\x0c", + 15_u16 => "\\r", + 16_u16 => "\\x0e", + 17_u16 => "\\x0f", + 20_u16 => "\\x10", + 21_u16 => "\\x11", + 22_u16 => "\\x12", + 23_u16 => "\\x13", + 24_u16 => "\\x14", + 25_u16 => "\\x15", + 26_u16 => "\\x16", + 27_u16 => "\\x17", + 30_u16 => "\\x18", + 31_u16 => "\\x19", + 32_u16 => "\\x1a", + 33_u16 => "\\x1b", + 34_u16 => "\\x1c", + 35_u16 => "\\x1d", + 36_u16 => "\\x1e", + 37_u16 => "\\x1f", + 40_u16 => " ", + 41_u16 => "!", + 42_u16 => "\"", + 43_u16 => "#", + 44_u16 => "$", + 45_u16 => "%", + 46_u16 => "&", + 47_u16 => "'", + 50_u16 => "(", + 51_u16 => ")", + 52_u16 => "*", + 53_u16 => "+", + 54_u16 => ",", + 55_u16 => "-", + 56_u16 => ".", + 57_u16 => "/", + 60_u16 => "0", + 61_u16 => "1", + 62_u16 => "2", + 63_u16 => "3", + 64_u16 => "4", + 65_u16 => "5", + 66_u16 => "6", + 67_u16 => "7", + 70_u16 => "8", + 71_u16 => "9", + 72_u16 => ":", + 73_u16 => ";", + 74_u16 => "<", + 75_u16 => "=", + 76_u16 => ">", + 77_u16 => "?", + 100_u16 => "@", + 101_u16 => "A", + 102_u16 => "B", + 103_u16 => "C", + 104_u16 => "D", + 105_u16 => "E", + 106_u16 => "F", + 107_u16 => "G", + 110_u16 => "H", + 111_u16 => "I", + 112_u16 => "J", + 113_u16 => "K", + 114_u16 => "L", + 115_u16 => "M", + 116_u16 => "N", + 117_u16 => "O", + 120_u16 => "P", + 121_u16 => "Q", + 122_u16 => "R", + 123_u16 => "S", + 124_u16 => "T", + 125_u16 => "U", + 126_u16 => "V", + 127_u16 => "W", + 130_u16 => "X", + 131_u16 => "Y", + 132_u16 => "Z", + 133_u16 => "[", + 134_u16 => "\\\\", + 135_u16 => "]", + 136_u16 => "^", + 137_u16 => "_", + 140_u16 => "`", + 141_u16 => "a", + 142_u16 => "b", + 143_u16 => "c", + 144_u16 => "d", + 145_u16 => "e", + 146_u16 => "f", + 147_u16 => "g", + 150_u16 => "h", + 151_u16 => "i", + 152_u16 => "j", + 153_u16 => "k", + 154_u16 => "l", + 155_u16 => "m", + 156_u16 => "n", + 157_u16 => "o", + 160_u16 => "p", + 161_u16 => "q", + 162_u16 => "r", + 163_u16 => "s", + 164_u16 => "t", + 165_u16 => "u", + 166_u16 => "v", + 167_u16 => "w", + 170_u16 => "x", + 171_u16 => "y", + 172_u16 => "z", + 173_u16 => "{", + 174_u16 => "|", + 175_u16 => "}", + 176_u16 => "~", + 177_u16 => "\\x7f", + 200_u16 => "\\x80", + 201_u16 => "\\x81", + 202_u16 => "\\x82", + 203_u16 => "\\x83", + 204_u16 => "\\x84", + 205_u16 => "\\x85", + 206_u16 => "\\x86", + 207_u16 => "\\x87", + 210_u16 => "\\x88", + 211_u16 => "\\x89", + 212_u16 => "\\x8a", + 213_u16 => "\\x8b", + 214_u16 => "\\x8c", + 215_u16 => "\\x8d", + 216_u16 => "\\x8e", + 217_u16 => "\\x8f", + 220_u16 => "\\x90", + 221_u16 => "\\x91", + 222_u16 => "\\x92", + 223_u16 => "\\x93", + 224_u16 => "\\x94", + 225_u16 => "\\x95", + 226_u16 => "\\x96", + 227_u16 => "\\x97", + 230_u16 => "\\x98", + 231_u16 => "\\x99", + 232_u16 => "\\x9a", + 233_u16 => "\\x9b", + 234_u16 => "\\x9c", + 235_u16 => "\\x9d", + 236_u16 => "\\x9e", + 237_u16 => "\\x9f", + 240_u16 => "\\xa0", + 241_u16 => "¡", + 242_u16 => "¢", + 243_u16 => "£", + 244_u16 => "¤", + 245_u16 => "¥", + 246_u16 => "¦", + 247_u16 => "§", + 250_u16 => "¨", + 251_u16 => "©", + 252_u16 => "ª", + 253_u16 => "«", + 254_u16 => "¬", + 255_u16 => "\\xad", + 256_u16 => "®", + 257_u16 => "¯", + 260_u16 => "°", + 261_u16 => "±", + 262_u16 => "²", + 263_u16 => "³", + 264_u16 => "´", + 265_u16 => "µ", + 266_u16 => "¶", + 267_u16 => "·", + 270_u16 => "¸", + 271_u16 => "¹", + 272_u16 => "º", + 273_u16 => "»", + 274_u16 => "¼", + 275_u16 => "½", + 276_u16 => "¾", + 277_u16 => "¿", + 300_u16 => "À", + 301_u16 => "Á", + 302_u16 => "Â", + 303_u16 => "Ã", + 304_u16 => "Ä", + 305_u16 => "Å", + 306_u16 => "Æ", + 307_u16 => "Ç", + 310_u16 => "È", + 311_u16 => "É", + 312_u16 => "Ê", + 313_u16 => "Ë", + 314_u16 => "Ì", + 315_u16 => "Í", + 316_u16 => "Î", + 317_u16 => "Ï", + 320_u16 => "Ð", + 321_u16 => "Ñ", + 322_u16 => "Ò", + 323_u16 => "Ó", + 324_u16 => "Ô", + 325_u16 => "Õ", + 326_u16 => "Ö", + 327_u16 => "×", + 330_u16 => "Ø", + 331_u16 => "Ù", + 332_u16 => "Ú", + 333_u16 => "Û", + 334_u16 => "Ü", + 335_u16 => "Ý", + 336_u16 => "Þ", + 337_u16 => "ß", + 340_u16 => "à", + 341_u16 => "á", + 342_u16 => "â", + 343_u16 => "ã", + 344_u16 => "ä", + 345_u16 => "å", + 346_u16 => "æ", + 347_u16 => "ç", + 350_u16 => "è", + 351_u16 => "é", + 352_u16 => "ê", + 353_u16 => "ë", + 354_u16 => "ì", + 355_u16 => "í", + 356_u16 => "î", + 357_u16 => "ï", + 360_u16 => "ð", + 361_u16 => "ñ", + 362_u16 => "ò", + 363_u16 => "ó", + 364_u16 => "ô", + 365_u16 => "õ", + 366_u16 => "ö", + 367_u16 => "÷", + 370_u16 => "ø", + 371_u16 => "ù", + 372_u16 => "ú", + 373_u16 => "û", + 374_u16 => "ü", + 375_u16 => "ý", + 376_u16 => "þ", + 377_u16 => "ÿ", + 400_u16 => "Ā", + 401_u16 => "ā", + 402_u16 => "Ă", + 403_u16 => "ă", + 404_u16 => "Ą", + 405_u16 => "ą", + 406_u16 => "Ć", + 407_u16 => "ć", + 410_u16 => "Ĉ", + 411_u16 => "ĉ", + 412_u16 => "Ċ", + 413_u16 => "ċ", + 414_u16 => "Č", + 415_u16 => "č", + 416_u16 => "Ď", + 417_u16 => "ď", + 420_u16 => "Đ", + 421_u16 => "đ", + 422_u16 => "Ē", + 423_u16 => "ē", + 424_u16 => "Ĕ", + 425_u16 => "ĕ", + 426_u16 => "Ė", + 427_u16 => "ė", + 430_u16 => "Ę", + 431_u16 => "ę", + 432_u16 => "Ě", + 433_u16 => "ě", + 434_u16 => "Ĝ", + 435_u16 => "ĝ", + 436_u16 => "Ğ", + 437_u16 => "ğ", + 440_u16 => "Ġ", + 441_u16 => "ġ", + 442_u16 => "Ģ", + 443_u16 => "ģ", + 444_u16 => "Ĥ", + 445_u16 => "ĥ", + 446_u16 => "Ħ", + 447_u16 => "ħ", + 450_u16 => "Ĩ", + 451_u16 => "ĩ", + 452_u16 => "Ī", + 453_u16 => "ī", + 454_u16 => "Ĭ", + 455_u16 => "ĭ", + 456_u16 => "Į", + 457_u16 => "į", + 460_u16 => "İ", + 461_u16 => "ı", + 462_u16 => "IJ", + 463_u16 => "ij", + 464_u16 => "Ĵ", + 465_u16 => "ĵ", + 466_u16 => "Ķ", + 467_u16 => "ķ", + 470_u16 => "ĸ", + 471_u16 => "Ĺ", + 472_u16 => "ĺ", + 473_u16 => "Ļ", + 474_u16 => "ļ", + 475_u16 => "Ľ", + 476_u16 => "ľ", + 477_u16 => "Ŀ", + 500_u16 => "ŀ", + 501_u16 => "Ł", + 502_u16 => "ł", + 503_u16 => "Ń", + 504_u16 => "ń", + 505_u16 => "Ņ", + 506_u16 => "ņ", + 507_u16 => "Ň", + 510_u16 => "ň", + 511_u16 => "ʼn", + 512_u16 => "Ŋ", + 513_u16 => "ŋ", + 514_u16 => "Ō", + 515_u16 => "ō", + 516_u16 => "Ŏ", + 517_u16 => "ŏ", + 520_u16 => "Ő", + 521_u16 => "ő", + 522_u16 => "Œ", + 523_u16 => "œ", + 524_u16 => "Ŕ", + 525_u16 => "ŕ", + 526_u16 => "Ŗ", + 527_u16 => "ŗ", + 530_u16 => "Ř", + 531_u16 => "ř", + 532_u16 => "Ś", + 533_u16 => "ś", + 534_u16 => "Ŝ", + 535_u16 => "ŝ", + 536_u16 => "Ş", + 537_u16 => "ş", + 540_u16 => "Š", + 541_u16 => "š", + 542_u16 => "Ţ", + 543_u16 => "ţ", + 544_u16 => "Ť", + 545_u16 => "ť", + 546_u16 => "Ŧ", + 547_u16 => "ŧ", + 550_u16 => "Ũ", + 551_u16 => "ũ", + 552_u16 => "Ū", + 553_u16 => "ū", + 554_u16 => "Ŭ", + 555_u16 => "ŭ", + 556_u16 => "Ů", + 557_u16 => "ů", + 560_u16 => "Ű", + 561_u16 => "ű", + 562_u16 => "Ų", + 563_u16 => "ų", + 564_u16 => "Ŵ", + 565_u16 => "ŵ", + 566_u16 => "Ŷ", + 567_u16 => "ŷ", + 570_u16 => "Ÿ", + 571_u16 => "Ź", + 572_u16 => "ź", + 573_u16 => "Ż", + 574_u16 => "ż", + 575_u16 => "Ž", + 576_u16 => "ž", + 577_u16 => "ſ", + 600_u16 => "ƀ", + 601_u16 => "Ɓ", + 602_u16 => "Ƃ", + 603_u16 => "ƃ", + 604_u16 => "Ƅ", + 605_u16 => "ƅ", + 606_u16 => "Ɔ", + 607_u16 => "Ƈ", + 610_u16 => "ƈ", + 611_u16 => "Ɖ", + 612_u16 => "Ɗ", + 613_u16 => "Ƌ", + 614_u16 => "ƌ", + 615_u16 => "ƍ", + 616_u16 => "Ǝ", + 617_u16 => "Ə", + 620_u16 => "Ɛ", + 621_u16 => "Ƒ", + 622_u16 => "ƒ", + 623_u16 => "Ɠ", + 624_u16 => "Ɣ", + 625_u16 => "ƕ", + 626_u16 => "Ɩ", + 627_u16 => "Ɨ", + 630_u16 => "Ƙ", + 631_u16 => "ƙ", + 632_u16 => "ƚ", + 633_u16 => "ƛ", + 634_u16 => "Ɯ", + 635_u16 => "Ɲ", + 636_u16 => "ƞ", + 637_u16 => "Ɵ", + 640_u16 => "Ơ", + 641_u16 => "ơ", + 642_u16 => "Ƣ", + 643_u16 => "ƣ", + 644_u16 => "Ƥ", + 645_u16 => "ƥ", + 646_u16 => "Ʀ", + 647_u16 => "Ƨ", + 650_u16 => "ƨ", + 651_u16 => "Ʃ", + 652_u16 => "ƪ", + 653_u16 => "ƫ", + 654_u16 => "Ƭ", + 655_u16 => "ƭ", + 656_u16 => "Ʈ", + 657_u16 => "Ư", + 660_u16 => "ư", + 661_u16 => "Ʊ", + 662_u16 => "Ʋ", + 663_u16 => "Ƴ", + 664_u16 => "ƴ", + 665_u16 => "Ƶ", + 666_u16 => "ƶ", + 667_u16 => "Ʒ", + 670_u16 => "Ƹ", + 671_u16 => "ƹ", + 672_u16 => "ƺ", + 673_u16 => "ƻ", + 674_u16 => "Ƽ", + 675_u16 => "ƽ", + 676_u16 => "ƾ", + 677_u16 => "ƿ", + 700_u16 => "ǀ", + 701_u16 => "ǁ", + 702_u16 => "ǂ", + 703_u16 => "ǃ", + 704_u16 => "DŽ", + 705_u16 => "Dž", + 706_u16 => "dž", + 707_u16 => "LJ", + 710_u16 => "Lj", + 711_u16 => "lj", + 712_u16 => "NJ", + 713_u16 => "Nj", + 714_u16 => "nj", + 715_u16 => "Ǎ", + 716_u16 => "ǎ", + 717_u16 => "Ǐ", + 720_u16 => "ǐ", + 721_u16 => "Ǒ", + 722_u16 => "ǒ", + 723_u16 => "Ǔ", + 724_u16 => "ǔ", + 725_u16 => "Ǖ", + 726_u16 => "ǖ", + 727_u16 => "Ǘ", + 730_u16 => "ǘ", + 731_u16 => "Ǚ", + 732_u16 => "ǚ", + 733_u16 => "Ǜ", + 734_u16 => "ǜ", + 735_u16 => "ǝ", + 736_u16 => "Ǟ", + 737_u16 => "ǟ", + 740_u16 => "Ǡ", + 741_u16 => "ǡ", + 742_u16 => "Ǣ", + 743_u16 => "ǣ", + 744_u16 => "Ǥ", + 745_u16 => "ǥ", + 746_u16 => "Ǧ", + 747_u16 => "ǧ", + 750_u16 => "Ǩ", + 751_u16 => "ǩ", + 752_u16 => "Ǫ", + 753_u16 => "ǫ", + 754_u16 => "Ǭ", + 755_u16 => "ǭ", + 756_u16 => "Ǯ", + 757_u16 => "ǯ", + 760_u16 => "ǰ", + 761_u16 => "DZ", + 762_u16 => "Dz", + 763_u16 => "dz", + 764_u16 => "Ǵ", + 765_u16 => "ǵ", + 766_u16 => "Ƕ", + 767_u16 => "Ƿ", + 770_u16 => "Ǹ", + 771_u16 => "ǹ", + 772_u16 => "Ǻ", + 773_u16 => "ǻ", + 774_u16 => "Ǽ", + 775_u16 => "ǽ", + 776_u16 => "Ǿ", + 777_u16 => "ǿ" +}; diff --git a/source/errpy/cst_to_ast.rs b/source/errpy/cst_to_ast.rs new file mode 100644 index 00000000000..b3fb5ccb0fb --- /dev/null +++ b/source/errpy/cst_to_ast.rs @@ -0,0 +1,5520 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +// Mapping of grammar defined here (or variant thereof): +// https://github.com/tree-sitter/tree-sitter-python/blob/master/grammar.js + +use std::collections::HashMap; +use std::collections::HashSet; +use std::num::ParseIntError; + +use ast::Alias; +use ast::Arg; +use ast::Arguments; +use ast::Boolop; +use ast::Cmpop; +use ast::Comprehension; +use ast::ConstantDesc; +use ast::Excepthandler; +use ast::ExcepthandlerDesc; +use ast::Expr; +use ast::ExprContext; +use ast::ExprDesc; +use ast::Keyword as AstKeyword; +use ast::MatchCase; +use ast::Mod_; +use ast::Num; +use ast::Operator; +use ast::Pattern; +use ast::PatternDesc; +use ast::Stmt; +use ast::StmtDesc; +use ast::Unaryop; +use ast::Withitem; +use constants::HEXA_CONVERSION; +use constants::OCTAL_MAP; +use constants::SPECIAL_CHARS; +use errors::ParserError; +use errors::RecoverableError; +use itertools::join; +use node_wrapper::build_node_tree; +use node_wrapper::Node; +use parser_post_process::ParserPostprocessor; +use parser_post_process::AUTOCOMPLETE_TOKEN; +use sitter::get_node_type; +use sitter::AugAssignOperator; +use sitter::BinaryOperator; +use sitter::ComparisonOperator; +use sitter::Keyword; +use sitter::NodeType; +use sitter::Production; +use sitter::ProductionKind; +use string_helpers::categorize_string; +use string_helpers::string_prefix; +use string_helpers::StringCategory; +use tree_sitter::Node as TSNode; +use tree_sitter::Parser as SitterParser; + +use crate::ast; +use crate::constants; +use crate::errors; +use crate::node_wrapper; +use crate::node_wrapper::FilteredCST; +use crate::parser_post_process; +use crate::sitter; +use crate::string_helpers; + +type ErrorableResult = std::result::Result; + +#[derive(Debug)] +pub struct RecoverableErrorWithLocation { + pub parser_error: RecoverableError, + pub location: RecoverableErrorLocation, + pub stack: Vec, +} + +#[derive(Debug)] +pub struct RecoverableErrorLocation { + pub lineno: usize, + pub col_offset: usize, + pub end_lineno: usize, + pub end_col_offset: usize, +} + +/// +/// Parser is responsible for driving parsing of a python code String into an internal CST representation +/// before lowering to an AST. The AST is expected to match 1:1 with CPython. The AST is held within an +/// `ASTAndMetaData` instance (and potentitally additional metadata) +#[derive(Debug)] +pub struct Parser { + code: String, + pub ast_and_metadata: ASTAndMetaData, +} + +#[derive(Debug)] +pub struct FilteredCSTParser<'a> { + // `Filtered cst parser` is created after an initial phase of parsing in `Parser` + parser: &'a mut Parser, + filtered_cst: &'a FilteredCST<'a>, + // contingent on if we are on lhs or rhs of assignment or del expression + current_expr_ctx: Vec>, + integer_overflow_error: ParseIntError, + python_keywords: HashSet, +} + +/// +/// `ASTAndMetaData` presently just holds the lowered AST +#[derive(Debug)] +pub struct ASTAndMetaData { + // AST root for what was parsed correctly + pub ast: Option, + pub recoverable_errors: Vec, +} + +impl ASTAndMetaData { + fn new() -> Self { + ASTAndMetaData { + ast: None, + recoverable_errors: vec![], + } + } +} + +impl Stmt { + fn new(desc: StmtDesc, node_start: &Node, node_end: &Node) -> Stmt { + let start_position = node_start.start_position(); + // Comment node is not to be considered for the end_lineno and end_col_offset + let end_position = node_end.end_position(); + + Stmt { + desc, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } +} + +impl AstKeyword { + fn new(arg: Option, value: Expr, node: &Node) -> AstKeyword { + let start_position = node.start_position(); + let end_position = node.end_position(); + + AstKeyword { + arg, + value, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } +} + +impl Expr { + fn new( + desc: ExprDesc, + lineno: isize, + col_offset: isize, + end_lineno: isize, + end_col_offset: isize, + ) -> Expr { + Expr { + desc: Box::new(desc), + lineno, + col_offset, + end_lineno: Some(end_lineno), + end_col_offset: Some(end_col_offset), + } + } +} + +impl Alias { + fn new(name: String, asname: Option, node: &Node) -> Alias { + let start_position = node.start_position(); + let end_position = node.end_position(); + + Alias { + name, + asname, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } +} + +impl Excepthandler { + fn new(desc: ExcepthandlerDesc, node: &Node) -> Excepthandler { + let start_position = node.start_position(); + let end_position = node.end_position(); + + Excepthandler { + desc, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } +} + +impl Arg { + fn new_simple(arg: String, start_node: &Node, end_node: &Node) -> Arg { + let start_position = start_node.start_position(); + let end_position = end_node.end_position(); + + Arg { + arg, + annotation: None, + type_comment: None, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } + + fn new_with_type(arg: String, annotation: Expr, start_node: &Node, end_node: &Node) -> Arg { + let start_position = start_node.start_position(); + let end_position = end_node.end_position(); + + Arg { + arg, + annotation: Some(annotation), + type_comment: None, + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: Some(end_position.row as isize + 1), + end_col_offset: Some(end_position.column as isize), + } + } +} + +impl Parser { + pub fn new(code: String) -> Self { + Parser { + code, + ast_and_metadata: ASTAndMetaData::new(), + } + } + + pub fn get_ast_and_metadata(&self) -> &ASTAndMetaData { + &self.ast_and_metadata + } + + /// + /// Public entry point to parse code. + /// Code is defined at construction time (`new`) but it could also be passed + /// to this function. We could also pass a delta + pub fn parse(&mut self) -> Result<(), ParserError> { + let mut cst_to_ast = SitterParser::new(); + cst_to_ast.set_language(tree_sitter_python::language())?; + + // Source file to CST via Tree-sitter + let mut tree = match cst_to_ast.parse(&self.code, None) { + Some(t) => t, + None => return Err(ParserError::DidNotComplete), + }; + + // Error in first parse -> mutate source file and reparse + if tree.root_node().has_error() { + self.find_error_nodes(tree.root_node()); + let parser_post_processor = ParserPostprocessor::new(); + + // Collect lines that will be mutated + let mut err_lines: HashSet = HashSet::new(); + for err in &self.ast_and_metadata.recoverable_errors { + for line_no in err.location.lineno..=err.location.end_lineno { + err_lines.insert(line_no - 1); + } + } + + self.code = parser_post_processor.postprocess(&self.code, err_lines); + tree = match cst_to_ast.parse(&self.code, None) { + Some(t) => t, + None => return Err(ParserError::DidNotComplete), + }; + }; + + // Tree-sitter CST to FilteredCST (without ERROR or COMMENT nodes) + let filtered_cst = build_node_tree(tree.root_node()); + let mut filtered_cst_parser = FilteredCSTParser::new(self, &filtered_cst); + + // FilteredCST to AST + filtered_cst_parser.parse_module(filtered_cst.get_root()); + Ok(()) + } + + fn assemble_node_stack_tsnode(&mut self, node: &TSNode) -> Vec { + let mut result: Vec = Vec::new(); + let mut current: Option = Some(*node); + while let Some(n) = current { + result.push(format!("{:?}", n)); + current = n.parent(); + } + result + } + + /// + /// Mark all error nodes from the Tree-sitter CST as SyntaxErrors + fn find_error_nodes(&mut self, node: TSNode) { + if node.kind() == "ERROR" { + let parser_error = RecoverableError::SyntaxError("invalid syntax".to_string()); + + let start_position = node.start_position(); + let end_position = node.end_position(); + + let location = RecoverableErrorLocation { + lineno: start_position.row + 1, + col_offset: start_position.column + 1, + end_lineno: end_position.row + 1, + end_col_offset: end_position.column + 1, + }; + + let stack = self.assemble_node_stack_tsnode(&node); + + self.ast_and_metadata + .recoverable_errors + .push(RecoverableErrorWithLocation { + parser_error, + location, + stack, + }); + + // don't process child nodes of ERROR nodes - otherwise this can + // lead to a cascade of ERROR nodes being reported + return; + } + for child in node.children(&mut node.walk()) { + self.find_error_nodes(child); + } + } + + fn new_pattern(&mut self, pattern_desc: PatternDesc, node: &Node) -> Pattern { + let start_position = node.start_position(); + let end_position = node.end_position(); + + Pattern { + desc: Box::new(pattern_desc), + lineno: start_position.row as isize + 1, + col_offset: start_position.column as isize, + end_lineno: end_position.row as isize + 1, + end_col_offset: end_position.column as isize, + } + } + + fn new_expr(&mut self, desc: ExprDesc, node: &Node) -> Expr { + self.new_expr_with_start_end_node(desc, node, node) + } + + fn new_expr_with_start_end_node( + &mut self, + desc: ExprDesc, + start_node: &Node, + end_node: &Node, + ) -> Expr { + let start_position = start_node.start_position(); + let end_position = end_node.end_position(); + + Expr::new( + desc, + start_position.row as isize + 1, + start_position.column as isize, + end_position.row as isize + 1, + end_position.column as isize, + ) + } +} + +impl<'parser> FilteredCSTParser<'parser> { + pub fn new(parser: &'parser mut Parser, filtered_cst: &'parser FilteredCST) -> Self { + FilteredCSTParser { + parser, + filtered_cst, + current_expr_ctx: Vec::new(), + integer_overflow_error: "184467440737095516150".parse::().err().unwrap(), + // keywords obtained through running: buck2 run errpy/facebook/scripts:list_python_keywords -- errpy/facebook/scripts/peg_grammar_specs/3.10 + python_keywords: vec![ + "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", "with", "yield", + ] + .into_iter() + .map(String::from) + .collect(), + } + } + + fn assemble_node_stack(&mut self, node: &Node) -> Vec { + let mut result: Vec = Vec::new(); + let mut current: Option<&Node> = Some(node); + + while let Some(some_node) = current { + result.push(format!("{:?}", some_node)); + current = some_node.parent(self.filtered_cst); + } + result + } + + fn record_recoverable_error(&mut self, parser_error: RecoverableError, node: &Node) { + let start_position = node.start_position(); + let end_position = node.end_position(); + + let location = RecoverableErrorLocation { + lineno: start_position.row + 1, + col_offset: start_position.column + 1, + end_lineno: end_position.row + 1, + end_col_offset: end_position.column + 1, + }; + + let stack = self.assemble_node_stack(node); + + self.parser + .ast_and_metadata + .recoverable_errors + .push(RecoverableErrorWithLocation { + parser_error, + location, + stack, + }); + } + + // Process a module. + // module: $ => repeat($._statement), + pub fn parse_module(&mut self, root: &Node) { + // root must be a module + if root.kind() != "module" { + self.parser.ast_and_metadata.ast = Some(Mod_::Module { + body: vec![], + type_ignores: vec![], + }); + return; + } + let mut body = vec![]; + self.block(root, &mut body); + self.parser.ast_and_metadata.ast = Some(Mod_::Module { + body, + type_ignores: vec![], + }); + } + + // + // + // Functions that consumes the tree-sitter productions + // + // + + // Process a generic block updating `statements`. + // Generally sequences of `repeat($._statement)` + fn block(&mut self, block: &Node, statements: &mut Vec) { + for child in block.named_children(self.filtered_cst) { + let node_type = get_node_type(child); + match &node_type { + NodeType::Production(production) => match &production.production_kind { + ProductionKind::COMMENT => (), + _ => match self.statement(production) { + Ok(statement) => statements.push(statement), + // ok to skip statements which have errors within them + Err(_) => (), + }, + }, + _ => (), + } + } + } + + // Process a StmtDesc + // + // _statement: $ => choice( + // $._simple_statements, + // $._compound_statement + // ), + // _simple_statements: $ => seq( + // sep1($._simple_statement, SEMICOLON), + // optional(SEMICOLON), + // $._newline + // ), + // _simple_statement: $ => choice( + // $.future_import_statement, + // $.import_statement, + // $.import_from_statement, + // $.print_statement, + // $.assert_statement, + // $.expression_statement, // this recurses down + // $.return_statement, + // $.delete_statement, + // $.raise_statement, + // $.pass_statement, + // $.break_statement, + // $.continue_statement, + // $.global_statement, + // $.nonlocal_statement, + // $.exec_statement + // ), + // _compound_statement: $ => choice( + // $.if_statement, + // $.for_statement, + // $.while_statement, + // $.try_statement, + // $.with_statement, + // $.function_definition, + // $.class_definition, + // $.decorated_definition, + // $.match_statement, + // ), + fn statement(&mut self, rule: &Production) -> ErrorableResult { + use ProductionKind::*; + + match &rule.production_kind { + DECORATED_DEFINITION => self.decorated_definition(rule.node), + rest => { + let statement_desc = match rest { + // _simple_statement + FUTURE_IMPORT_STATEMENT => self.future_import_statement(rule.node)?, + IMPORT_STATEMENT => self.import_statement(rule.node)?, + IMPORT_FROM_STATEMENT => self.import_from_statement(rule.node)?, + ASSERT_STATEMENT => self.assert_statement(rule.node)?, + EXPRESSION_STATEMENT => self.expression_statement(rule.node)?, + RETURN_STATEMENT => self.return_statement(rule.node)?, + DELETE_STATEMENT => self.delete_statement(rule.node)?, + RAISE_STATEMENT => self.raise_statement(rule.node)?, + PASS_STATEMENT => StmtDesc::Pass, + BREAK_STATEMENT => StmtDesc::Break, + CONTINUE_STATEMENT => StmtDesc::Continue, + GLOBAL_STATEMENT => self.global_statement(rule.node)?, + NONLOCAL_STATEMENT => self.nonlocal_statement(rule.node)?, + // EXEC_STATEMENT, // legacy, not sure if we will do these two... + // PRINT_STATEMENT, // legacy, not sure if we will do these two... + // _compound_statement + IF_STATEMENT => self.if_statement(rule.node)?, + FOR_STATEMENT => self.for_statement(rule.node)?, + WHILE_STATEMENT => self.while_statement(rule.node)?, + TRY_STATEMENT => self.try_statement(rule.node)?, + WITH_STATEMENT => self.with_statement(rule.node)?, + FUNCTION_DEFINITION => self.function_definition(rule.node, vec![])?, + CLASS_DEFINITION => self.class_definition(rule.node, vec![])?, + MATCH_STATEMENT => self.match_statement(rule.node)?, + // , + + // uncomment above when writing the production and delete from here + // the order above is that in the tree sitter grammar so easier to + // check for now + PRINT_STATEMENT | EXEC_STATEMENT => { + return Err(self.record_recoverable_error( + RecoverableError::UnimplementedStatement(format!("{:?}", rule.node)), + rule.node, + )); + } + _ => panic!("unexpected statement node: {:?}", rule.node), + }; + + Ok(Stmt::new(statement_desc, rule.node, rule.node)) + } + } + } + + // match_statement: $ => seq( + // 'match', + // commaSep1(field('subject', $.expression)), + // optional(','), + // ':', + // repeat(field('alternative', $.case_clause))), + // ), + fn match_statement<'a>(&mut self, match_node: &'a Node<'a>) -> ErrorableResult { + let mut cases: Vec = vec![]; + + for case_clause_node in match_node.children_by_field_name(self.filtered_cst, "alternative") + { + let case_clause = self.case_clause(case_clause_node); + + match case_clause { + Ok(case_clause) => cases.push(case_clause), + _ => (), // Error will already have been flagged so there isn't + // anything special to do here besides ignoring the + // case_clause + } + } + + let subject_node = match_node + .child_by_field_name(self.filtered_cst, "subject") + .expect("subject node"); + let subject = self.expression(subject_node)?; + + Ok(StmtDesc::Match { subject, cases }) + } + + // case_clause: $ => seq( + // 'case', + // commaSep1( + // field( + // 'pattern', + // choice($.case_pattern, $.case_open_sequence_pattern), + // ) + // ), + // optional(','), + // optional(field('guard', $.if_clause)), + // ':', + // field('consequence', $._suite) + // ), + fn case_clause<'a>(&mut self, case_clause_node: &'a Node<'a>) -> ErrorableResult { + let pattern_node = case_clause_node + .child_by_field_name(self.filtered_cst, "pattern") + .expect("missing pattern"); + + let pattern = match pattern_node.kind() { + "case_pattern" => self.case_pattern(pattern_node)?, + _ => { + let pattern_desc = self.case_open_sequence_pattern(pattern_node)?; + self.parser.new_pattern(pattern_desc, pattern_node) + } + }; + + let guard = match &case_clause_node.child_by_field_name(self.filtered_cst, "guard") { + Some(guard) => Some(self.if_clause(guard)?), + None => None, + }; + + let body_node = case_clause_node + .child_by_field_name(self.filtered_cst, "consequence") + .expect("missing body"); + let mut body = vec![]; + self.block(body_node, &mut body); + + Ok(MatchCase { + pattern, + guard, + body, + }) + } + + fn case_pattern(&mut self, pattern_node: &Node) -> ErrorableResult { + let as_or_or_pattern_node = &pattern_node.child(self.filtered_cst, 0).expect("child"); + + match as_or_or_pattern_node.kind() { + "case_as_pattern" => { + let case_as_pattern = self.case_as_pattern(as_or_or_pattern_node)?; + Ok(self.parser.new_pattern(case_as_pattern, pattern_node)) + } + _ => self.case_or_pattern(as_or_or_pattern_node), + } + } + + fn case_as_pattern(&mut self, as_pattern_node: &Node) -> ErrorableResult { + let or_pattern_node = as_pattern_node + .child_by_field_name(self.filtered_cst, "or_pattern") + .expect("missing as pattern left hand side pattern"); + let pattern = Some(self.case_or_pattern(or_pattern_node)?); + + let name_node = as_pattern_node + .child_by_field_name(self.filtered_cst, "identifier") + .expect("missing as pattern identifier"); + let name = Some(self.get_valid_identifier(name_node)); + + Ok(PatternDesc::MatchAs { pattern, name }) + } + + // case_or_pattern: $ => seq( + // $.case_closed_pattern, repeat(seq('|', $.case_closed_pattern))), + fn case_or_pattern(&mut self, or_pattern_node: &Node) -> ErrorableResult { + let mut case_closed_pattern_nodes = vec![]; + for case_closed_pattern_node in or_pattern_node.named_children(self.filtered_cst) { + case_closed_pattern_nodes.push(case_closed_pattern_node); + } + + match case_closed_pattern_nodes.len() { + 1 => { + let case_closed_pattern_node = case_closed_pattern_nodes.pop().unwrap(); + self.case_closed_pattern(case_closed_pattern_node) + } + _ => { + let mut or_choices = vec![]; + + for case_closed_pattern_node in case_closed_pattern_nodes { + match self.case_closed_pattern(case_closed_pattern_node) { + Ok(case_closed_pattern) => { + or_choices.push(case_closed_pattern); + } + _ => (), + } + } + let match_or = PatternDesc::MatchOr(or_choices); + Ok(self.parser.new_pattern(match_or, or_pattern_node)) + } + } + } + + // case_closed_pattern: $ => choice( + // $.case_literal_pattern, + // $.dotted_name, + // $.case_wildcard_pattern, + // $.case_group_pattern, + // $.case_sequence_pattern, + // $.case_mapping_pattern, + // $.case_class_pattern, + // ), + fn case_closed_pattern<'a>( + &mut self, + case_closed_pattern_node: &'a Node<'a>, + ) -> ErrorableResult { + let one_child = &case_closed_pattern_node + .child(self.filtered_cst, 0) + .unwrap(); + + let node_kind = one_child.kind(); + + if node_kind == "case_group_pattern" { + self.case_group_pattern(one_child) + } else { + let pattern_desc = match node_kind { + "case_literal_pattern" => self.case_literal_pattern(one_child)?, + "case_wildcard_pattern" => PatternDesc::MatchAs { + pattern: None, + name: None, + }, + "dotted_name" => { + // One element is translated to a identifier wrapped into a MatchAs + // More than one is translated into Attribute access pattern wrapped in a MatchValue + let mut name_parts = vec![]; + for part in one_child.named_children(self.filtered_cst) { + name_parts.push(part); + } + + match name_parts.len() { + 1 => PatternDesc::MatchAs { + pattern: None, + name: Some(self.get_valid_identifier(name_parts.pop().unwrap())), + }, + _ => { + // multiple dot names: `a.b.c` treated as a MatchValue of Attribute accesses + let expr_desc = self + .wrap_dotted_name_into_attribute_access_for_case_patterns( + name_parts, one_child, + ); + + PatternDesc::MatchValue(self.parser.new_expr(expr_desc, one_child)) + } + } + } + "case_sequence_pattern" => self.case_sequence_pattern(one_child)?, + "case_mapping_pattern" => self.case_mapping_pattern(one_child)?, + "case_class_pattern" => self.case_class_pattern(one_child)?, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnimplementedStatement(format!( + "case_closed_pattern_node of kind: {}", + node_kind + )), + one_child, + )); + } + }; + + Ok(self + .parser + .new_pattern(pattern_desc, case_closed_pattern_node)) + } + } + + // case_literal_pattern: $ => choice( + // $.string, + // $.concatenated_string, + // $.case_literal_pattern_complex_number, + // $._integer_or_float, + // $.float, + // $.true, + // $.false, + // $.none + // ), + fn case_literal_pattern<'a>( + &mut self, + literal_pattern_node: &'a Node<'a>, + ) -> ErrorableResult { + // True, False, None are mapped to MatchSingleton, everything else to MatchValue + let child_node = &literal_pattern_node.child(self.filtered_cst, 0).unwrap(); + Ok(match child_node.kind() { + "case_literal_integer_or_float" => { + let case_literal_integer_or_float = + self.case_literal_integer_or_float(child_node)?; + PatternDesc::MatchValue(case_literal_integer_or_float.0) + } + "case_literal_pattern_complex_number" => { + PatternDesc::MatchValue(self.case_literal_pattern_complex_number(child_node)?) + } + "false" => PatternDesc::MatchSingleton(Some(ConstantDesc::Bool(false))), + "true" => PatternDesc::MatchSingleton(Some(ConstantDesc::Bool(true))), + "none" => PatternDesc::MatchSingleton(None), + _ => { + let value = self.expression(child_node)?; + PatternDesc::MatchValue(value) + } + }) + } + + // case_literal_integer_or_float : $ => seq( + // field('neg', optional('-')), + // choice($.integer, $.float)), + // ), + fn case_literal_integer_or_float<'a>( + &mut self, + case_literal_integer_or_float_node: &'a Node<'a>, + ) -> ErrorableResult<(Expr, bool, bool)> { + if case_literal_integer_or_float_node + .child_by_field_name(self.filtered_cst, "neg") + .is_some() + { + let child_node = &case_literal_integer_or_float_node + .child(self.filtered_cst, 1) + .unwrap(); + let operand = self.expression(child_node)?; + + let is_complex = match *operand.desc { + ExprDesc::Constant { + value: Some(ConstantDesc::Num(Num::Complex(_))), + kind: _, + } => true, + _ => false, + }; + + let expr_desc = ExprDesc::UnaryOp { + op: Unaryop::USub, + operand, + }; + Ok(( + self.parser + .new_expr(expr_desc, case_literal_integer_or_float_node), + is_complex, + true, + )) + } else { + let expression = self.expression( + case_literal_integer_or_float_node + .child(self.filtered_cst, 0) + .unwrap(), + )?; + + let is_complex = match *expression.desc { + ExprDesc::Constant { + value: Some(ConstantDesc::Num(Num::Complex(_))), + kind: _, + } => true, + _ => false, + }; + + Ok((expression, is_complex, false)) + } + } + + // case_literal_pattern_complex_number: $ => seq( + // field("real_component", $.case_literal_integer_or_float), + // field("sign", choice('+', '-')), + // field("imaginary_component", $.case_literal_integer_or_float), + // ), + fn case_literal_pattern_complex_number<'a>( + &mut self, + case_literal_pattern_complex_number_node: &'a Node<'a>, + ) -> ErrorableResult { + let real_component_node = case_literal_pattern_complex_number_node + .child_by_field_name(self.filtered_cst, "real_component") + .unwrap(); + let imaginary_component_node = case_literal_pattern_complex_number_node + .child_by_field_name(self.filtered_cst, "imaginary_component") + .unwrap(); + let sign_node = case_literal_pattern_complex_number_node + .child_by_field_name(self.filtered_cst, "sign") + .unwrap(); + + let (real_component, real_is_complex, _) = + self.case_literal_integer_or_float(real_component_node)?; + let (imaginary_component, imaginary_is_complex, imaginary_is_neg) = + self.case_literal_integer_or_float(imaginary_component_node)?; + + let op = if sign_node.kind() == "+" { + Operator::Add + } else { + // - + Operator::Sub + }; + + // we do some additional validation to ensure that the specified value is a valid complex number + // first part must be real, second must be complex (and positive) + + if real_is_complex { + self.record_recoverable_error( + RecoverableError::SyntaxError( + "first part of complex number must be real".to_string(), + ), + real_component_node, + ); + } + + if imaginary_is_complex { + if imaginary_is_neg { + self.record_recoverable_error( + RecoverableError::SyntaxError( + "second part of complex number must be a positive".to_string(), + ), + imaginary_component_node, + ); + } + } else { + self.record_recoverable_error( + RecoverableError::SyntaxError( + "second part of complex number must be a imaginary".to_string(), + ), + imaginary_component_node, + ); + } + + Ok(self.parser.new_expr( + ExprDesc::BinOp { + left: real_component, + op, + right: imaginary_component, + }, + case_literal_pattern_complex_number_node, + )) + } + + // case_class_pattern: $ => choice( + // seq($.dotted_name, '(', ')'), + // seq($.dotted_name, '(', $.case_positional_patterns, optional(','), ')'), + // seq($.dotted_name, '(', $.case_keyword_patterns, optional(','), ')'), + // seq($.dotted_name, '(', $.case_positional_patterns, ',', $.case_keyword_patterns, optional(','), ')'), + // ), + fn case_class_pattern(&mut self, class_pattern_node: &Node) -> ErrorableResult { + let dotted_name_node = class_pattern_node.child(self.filtered_cst, 0).unwrap(); + + let cls: Expr = self.handle_class_pattern_name(dotted_name_node); + let mut patterns: Vec = vec![]; + let mut kwd_attrs: Vec = vec![]; + let mut kwd_patterns: Vec = vec![]; + + let mut child_nodes = vec![]; + for child_node in class_pattern_node.named_children(self.filtered_cst) { + child_nodes.push(child_node); + } + + match child_nodes.len() { + 2 => { + let second_node = child_nodes.get(1).unwrap(); + match second_node.kind() { + "case_positional_patterns" => { + self.case_positional_patterns(second_node, &mut patterns) + } + "case_keyword_patterns" => { + self.case_keyword_patterns(second_node, &mut kwd_attrs, &mut kwd_patterns) + } + _ => (), + } + } + 3 => { + let case_positional_patterns_node = child_nodes.get(1).unwrap(); + let case_keyword_patterns_node = child_nodes.get(2).unwrap(); + + self.case_positional_patterns(case_positional_patterns_node, &mut patterns); + self.case_keyword_patterns( + case_keyword_patterns_node, + &mut kwd_attrs, + &mut kwd_patterns, + ) + } + _ => (), + } + + Ok(PatternDesc::MatchClass { + cls, + patterns, + kwd_attrs, + kwd_patterns, + }) + } + + fn wrap_dotted_name_into_attribute_access_for_case_patterns( + &mut self, + name_parts: Vec<&Node>, + node: &Node, + ) -> ExprDesc { + let mut head_expression: Option = None; + let mut prev_node: Option<&Node> = None; + for part_node in name_parts { + let part_as_string = self.get_valid_identifier(part_node); + let ctx = ExprContext::Load; + head_expression = Some(match head_expression { + None => ExprDesc::Name { + id: part_as_string, + ctx, + }, + Some(head_expression) => { + let head_as_expr = self.parser.new_expr_with_start_end_node( + head_expression, + node, + prev_node.unwrap(), + ); + + ExprDesc::Attribute { + value: head_as_expr, + attr: part_as_string, + ctx, + } + } + }); + prev_node = Some(part_node); + } + + head_expression.unwrap() + } + + fn handle_class_pattern_name(&mut self, dotted_name_node: &Node) -> Expr { + // One element is translated to a Name node + // More than one is translated into Attribute access pattern of Name nodes + let mut name_parts = vec![]; + for part in dotted_name_node.named_children(self.filtered_cst) { + name_parts.push(part); + } + + let ctx = ExprContext::Load; + + let expr_desc = match name_parts.len() { + 1 => { + let id = self.get_valid_identifier(name_parts.pop().unwrap()); + ExprDesc::Name { id, ctx } + } + _ => self.wrap_dotted_name_into_attribute_access_for_case_patterns( + name_parts, + dotted_name_node, + ), + }; + self.parser.new_expr(expr_desc, dotted_name_node) + } + + // case_positional_patterns: $ => prec.left(commaSep1($.case_pattern)), + fn case_positional_patterns( + &mut self, + positional_patterns_node: &Node, + patterns: &mut Vec, + ) { + for case_pattern_node in positional_patterns_node.named_children(self.filtered_cst) { + match self.case_pattern(case_pattern_node) { + Ok(pattern) => patterns.push(pattern), + _ => (), + } + } + } + + // case_keyword_patterns: $ => prec.left(commaSep1($.case_keyword_pattern)), + fn case_keyword_patterns( + &mut self, + keyword_patterns_node: &Node, + kwd_attrs: &mut Vec, + kwd_patterns: &mut Vec, + ) { + for keyword_pattern_node in keyword_patterns_node.named_children(self.filtered_cst) { + // we ignore the ErrorableResult here as it will have already been handled in `case_key_value_pattern` + // we cal .ok() and discard the result here to keep the clippy linter quiet + self.case_keyword_pattern(keyword_pattern_node, kwd_attrs, kwd_patterns) + .ok(); + } + } + + // case_keyword_pattern: $ => seq(field("name", $.identifier), "=", field("value", $.case_pattern)), + fn case_keyword_pattern( + &mut self, + keyword_patterns_node: &Node, + kwd_attrs: &mut Vec, + kwd_patterns: &mut Vec, + ) -> ErrorableResult<()> { + let key_node = &keyword_patterns_node + .child_by_field_name(self.filtered_cst, "name") + .expect("name node of keyword pattern"); + let value_node = &keyword_patterns_node + .child_by_field_name(self.filtered_cst, "value") + .expect("value node of keyword pattern"); + + kwd_attrs.push(self.get_valid_identifier(key_node)); + + kwd_patterns.push(self.case_pattern(value_node)?); + + Ok(()) + } + + // case_mapping_pattern: $ => choice( + // seq('{', '}'), + // seq('{', $.case_double_star_pattern, optional(','), '}'), + // seq('{', $.case_items_pattern, $.case_double_star_pattern, optional(','), '}'), + // seq('{', $.case_items_pattern, '}'), + // ), + fn case_mapping_pattern(&mut self, group_pattern_node: &Node) -> ErrorableResult { + let child_count = group_pattern_node.child_count(); + + let mut keys: Vec = vec![]; + let mut patterns: Vec = vec![]; + let mut rest: Option = None; + + if child_count != 2 { + let second_child = &group_pattern_node + .child(self.filtered_cst, 1) + .expect("first child of group mapping pattern node"); + let third_child = &group_pattern_node + .child(self.filtered_cst, 2) + .expect("second child of group mapping pattern node"); + + match (second_child.kind(), third_child.kind()) { + ("case_items_pattern", "case_double_star_pattern") => { + self.case_items_pattern(second_child, &mut keys, &mut patterns); + rest = Some(self.case_double_star_pattern(third_child)); + } + ("case_double_star_pattern", _) => { + rest = Some(self.case_double_star_pattern(second_child)); + } + ("case_items_pattern", _) => { + self.case_items_pattern(second_child, &mut keys, &mut patterns); + } + _ => (), + } + } + + Ok(PatternDesc::MatchMapping { + keys, + patterns, + rest, + }) + } + + // case_items_pattern: $ => seq(commaSep1($.case_key_value_pattern), optional(',')), + fn case_items_pattern( + &mut self, + case_items_pattern_node: &Node, + keys: &mut Vec, + patterns: &mut Vec, + ) { + for case_key_value_pattern_node in case_items_pattern_node.named_children(self.filtered_cst) + { + // we ignore the ErrorableResult here as it will have already been handled in `case_key_value_pattern` + // we cal .ok() and discard the result here to keep the clippy linter quiet + self.case_key_value_pattern(case_key_value_pattern_node, keys, patterns) + .ok(); + } + } + + // case_key_value_pattern: $ => seq( + // field("key", choice($.case_literal_pattern, $.dotted_name)), ':', field("value", $.case_pattern) + // ), + fn case_key_value_pattern<'a>( + &mut self, + case_items_pattern_node: &'a Node<'a>, + keys: &mut Vec, + patterns: &mut Vec, + ) -> ErrorableResult<()> { + let key_node = case_items_pattern_node + .child_by_field_name(self.filtered_cst, "key") + .expect("key node of key value pattern"); + let value_node = &case_items_pattern_node + .child_by_field_name(self.filtered_cst, "value") + .expect("value node of key value pattern"); + + let key_expr = match key_node.kind() { + "dotted_name" => { + let mut name_parts = vec![]; + for part in key_node.named_children(self.filtered_cst) { + name_parts.push(part); + } + + let expr_desc = self + .wrap_dotted_name_into_attribute_access_for_case_patterns(name_parts, key_node); + self.parser.new_expr(expr_desc, key_node) + } + _ => { + let key_node_child = &key_node.child(self.filtered_cst, 0).unwrap(); + + match key_node_child.kind() { + "case_literal_pattern_complex_number" => { + self.case_literal_pattern_complex_number(key_node_child)? + } + "case_literal_integer_or_float" => { + self.case_literal_integer_or_float(key_node_child)?.0 + } + _ => self.expression(key_node_child)?, + } + } + }; + keys.push(key_expr); + + patterns.push(self.case_pattern(value_node)?); + + Ok(()) + } + + fn case_double_star_pattern(&mut self, group_pattern_node: &Node) -> String { + let identifier = &group_pattern_node + .child(self.filtered_cst, 1) + .expect("identifier"); + self.get_valid_identifier(identifier) + } + + // case_group_pattern: $ => seq( '(', field("case_pattern", $.case_pattern), ')'), + fn case_group_pattern(&mut self, group_pattern_node: &Node) -> ErrorableResult { + let case_pattern_node = &group_pattern_node + .child_by_field_name(self.filtered_cst, "case_pattern") + .expect("case_pattern of case_group_pattern"); + self.case_pattern(case_pattern_node) + } + + // case_sequence_pattern: $ => choice( + // seq('[', optional($.case_maybe_sequence_pattern), ']'), + // seq('(', optional($.case_open_sequence_pattern), ')'), + // ), + fn case_sequence_pattern( + &mut self, + sequence_pattern_node: &Node, + ) -> ErrorableResult { + if sequence_pattern_node.child_count() == 3 { + let maybe_or_open_sequence_pattern_node = + &sequence_pattern_node.child(self.filtered_cst, 1).unwrap(); + match maybe_or_open_sequence_pattern_node.kind() { + "case_maybe_sequence_pattern" => { + let mut patterns = vec![]; + + self.case_maybe_sequence_pattern( + maybe_or_open_sequence_pattern_node, + &mut patterns, + ); + Ok(PatternDesc::MatchSequence(patterns)) + } + _ => { + // "case_open_sequence_pattern" + self.case_open_sequence_pattern(maybe_or_open_sequence_pattern_node) + } + } + } else { + Ok(PatternDesc::MatchSequence(vec![])) + } + } + + // case_open_sequence_pattern: $ => seq( + // field("maybe_star", $.case_maybe_star_pattern), ',', field("maybe_sequence", optional($.case_maybe_sequence_pattern)) + // ), + fn case_open_sequence_pattern( + &mut self, + open_sequence_pattern_node: &Node, + ) -> ErrorableResult { + let mut patterns = vec![]; + + let maybe_star_pattern_node = open_sequence_pattern_node + .child_by_field_name(self.filtered_cst, "maybe_star") + .unwrap(); + + let pattern = self.case_maybe_star_pattern(maybe_star_pattern_node); + if let Ok(pattern) = pattern { + // if not OK then this is fine as error already reported + patterns.push(pattern); + } + + if let Some(maybe_maybe_sequence_pattern_node) = + open_sequence_pattern_node.child_by_field_name(self.filtered_cst, "maybe_sequence") + { + self.case_maybe_sequence_pattern(maybe_maybe_sequence_pattern_node, &mut patterns) + } + + Ok(PatternDesc::MatchSequence(patterns)) + } + + // case_maybe_sequence_pattern: $ => prec.left(seq(commaSep1($.case_maybe_star_pattern), optional(','))), + fn case_maybe_sequence_pattern( + &mut self, + maybe_sequence_pattern_node: &Node, + patterns: &mut Vec, + ) { + for maybe_star_pattern_node in maybe_sequence_pattern_node.named_children(self.filtered_cst) + { + let pattern = self.case_maybe_star_pattern(maybe_star_pattern_node); + match pattern { + Ok(pattern) => { + patterns.push(pattern); + } + _ => (), // error already reported + } + } + } + + // case_maybe_star_pattern: $ => prec.left(choice( + // $.case_star_pattern, + // $.case_pattern + // )), + fn case_maybe_star_pattern( + &mut self, + maybe_sequence_pattern_node: &Node, + ) -> ErrorableResult { + let one_child = &maybe_sequence_pattern_node + .child(self.filtered_cst, 0) + .unwrap(); + match one_child.kind() { + "case_star_pattern" => Ok(self.case_star_pattern(one_child)), + _ => self.case_pattern(one_child), + } + } + + // case_star_pattern: $ => choice( + // seq('*', $.identifier), + // seq('*', $.case_wildcard_pattern) + // ), + fn case_star_pattern(&mut self, star_pattern_node: &Node) -> Pattern { + let one_child = &star_pattern_node + .child(self.filtered_cst, 1) + .expect("case_star_pattern child node"); + + let pattern_desc = match one_child.kind() { + "identifier" => { + let name = Some(self.get_valid_identifier(one_child)); + PatternDesc::MatchStar(name) + } + _ => PatternDesc::MatchStar(None), // case_wildcard_pattern + }; + self.parser.new_pattern(pattern_desc, star_pattern_node) + } + + // decorated_definition: $ => seq( + // repeat1($.decorator), + // field('definition', choice( + // $.class_definition, + // $.function_definition + // )) + // ), + fn decorated_definition<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + // resolves to a class definition or funcdef + let mut decorator_list: Vec = vec![]; + + for child in node.named_children(self.filtered_cst) { + let node_type = get_node_type(child); + match &node_type { + NodeType::Production(production) => match &production.production_kind { + FUNCTION_DEFINITION => { + let func_def = self.function_definition(child, decorator_list)?; + return Ok(Stmt::new(func_def, child, child)); + } + CLASS_DEFINITION => { + let class_def = self.class_definition(child, decorator_list)?; + return Ok(Stmt::new(class_def, child, child)); + } + DECORATOR => { + // decorator + let dec_expr_node = child + .child(self.filtered_cst, 1) + .expect("dectorator missing elaboration"); + let dec_expr = self.expression(dec_expr_node)?; + decorator_list.push(dec_expr); + } + _ => (), + }, + _ => (), + } + } + + Err(self.record_recoverable_error(RecoverableError::MissingChild, node)) + } + + // global_statement: $ => seq( + // 'global', + // commaSep1($.identifier) + // ), + fn global_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut identifiers = vec![]; + self.parse_identifiers(node, &mut identifiers)?; + Ok(StmtDesc::Global(identifiers)) + } + + // nonlocal_statement: $ => seq( + // 'nonlocal', + // commaSep1($.identifier) + // ), + fn nonlocal_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut identifiers = vec![]; + self.parse_identifiers(node, &mut identifiers)?; + + Ok(StmtDesc::Nonlocal(identifiers)) + } + + fn parse_identifiers<'a>( + &mut self, + node: &'a Node<'a>, + identifiers: &mut Vec, + ) -> ErrorableResult<()> { + for child in node.named_children(self.filtered_cst) { + let identifier = self.get_valid_identifier(child); + identifiers.push(identifier); + } + Ok(()) + } + + // Process Function Definition + // + // function_definition: $ => seq( + // optional('async'), + // 'def', + // field('name', $.identifier), + // field('parameters', $.parameters), + // optional( + // seq( + // '->', + // field('return_type', $.type) + // ) + // ), + // ':', + // field('body', $._suite) + // ), + fn function_definition<'a>( + &mut self, + func_def: &'a Node<'a>, + decorator_list: Vec, + ) -> ErrorableResult { + let name_node = func_def + .child_by_field_name(self.filtered_cst, "name") + .expect("missing function name"); + let name = self.get_valid_identifier(name_node); + let parameters_node = func_def + .child_by_field_name(self.filtered_cst, "parameters") + .expect("missing function parameters"); + let parameters = self.get_parameters(parameters_node)?; + let body_node = func_def + .child_by_field_name(self.filtered_cst, "body") + .expect("missing function body"); + let mut body = vec![]; + self.block(body_node, &mut body); + + let return_annotation_node = func_def.child_by_field_name(self.filtered_cst, "return_type"); + let return_annotation_expr = match &return_annotation_node { + Some(ret_annotation) => { + let annotation_node = ret_annotation + .child(self.filtered_cst, 0) + .expect("type node missing type"); + Some(self.expression(annotation_node)?) + } + _ => None, + }; + + if self.get_text( + func_def + .child(self.filtered_cst, 0) + .expect("def or async node expected"), + ) == "async" + { + Ok(StmtDesc::AsyncFunctionDef { + name, + args: parameters, + body, + decorator_list, // decorators are added by wrapping code + type_params: vec![], // TODO: pep 695 + returns: return_annotation_expr, + type_comment: None, + }) + } else { + Ok(StmtDesc::FunctionDef { + name, + args: parameters, + body, + decorator_list, // decorators are added by wrapping code + type_params: vec![], // TODO: pep 695 + returns: return_annotation_expr, + type_comment: None, + }) + } + } + + // Load the function parameters + // + // parameters: $ => seq( + // '(', + // optional($._parameters), + // ')' + // ), + // _parameters: $ => seq( + // commaSep1($.parameter), + // optional(',') + // ), + // parameter: $ => choice( + // $.identifier, + // $.typed_parameter, + // $.default_parameter, + // $.typed_default_parameter, + // $.list_splat_pattern, + // $.tuple_pattern, + // $.keyword_separator, + // $.positional_separator, + // $.dictionary_splat_pattern + // ), + fn get_parameters<'a>(&mut self, parameters: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + let mut posonlyargs: Vec = vec![]; + let mut args: Vec = vec![]; + let mut vararg: Option = None; + let mut kwonlyargs: Vec = vec![]; // arguments go in here after a vararg or / token + let mut kw_defaults: Vec> = vec![]; //defaults go here after a vararg or * token + let mut kwarg: Option = None; + let mut defaults: Vec = vec![]; + + let mut require_kw_args = false; + + for parameter in parameters.named_children(self.filtered_cst) { + let parameter_annotation = get_node_type(parameter); + match ¶meter_annotation { + NodeType::Production(param) => match ¶m.production_kind { + IDENTIFIER => { + self.get_parameters_identifier( + param.node, + &require_kw_args, + &mut kwonlyargs, + &mut kw_defaults, + &mut args, + ); + } + TYPED_PARAMETER => { + self.get_parameters_typed_parameter( + param.node, + parameter, + &mut require_kw_args, + &mut kwonlyargs, + &mut kw_defaults, + &mut args, + &mut vararg, + &mut kwarg, + )?; + } + DEFAULT_PARAMETER => { + self.get_parameters_default_parameter( + param.node, + &require_kw_args, + &mut kwonlyargs, + &mut kw_defaults, + &mut args, + &mut defaults, + )?; + } + TYPED_DEFAULT_PARAMETER => { + self.get_parameters_typed_default_parameter( + param.node, + &require_kw_args, + &mut kwonlyargs, + &mut kw_defaults, + &mut args, + &mut defaults, + )?; + } + LIST_SPLAT_PATTERN => { + let ident_node = ¶m + .node + .child(self.filtered_cst, 1) + .expect("identifier of starred missing"); + let identifier = self.get_valid_identifier(ident_node); + + vararg = Some(Arg::new_simple(identifier, ident_node, parameter)); + require_kw_args = true; + } + TUPLE_PATTERN => panic!("unimplemented token in get_parameters: TUPLE_PATTERN"), + KEYWORD_SEPARATOR => { + // all arguments defined past this point are now keyword args + require_kw_args = true; + } + POSITIONAL_SEPARATOR => { + // everything declared as an arugment now becomes a posonlyargs + while !args.is_empty() { + posonlyargs.push(args.remove(0)); + } + } + DICTIONARY_SPLAT_PATTERN => { + let ident_node = ¶m + .node + .child(self.filtered_cst, 1) + .expect("identifier of dictionary argument"); + let identifier = self.get_valid_identifier(ident_node); + + kwarg = Some(Arg::new_simple(identifier, ident_node, parameter)); + } + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected function parameter: {:?}", + param + )), + parameter, + )); + } + }, + _ => (), + } + } + + Ok(Arguments { + posonlyargs, + args, + vararg, + kwonlyargs, + kw_defaults, + kwarg, + defaults, + }) + } + + // identifier: $ => /[_\p{XID_Start}][_\p{XID_Continue}]*/, + fn get_parameters_identifier<'a>( + &mut self, + node: &'a Node<'a>, + require_kw_args: &bool, + kwonlyargs: &mut Vec, + kw_defaults: &mut Vec>, + args: &mut Vec, + ) { + let identifier = self.get_valid_identifier(node); + + let arg = Arg::new_simple(identifier, node, node); + + match require_kw_args { + true => { + kwonlyargs.push(arg); + kw_defaults.push(None); + } + _ => args.push(arg), + }; + } + + // typed_parameter: $ => prec(PREC.typed_parameter, seq( + // choice( + // $.identifier, + // $.list_splat_pattern, + // $.dictionary_splat_pattern + // ), + // ':', + // field('type', $.type) + // )), + fn get_parameters_typed_parameter<'a>( + &mut self, + node: &'a Node<'a>, + parameter: &'a Node<'a>, + require_kw_args: &mut bool, + kwonlyargs: &mut Vec, + kw_defaults: &mut Vec>, + args: &mut Vec, + vararg: &mut Option, + kwarg: &mut Option, + ) -> ErrorableResult<()> { + use ProductionKind::*; + + let typed_parameter_node = node + .child_by_field_name(self.filtered_cst, "type") + .expect("default param missing type"); + let annotation_node = typed_parameter_node + .child(self.filtered_cst, 0) + .expect("type node missing type"); + + let annotation_expr = self.expression(annotation_node)?; + + let ident_node = node + .child(self.filtered_cst, 0) + .expect("typed param id, *id or **id missing"); + let ident_node_type = get_node_type(ident_node); + match ident_node_type { + NodeType::Production(param) => match ¶m.production_kind { + IDENTIFIER => { + let identifier = self.get_valid_identifier(param.node); + let arg = Arg::new_with_type(identifier, annotation_expr, parameter, parameter); + match require_kw_args { + true => { + kwonlyargs.push(arg); + kw_defaults.push(None); + } + _ => args.push(arg), + }; + } + LIST_SPLAT_PATTERN => { + let ident_node = ¶m + .node + .child(self.filtered_cst, 1) + .expect("identifier of starred missing"); + let identifier = self.get_valid_identifier(ident_node); + + *vararg = Some(Arg::new_with_type( + identifier, + annotation_expr, + ident_node, + parameter, + )); + // all arguments defined past this point are now keyword args + *require_kw_args = true; + } + DICTIONARY_SPLAT_PATTERN => { + let ident_node = ¶m + .node + .child(self.filtered_cst, 1) + .expect("identifier of dictionary argument"); + let identifier = self.get_valid_identifier(ident_node); + + *kwarg = Some(Arg::new_with_type( + identifier, + annotation_expr, + ident_node, + parameter, + )); + } + _ => panic!("unexpected typed parameter production"), + }, + _ => (), + } + Ok(()) + } + + // default_parameter: $ => seq( + // field('name', $.identifier), + // '=', + // field('value', $.expression) + // ), + fn get_parameters_default_parameter<'a>( + &mut self, + node: &'a Node<'a>, + require_kw_args: &bool, + kwonlyargs: &mut Vec, + kw_defaults: &mut Vec>, + args: &mut Vec, + defaults: &mut Vec, + ) -> ErrorableResult<()> { + let name_node = &node + .child_by_field_name(self.filtered_cst, "name") + .expect("default param missing name"); + + let identifier = self.get_valid_identifier(name_node); + let arg = Arg::new_simple(identifier, name_node, name_node); + + let default_value_node = &node + .child_by_field_name(self.filtered_cst, "value") + .expect("default param missing value"); + let default_value = self.expression(default_value_node)?; + + match require_kw_args { + true => { + kwonlyargs.push(arg); + kw_defaults.push(Some(default_value)); + } + _ => { + args.push(arg); + defaults.push(default_value); + } + }; + + Ok(()) + } + + // typed_default_parameter: $ => prec(PREC.typed_parameter, seq( + // field('name', $.identifier), + // ':', + // field('type', $.type), + // '=', + // field('value', $.expression) + // )), + fn get_parameters_typed_default_parameter<'a>( + &mut self, + node: &'a Node<'a>, + require_kw_args: &bool, + kwonlyargs: &mut Vec, + kw_defaults: &mut Vec>, + args: &mut Vec, + defaults: &mut Vec, + ) -> ErrorableResult<()> { + let name_node = &node + .child_by_field_name(self.filtered_cst, "name") + .expect("typed default param missing name"); + + let typed_default_parameter_node = &node + .child_by_field_name(self.filtered_cst, "type") + .expect("typed default param missing name"); + let annotation_node = typed_default_parameter_node + .child(self.filtered_cst, 0) + .expect("type node missing type"); + + let default_value_node = &node + .child_by_field_name(self.filtered_cst, "value") + .expect("typed default param missing name"); + + let annotation_expr = self.expression(annotation_node)?; + + let identifier = self.get_valid_identifier(name_node); + + let arg = Arg::new_with_type( + identifier, + annotation_expr, + name_node, + typed_default_parameter_node, + ); + + let default_value = self.expression(default_value_node)?; + + match require_kw_args { + true => { + kwonlyargs.push(arg); + kw_defaults.push(Some(default_value)); + } + _ => { + args.push(arg); + defaults.push(default_value); + } + }; + + Ok(()) + } + + // Process a Class Definition + // + // class_definition: $ => seq( + // 'class', + // field('name', $.identifier), + // field('superclasses', optional($.argument_list)), + // ':', + // field('body', $._suite) + // ), + fn class_definition<'a>( + &mut self, + class_def: &'a Node<'a>, + decorator_list: Vec, + ) -> ErrorableResult { + let name_node = class_def + .child_by_field_name(self.filtered_cst, "name") + .expect("missing class name"); + let name = self.get_valid_identifier(name_node); + let body_node = class_def + .child_by_field_name(self.filtered_cst, "body") + .expect("missing class body"); + let mut body = vec![]; + self.block(body_node, &mut body); + + let mut bases: Vec = vec![]; + let mut keywords: Vec = vec![]; + + match class_def.child_by_field_name(self.filtered_cst, "superclasses") { + Some(superclasses_node) => { + self.argument_list(superclasses_node, &mut bases, &mut keywords)?; + } + _ => (), + } + + Ok(StmtDesc::ClassDef { + name, + bases, + keywords, + body, + decorator_list, + type_params: vec![], // TODO: pep 695 + }) + } + + // assert_statement: $ => seq( + // 'assert', + // commaSep1($.expression) + // ), + fn assert_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let test_node = node.child(self.filtered_cst, 1).unwrap(); + let test = self.expression(test_node)?; + + let mut msg = None; + if node.child_count() == 4 { + let msg_node = node.child(self.filtered_cst, 3).unwrap(); + msg = Some(self.expression(msg_node)?); + } + + Ok(StmtDesc::Assert { test, msg }) + } + + fn dotted_name_to_string<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + Ok(join( + node.named_children(self.filtered_cst) + .map(|x| self.get_valid_identifier(x)), + ".", + )) + } + + fn get_aliases<'a>( + &mut self, + node: &'a Node<'a>, + aliases: &mut Vec, + ) -> ErrorableResult<()> { + for alias_child in node.named_children(self.filtered_cst) { + match alias_child.child_by_field_name(self.filtered_cst, "alias") { + Some(alias_name) => { + aliases.push(Alias::new( + self.dotted_name_to_string( + alias_child + .child_by_field_name(self.filtered_cst, "name") + .expect("missing aliased_import name"), + )?, + Some(self.get_valid_identifier(alias_name)), + alias_child, + )); + } + _ => { + // straight dotted name: a.b.c etc + aliases.push(Alias::new( + self.dotted_name_to_string(alias_child)?, + None, + alias_child, + )); + } + } + } + Ok(()) + } + + // import_statement: $ => seq( + // 'import', + // $._import_list + // ), + // aliased_import: $ => seq( + // field('name', $.dotted_name), + // 'as', + // field('alias', $.identifier) + // ), + fn import_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut aliases: Vec = vec![]; + self.get_aliases(node, &mut aliases)?; + Ok(StmtDesc::Import(aliases)) + } + + // import_from_statement: $ => seq( + // 'from', + // field('module_name', choice( + // $.relative_import, + // $.dotted_name + // )), + // 'import', + // choice( + // $.wildcard_import, + // $._import_list, + // seq('(', $._import_list, ')') + // ) + // ), + // + // relative_import: $ => seq( + // $.import_prefix, + // optional($.dotted_name) + //), + fn import_from_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut names: Vec = vec![]; + let mut level: isize = 0; + + let module_name_node = node + .child_by_field_name(self.filtered_cst, "module_name") + .expect("import_from_statement missing module_name"); + let module__ = match module_name_node.kind() { + "relative_import" => { + // Relative imports are interesting. From the docs: "level is + // an integer holding the level of the relative import (0 + // means absolute import)." It can be thought of like + // directories in a filesystem where by the number of dots + // preceding a dotted name indicates how many levels upwards + // one must look for the import dependency + + let import_prefix = module_name_node + .child(self.filtered_cst, 0) + .expect("import_prefix"); + level = import_prefix.child_count() as isize; + + if module_name_node.child_count() == 2 { + let dotted_name = module_name_node + .child(self.filtered_cst, 1) + .expect("dotted_name"); + Some(self.dotted_name_to_string(dotted_name)?) + } else { + None + } + } + _ => Some(self.dotted_name_to_string(module_name_node)?), + }; + + let aliases_or_wildcard = &node + .child(self.filtered_cst, 3) + .expect("list of imports for import_from_statement"); + match aliases_or_wildcard.kind() { + "wildcard_import" => { + names.push(Alias::new(String::from("*"), None, aliases_or_wildcard)) + } + _ => { + for alias in node.named_children(self.filtered_cst) { + if alias == module_name_node { + continue; // skip the `from xyz`, `xzy` node as processed already + } + match alias.child_by_field_name(self.filtered_cst, "alias") { + Some(alias_name) => { + names.push(Alias::new( + self.dotted_name_to_string( + alias + .child_by_field_name(self.filtered_cst, "name") + .expect("missing aliased_import name"), + )?, + Some(self.get_valid_identifier(alias_name)), + alias, + )); + } + _ => { + // straight dotted name: a.b.c etc + names.push(Alias::new(self.dotted_name_to_string(alias)?, None, alias)); + } + } + } + } + } + + Ok(StmtDesc::ImportFrom { + module__, + names, + level: Some(level), // optional but always included + }) + } + + // future_import_statement: $ => seq( + // 'from', + // '__future__', + // 'import', + // choice( + // $._import_list, + // seq('(', $._import_list, ')'), + // ) + // ), + fn future_import_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut names: Vec = vec![]; + self.get_aliases(node, &mut names)?; + + Ok(StmtDesc::ImportFrom { + module__: Some("__future__".to_string()), + names, + level: Some(0), // optional but always included + }) + } + + // expressions: $ => choice( + // $.expression, + // $.expression_list + // ), + fn expressions<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + match node.kind() { + "expression_list" => { + let mut expressions: Vec = vec![]; + self.expression_list(node, &mut expressions); + + let tuple_desc = ExprDesc::Tuple { + elts: expressions, + ctx: self.get_expression_context(), + }; + + Ok(self.parser.new_expr(tuple_desc, node)) + } + _ => self.expression(node), + } + } + + fn expression_list<'a>(&mut self, node: &'a Node<'a>, expressions: &mut Vec) { + for child in node.named_children(self.filtered_cst) { + // it is ok to leave out a subexpression if there is a problem with it + match self.expression(child) { + Ok(arg) => expressions.push(arg), + _ => (), + }; + } + } + + // Process Return StmtDesc + // + // return_statement: $ => seq( + // 'return', + // optional($._expressions) + // ), + fn return_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut expr = None; + if node.child_count() == 2 { + expr = Some(self.expressions(node.child(self.filtered_cst, 1).unwrap())?); + } + + Ok(StmtDesc::Return(expr)) + } + + // raise_statement: $ => seq( + // 'raise', + // optional($._expressions), + // optional(seq('from', field('cause', $.expression))) + // ), + fn raise_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut exc = None; + let mut cause = None; + match node.child_by_field_name(self.filtered_cst, "cause") { + Some(from_node) => { + let expr_node = node.child(self.filtered_cst, 1).unwrap(); + exc = Some(self.expression(expr_node)?); + + cause = Some(self.expression(from_node)?); + } + _ => match node.child(self.filtered_cst, 1) { + Some(expr_node) => { + exc = Some(self.expression(expr_node)?); + } + _ => (), + }, + } + + Ok(StmtDesc::Raise { exc, cause }) + } + + // Process an ExprDesc StmtDesc. + // expression_statement: $ => choice( + // $.expression, + // seq(commaSep1($.expression), optional(',')), + // $.assignment, + // $.augmented_assignment, + // $.yield + // ), + fn expression_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + let expression_statement = if 1 == node.child_count() { + let child_expression = node.child(self.filtered_cst, 0).ok_or_else(|| { + self.record_recoverable_error(RecoverableError::MissingChild, node) + })?; + let child_expression_type = get_node_type(child_expression); + match child_expression_type { + NodeType::Production(ref rule) => { + match &rule.production_kind { + ASSIGNMENT => { + let (mut targets, type_annot, value, type_comment, simple) = + self.assignment(rule.node)?; + + if let Some(annotation) = type_annot { + StmtDesc::AnnAssign { + target: targets.pop().unwrap(), + annotation, + value, + simple, + } + } else { + StmtDesc::Assign { + targets, + value: value.unwrap(), + type_comment, + } + } + } + AUGMENTED_ASSIGNMENT => self.aug_assign(rule.node)?, + YIELD => { + let yeild_desc = self.yield_statement(rule.node)?; + StmtDesc::Expr(self.parser.new_expr(yeild_desc, node)) + } + _ => { + let expression = self.expression(child_expression)?; + + // If the expression statement has a trailing comma we + // should treat it as a tuple of size one, otherwise + // it is a plain expression. + let ends_in_comma = node + .child(self.filtered_cst, node.child_count() - 1) + .unwrap() + .kind() + == ","; + if ends_in_comma { + let mut expressions = vec![]; + expressions.push(expression); + let tuple_desc = ExprDesc::Tuple { + elts: expressions, + ctx: self.get_expression_context(), + }; + + StmtDesc::Expr(self.parser.new_expr(tuple_desc, node)) + } else { + StmtDesc::Expr(expression) + } + } + } + } + _ => panic!("should be unreachable for expression"), + } + } else { + // sequence of expressions: seq(commaSep1($.expression), optional(',')), + let tuple_desc = self.tuple(node)?; + StmtDesc::Expr(self.parser.new_expr(tuple_desc, node)) + }; + + Ok(expression_statement) + } + + // Delete(expr* targets) + // delete_statement: $ => seq( + // 'del', + // $._expressions + // ), + fn delete_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut expressions: Vec = vec![]; + + self.set_expression_context(ExprContext::Del); + + let expressions_node = node.child(self.filtered_cst, 1).unwrap(); + + match expressions_node.kind() { + "expression_list" => self.expression_list(expressions_node, &mut expressions), + _ => { + let expression = self.expression(expressions_node)?; + expressions.push(expression); + } + }; + + self.pop_expression_context(); + + Ok(StmtDesc::Delete(expressions)) + } + + // for_statement: $ => seq( + // optional('async'), + // 'for', + // field('left', $._left_hand_side), + // 'in', + // field('right', $._expressions), + // ':', + // field('body', $._suite), + // field('alternative', optional($.else_clause)) + // ), + fn for_statement<'a>(&mut self, for_node: &'a Node<'a>) -> ErrorableResult { + self.set_expression_context(ExprContext::Store); + let target_node = for_node + .child_by_field_name(self.filtered_cst, "left") + .expect("missing left in for statement"); + let target = self.assign_left_hand_side(target_node)?; + self.pop_expression_context(); + + let iter_node = for_node + .child_by_field_name(self.filtered_cst, "right") + .expect("missing right in for statement"); + let iter = self.expressions(iter_node)?; + + let body_node = for_node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in for statement"); + let mut body_block = vec![]; + self.block(body_node, &mut body_block); + + let mut orelse_block = vec![]; + + let orelse_node = for_node.child_by_field_name(self.filtered_cst, "alternative"); + match &orelse_node { + Some(orelse_cont) => { + match &orelse_cont.child_by_field_name(self.filtered_cst, "body") { + Some(body_cont) => self.block(body_cont, &mut orelse_block), + _ => (), + } + } + _ => (), + } + if for_node + .child(self.filtered_cst, 0) + .unwrap() + .kind() + .eq("async") + { + Ok(StmtDesc::AsyncFor { + target, + iter, + body: body_block, + orelse: orelse_block, + type_comment: None, + }) + } else { + Ok(StmtDesc::For { + target, + iter, + body: body_block, + orelse: orelse_block, + type_comment: None, + }) + } + } + + fn process_withitem_as_pattern_or_expression<'a>( + &mut self, + items: &mut Vec, + pattern_or_expression: &'a Node<'a>, + ) -> ErrorableResult<()> { + let mut optional_vars: Option = None; + let pattern_or_expression_type = &get_node_type(pattern_or_expression); + + match pattern_or_expression_type { + NodeType::Production(rule) => match &rule.production_kind { + ProductionKind::AS_PATTERN => { + let node = rule.node; + let lhs_expression = pattern_or_expression + .child(self.filtered_cst, 0) + .expect("expression for with_item"); + let target_expression = node + .child(self.filtered_cst, 2) + .expect("target for with_item") + .child(self.filtered_cst, 0) + .expect("pattern target"); + + self.set_expression_context(ExprContext::Store); + optional_vars = Some(self.expression(target_expression)?); + self.pop_expression_context(); + + let context_expr: Expr = self.expression(lhs_expression)?; + + items.push(Withitem { + context_expr, + optional_vars, + }); + } + _ => { + if pattern_or_expression.child_count() >= 5 { + let sub_expression = pattern_or_expression + .child(self.filtered_cst, 4) + .expect("target for with_item"); + if sub_expression.kind() == "as_pattern" { + let target_expression = sub_expression + .child(self.filtered_cst, 2) + .expect("target for with_item as") + .child(self.filtered_cst, 0) + .expect("pattern target"); + self.set_expression_context(ExprContext::Store); + optional_vars = Some(self.expression(target_expression)?); + self.pop_expression_context(); + } + } + let context_expr: Expr = self.expression(pattern_or_expression)?; + items.push(Withitem { + context_expr, + optional_vars, + }); + } + }, + + _ => (), + } + + Ok(()) + } + + // with_statement: $ => seq( + // optional('async'), + // 'with', + // $.with_clause, + // ':', + // field('body', $._suite) + // ), + // + // with_clause: $ => choice( + // seq(commaSep1($.with_item), optional(',')), + // seq('(', commaSep1($.with_item), optional(','), ')') + // ), + // + // with_item: $ => prec.dynamic(1, seq( + // field('value', $.expression), + // )), + fn with_statement<'a>(&mut self, with_node: &'a Node<'a>) -> ErrorableResult { + let is_async: bool = with_node + .child(self.filtered_cst, 0) + .unwrap() + .kind() + .eq("async"); + let body_node = with_node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in with statement"); + let mut body = vec![]; + self.block(body_node, &mut body); + + let mut items: Vec = vec![]; + + let with_clause_node_idx = if is_async { 2 } else { 1 }; + let with_clause_node = with_node + .child(self.filtered_cst, with_clause_node_idx) + .unwrap(); + + for with_item_node in with_clause_node.named_children(self.filtered_cst) { + let expression_node = &with_item_node + .child(self.filtered_cst, 0) + .expect("with_item to wrap an expression or as_pattern"); + + let expression_node_type = &get_node_type(expression_node); + + match expression_node_type { + NodeType::Production(rule) => match &rule.production_kind { + ProductionKind::TUPLE => { + for tuple_child_node in expression_node.named_children(self.filtered_cst) { + match self.process_withitem_as_pattern_or_expression( + &mut items, + tuple_child_node, + ) { + Ok(_) => (), + Err(error) => return Err(error), + } + } + } + _ => { + self.process_withitem_as_pattern_or_expression( + &mut items, + expression_node, + )?; + } + }, + _ => { + self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!("{:?}", expression_node)), + expression_node, + ); + } + }; + } + + if is_async { + Ok(StmtDesc::AsyncWith { + items, + body, + type_comment: None, + }) + } else { + Ok(StmtDesc::With { + items, + body, + type_comment: None, + }) + } + } + + // try_statement: $ => seq( + // 'try', + // ':', + // field('body', $._suite), + // choice( + // seq( + // repeat1($.except_clause), + // optional($.else_clause), + // optional($.finally_clause) + // ), + // seq( + // repeat1($.except_group_clause), + // optional($.else_clause), + // optional($.finally_clause) + // ), + // $.finally_clause + // ) + // ), + // + // except_clause: $ => seq( + // 'except', + // optional(seq( + // $.expression, + // optional(seq( + // choice('as', ','), + // $.expression + // )) + // )), + // ':', + // $._suite + // ), + // + // except_group_clause - comes in 3.11 ( so we need to care about this for the 3.12 upgrade ) + // + // except_group_clause: $ => seq( + // 'except*', + // seq( + // $.expression, + // optional(seq( + // 'as', + // $.expression + // )) + // ), + // ':', + // $._suite + // ), + // + // finally_clause: $ => seq( + // 'finally', + // ':', + // $._suite + // ), + fn try_statement<'a>(&mut self, try_node: &'a Node<'a>) -> ErrorableResult { + let mut body: Vec = vec![]; + let mut handlers: Vec = vec![]; + let mut orelse: Vec = vec![]; + let mut finalbody: Vec = vec![]; + + let body_node = try_node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in for statement"); + self.block(body_node, &mut body); + + for child_node in try_node.named_children(self.filtered_cst) { + match child_node.kind() { + "except_clause" => { + let mut type__: Option = None; + let mut name: Option = None; + let mut body: Vec = vec![]; + self.block( + child_node + .child(self.filtered_cst, child_node.child_count() - 1) + .expect("exception handler body"), + &mut body, + ); + + if child_node.child_count() > 3 { + // not just `except: ...` + let expr_node = &child_node + .child(self.filtered_cst, 1) + .expect("expression or as_pattern"); + let expr_type = &get_node_type(expr_node); + type__ = match expr_type { + NodeType::Production(rule) => match &rule.production_kind { + ProductionKind::AS_PATTERN => { + let node = rule.node; + let lhs_expression = node + .child(self.filtered_cst, 0) + .expect("expression for exception handler"); + let target_expression = node + .child(self.filtered_cst, 2) + .expect("target for exception handler") + .child(self.filtered_cst, 0) + .expect("pattern target"); + + name = Some(self.get_valid_identifier(target_expression)); + + Some(self.expression(lhs_expression)?) + } + _ => Some(self.expression(expr_node)?), + }, + _ => panic!("unexpected statement handling: {:?}", expr_type), + }; + } + + handlers.push(Excepthandler::new( + ExcepthandlerDesc::ExceptHandler { type__, name, body }, + child_node, + )); + } + "except_group_clause" => panic!("except* not supported until Python 3.11"), + "else_clause" => { + self.block( + child_node.child(self.filtered_cst, 2).expect("else body"), + &mut orelse, + ); + } + "finally_clause" => { + self.block( + child_node + .child(self.filtered_cst, 2) + .expect("finally body"), + &mut finalbody, + ); + } + _ => (), + } + } + + Ok(StmtDesc::Try { + body, + handlers, + orelse, + finalbody, + }) + } + + // while_statement: $ => seq( + // 'while', + // field('condition', $.expression), + // ':', + // field('body', $._suite), + // optional(field('alternative', $.else_clause)) + // ), + fn while_statement<'a>(&mut self, for_node: &'a Node<'a>) -> ErrorableResult { + let test_node = for_node + .child_by_field_name(self.filtered_cst, "condition") + .expect("missing condition in while statement"); + let test = self.expression(test_node)?; + + let body_node = for_node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in for statement"); + let mut body = vec![]; + self.block(body_node, &mut body); + + let mut orelse = vec![]; + + let orelse_node = for_node.child_by_field_name(self.filtered_cst, "alternative"); + match &orelse_node { + Some(orelse_cont) => { + match &orelse_cont.child_by_field_name(self.filtered_cst, "body") { + Some(body_cont) => self.block(body_cont, &mut orelse), + _ => (), + } + } + _ => (), + } + + Ok(StmtDesc::While { test, body, orelse }) + } + + // Process If StmtDesc + // + // if_statement: $ => seq( + // 'if', + // field('condition', $.expression), + // ':', + // field('consequence', $._suite), + // repeat(field('alternative', $.elif_clause)), + // optional(field('alternative', $.else_clause)) + // ), + fn if_statement<'a>(&mut self, if_node: &'a Node<'a>) -> ErrorableResult { + let condition_node = if_node + .child_by_field_name(self.filtered_cst, "condition") + .expect("missing condition in if statement"); + let condition = self.expression(condition_node)?; + let block_node = if_node + .child_by_field_name(self.filtered_cst, "consequence") + .expect("missing consequence in if statement"); + let mut block = vec![]; + self.block(block_node, &mut block); + + let mut elif_elses = vec![]; + + for elif_or_else in if_node.children_by_field_name(self.filtered_cst, "alternative") { + elif_elses.push(elif_or_else); + } + + let mut last_orelse = vec![]; + + for elif_or_else in elif_elses.iter().rev() { + match elif_or_else.child_by_field_name(self.filtered_cst, "body") { + Some(else_body) => { + last_orelse = vec![]; + self.block(else_body, &mut last_orelse); + } + _ => { + //elif body + let elif_condition_node = elif_or_else + .child_by_field_name(self.filtered_cst, "condition") + .expect("missing condition in if statement"); + let elif_condition = self.expression(elif_condition_node)?; + + let elif_block_node = elif_or_else + .child_by_field_name(self.filtered_cst, "consequence") + .expect("missing consequence in if statement"); + let mut elif_block = vec![]; + self.block(elif_block_node, &mut elif_block); + + let elif_statement = Stmt::new( + StmtDesc::If { + test: elif_condition, + body: elif_block, + orelse: last_orelse, + }, + elif_or_else, + if_node, + ); + + last_orelse = vec![]; + last_orelse.push(elif_statement); + } + } + } + + Ok(StmtDesc::If { + test: condition, + body: block, + orelse: last_orelse, + }) + } + + // seems overly complex... + // yield: $ => prec.right(seq( + // 'yield', + // choice( + // seq( + // 'from', + // $.expression + // ), + // optional($._expressions) + // ) + // )), + fn yield_statement<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let yield_statement = match node.child_count() { + 2 => { + let rhs_expr = node + .child(self.filtered_cst, 1) + .expect("expected yield rhs"); + let expr = self.expressions(rhs_expr)?; + + ExprDesc::Yield(Some(expr)) + } + 3 => { + let rhs_expr = node + .child(self.filtered_cst, 2) + .expect("expected yield from rhs"); + let expr = self.expression(rhs_expr)?; + + ExprDesc::YieldFrom(expr) + } + _ => ExprDesc::Yield(None), + }; + + Ok(yield_statement) + } + + // augmented_assignment: $ => seq( + // field('left', $._left_hand_side), + // field('operator', choice( + // '+=', '-=', '*=', '/=', '@=', '//=', '%=', '**=', + // '>>=', '<<=', '&=', '^=', '|=' + // )), + // field('right', $._right_hand_side) + // ), + fn aug_assign<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let target_node = node + .child_by_field_name(self.filtered_cst, "left") + .expect("missing left in aug_assign"); + let operator_node = node + .child_by_field_name(self.filtered_cst, "operator") + .expect("missing operator in aug_assign"); + let value_node = node + .child_by_field_name(self.filtered_cst, "right") + .expect("missing right in aug_assign"); + + let target = self.assign_left_hand_side(target_node)?; + + let operator_type = get_node_type(operator_node); + let operator = match &operator_type { + &NodeType::AugAssignOperator(op) => Operator::from(op), + _ => panic!("missing AugAssignOperator operator"), + }; + + let mut targets = vec![]; + let value = self.assign_right_hand_side(value_node, &mut targets)?; + + Ok(StmtDesc::AugAssign { + target, + op: operator, + value, + }) + } + + // assignment: $ => seq( + // field('left', $._left_hand_side), + // choice( + // seq('=', field('right', $._right_hand_side)), + // seq(':', field('type', $.type)), + // seq(':', field('type', $.type), '=', field('right', $._right_hand_side)) + // ) + // ), + fn assignment<'a>( + &mut self, + node: &'a Node<'a>, + ) -> Result<(Vec, Option, Option, Option, isize), ()> { + let mut targets = vec![]; + + let lhs = node + .child_by_field_name(self.filtered_cst, "left") + .expect("missing left hand side"); + + // simple is a 'boolean integer' (what?) set to True for a Name node in target + // that do not appear in between parenthesis and are hence pure names and not expressions. + let simple: isize = if lhs.kind() == "identifier" { 1 } else { 0 }; + + let lhs_expr = self.assign_left_hand_side(lhs)?; + + targets.push(lhs_expr); + + // deal with types... + let ty = None; + + let type_annot = + if let Some(type_node) = node.child_by_field_name(self.filtered_cst, "type") { + let type_expr_node = type_node + .child(self.filtered_cst, 0) + .expect("expression of type node"); + Some(self.expression(type_expr_node)?) + } else { + None + }; + + // get right hand side, if any + let rhs = if let Some(rhs_node) = node.child_by_field_name(self.filtered_cst, "right") { + Some(self.assign_right_hand_side(rhs_node, &mut targets)?) + } else { + None + }; + + Ok((targets, type_annot, rhs, ty, simple)) + } + + // _right_hand_side: $ => choice( + // $._list_splat_or_expression, + // $.splat_or_expressions, + // $.assignment, + // $.augmented_assignment, + // $.yield + // ), + // + // list_splat_or_expressions: $ => prec.right(seq( + // $._list_splat_or_expression, + // choice( + // ',', + // seq( + // repeat1(seq( + // ',', + // $._list_splat_or_expression + // )), + // optional(',') + // ), + // ) + // )), + // + // _list_splat_or_expression: $ => choice($.list_splat, $.expression), + fn assign_right_hand_side<'a>( + &mut self, + rhs_node: &'a Node<'a>, + targets: &mut Vec, + ) -> ErrorableResult { + use ProductionKind::*; + + let expr_type = &get_node_type(rhs_node); + let rhs = match expr_type { + NodeType::Production(rule) => match &rule.production_kind { + LIST_SPLAT => { + let starred = self.starred(rule.node)?; + self.parser.new_expr(starred, rhs_node) + } + LIST_SPLAT_OR_EXPRESSIONS => { + // call tuple here as the two subrules needed by list_splat_or_expressions are list_splat + // and expression which are both covered in tuple + let tuple_desc = self.tuple(rule.node)?; + self.parser.new_expr(tuple_desc, rhs_node) + } + ASSIGNMENT => { + let (mut targetsx, _type_annot, rhsx, _ty, _simple) = + self.assignment(rule.node)?; + targets.append(&mut targetsx); + rhsx.unwrap() + // deal with types... + } + AUGMENTED_ASSIGNMENT => { + panic!( + "not yet implemented assign_right_hand_side - AUGMENTED_ASSIGNMENT {:?}", + rule.node + ) + } + YIELD => { + let yield_desc = self.yield_statement(rule.node)?; + self.parser.new_expr(yield_desc, rhs_node) + } + _ => self.expression(rhs_node)?, + }, + _ => self.expression(rhs_node)?, + }; + Ok(rhs) + } + + // + // pattern_list: $ => seq( + // $.pattern, + // choice( + // ',', + // seq( + // repeat1(seq( + // ',', + // $.pattern + // )), + // optional(',') + // ) + // ) + // ), + // + fn pattern_list<'a>(&mut self, pattern_list_node: &'a Node<'a>) -> Expr { + // pattern lists are processed like tuples of patterns + let mut patterns = vec![]; + + for pattern_node in pattern_list_node.named_children(self.filtered_cst) { + match self.pattern(pattern_node) { + Ok(expression) => patterns.push(expression), + _ => (), + } + } + + let tuple_desc = ExprDesc::Tuple { + elts: patterns, + ctx: self.get_expression_context(), + }; + + self.parser.new_expr(tuple_desc, pattern_list_node) + } + + // + // _left_hand_side: $ => choice( + // $.pattern, + // $.pattern_list, + // ), + // + fn assign_left_hand_side<'a>(&mut self, lhs: &'a Node<'a>) -> ErrorableResult { + self.set_expression_context(ExprContext::Store); + let lhs_type = &get_node_type(lhs); + // left hand side, assignment target + let lhs_expr = match lhs_type { + NodeType::Production(rule) => match &rule.production_kind { + // we can treat pattern_list as a tuple + ProductionKind::PATTERN_LIST => self.pattern_list(lhs), + _ => self.pattern(lhs)?, + }, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected assignment left hand side: {:?}", + lhs + )), + lhs, + )); + } + }; + self.pop_expression_context(); + Ok(lhs_expr) + } + + // pattern: $ => choice( + // $.identifier, + // alias('match', $.identifier), // ambiguity with match statement: only ":" at end of line decides if "match" keyword + // $.keyword_identifier, + // $.subscript, + // $.attribute, + // $.list_splat_pattern, + // $.tuple_pattern, + // $.list_pattern + // ), + fn pattern<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + let node_type = &get_node_type(node); + let expr: Expr = match &node_type { + NodeType::Production(rule) => match &rule.production_kind { + IDENTIFIER => { + let name_desc = self.name(rule.node); + self.parser.new_expr(name_desc, rule.node) + } + KEYWORD_IDENTIFIER => { + panic!( + "not yet implemented pattern - KEYWORD_IDENTIFIER {:?}", + rule.node + ) + } + SUBSCRIPT => { + let subscript = self.subscript(node)?; + self.parser.new_expr(subscript, rule.node) + } + ATTRIBUTE => { + let attribute = self.attribute(node)?; + self.parser.new_expr(attribute, rule.node) + } + LIST_SPLAT_PATTERN => self.list_splat_pattern(node)?, + TUPLE_PATTERN => self.tuple_pattern(rule.node)?, + LIST_PATTERN => self.list_pattern(rule.node)?, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected token in pattern: {:?}", + node + )), + node, + )); + } + }, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected token in pattern: {:?}", + node + )), + node, + )); + } + }; + + Ok(expr) + } + + fn comma_separated_patterns<'a>(&mut self, node: &'a Node<'a>, sub_patterns: &mut Vec) { + for child in node.named_children(self.filtered_cst) { + // it is ok to leave out a sub-pattern if there is a problem with it + match self.pattern(child) { + Ok(arg) => sub_patterns.push(arg), + _ => (), + }; + } + } + + // tuple_pattern: $ => seq( + // '(', + // optional($._patterns), + // ')' + // ), + fn tuple_pattern<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + if node.child_count() == 3 { + // if single item in tuple, unwrap this and teat as individual item + // e.g. + // `(a) = g` would be treated simply as a=g (normal assignment) + // but, `(a,) = g` would be treated as `(a,) = g` (tuple assignment) + let expr_node = &node.child(self.filtered_cst, 1).unwrap(); + self.pattern(expr_node) + } else { + let mut sub_patterns = vec![]; + self.comma_separated_patterns(node, &mut sub_patterns); + + let tuple_pattern = ExprDesc::Tuple { + elts: sub_patterns, + ctx: self.get_expression_context(), + }; + + Ok(self.parser.new_expr(tuple_pattern, node)) + } + } + + // list_pattern: $ => seq( + // '[', + // optional($._patterns), + // ']' + // ), + fn list_pattern<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut sub_patterns = vec![]; + self.comma_separated_patterns(node, &mut sub_patterns); + + let list_pattern = ExprDesc::List { + elts: sub_patterns, + ctx: self.get_expression_context(), + }; + + Ok(self.parser.new_expr(list_pattern, node)) + } + + // list_splat_pattern: $ => seq( + // '*', + // choice($.identifier, $.keyword_identifier, $.subscript, $.attribute) + // ), + fn list_splat_pattern<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + // first node is *, second is the choice of ... + let actual_pattern_node = &node.child(self.filtered_cst, 1).unwrap(); + + let node_type = &get_node_type(actual_pattern_node); + let value: Expr = match &node_type { + NodeType::Production(rule) => match &rule.production_kind { + IDENTIFIER => { + let text_desc = self.name(rule.node); + self.parser.new_expr(text_desc, rule.node) + } + KEYWORD_IDENTIFIER => { + panic!( + "KEYWORD_IDENTIFIER not yet implemented for list_splat_pattern {:?}", + rule.node + ) + } + SUBSCRIPT => { + let subscript = self.subscript(rule.node)?; + self.parser.new_expr(subscript, rule.node) + } + ATTRIBUTE => { + let attribute_desc = self.attribute(rule.node)?; + self.parser.new_expr(attribute_desc, rule.node) + } + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected token in list_splat_pattern: {:?}", + actual_pattern_node + )), + actual_pattern_node, + )); + } + }, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected token in list_splat_pattern: {:?}", + actual_pattern_node + )), + actual_pattern_node, + )); + } + }; + + let starred = ExprDesc::Starred { + value, + ctx: self.get_expression_context(), + }; + + Ok(self.parser.new_expr(starred, node)) + } + + // Process an ExprDesc. + // expression: $ => choice( + // $.comparison_operator, + // $.not_operator, + // $.boolean_operator, + // $.lambda, + // $.primary_expression, + // $.conditional_expression, + // $.named_expression, + // ), + fn expression<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + use ProductionKind::*; + + let node_type = &get_node_type(node); + + let expr = match node_type { + NodeType::Production(rule) => match &rule.production_kind { + COMPARISON_OPERATOR => { + let comparison_op_desc = self.comparison_operator(rule.node)?; + self.parser.new_expr(comparison_op_desc, rule.node) + } + NOT_OPERATOR => { + let not_op_desc = self.not_operator(rule.node)?; + self.parser.new_expr(not_op_desc, rule.node) + } + BOOLEAN_OPERATOR => { + let bool_op_desc = self.bool_op(rule.node)?; + self.parser.new_expr(bool_op_desc, rule.node) + } + LAMBDA => { + let lambda_desc = self.lambda(rule.node)?; + self.parser.new_expr(lambda_desc, rule.node) + } + CONDITIONAL_EXPRESSION => { + let if_desc = self.if_exp(rule.node)?; + let node = rule.node; + let sub_node = node + .child(self.filtered_cst, 4) + .expect("if_exp missing orelse"); + let start_position = node.start_position(); + let mut end_position = node.end_position(); + + if sub_node.kind() == "as_pattern" { + end_position = node + .child(self.filtered_cst, 4) + .expect("if_exp missing orelse") + .child(self.filtered_cst, 0) + .expect("orelse missing child") + .end_position(); + } + Expr::new( + if_desc, + start_position.row as isize + 1, + start_position.column as isize, + end_position.row as isize + 1, + end_position.column as isize, + ) + } + NAMED_EXPRESSION => { + let named_desc = self.named_expression(rule.node)?; + self.parser.new_expr(named_desc, rule.node) + } + AS_PATTERN => { + let body_node = node + .child(self.filtered_cst, 0) + .expect("as_pattern missing body"); + let node_type = &get_node_type(body_node); + self.primary_expression(node_type, body_node)? + } + _ => self.primary_expression(node_type, rule.node)?, + }, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!("{:?}", node_type)), + node, + )); + } + }; + Ok(expr) + } + + // Process a Primary ExprDesc + // primary_expression: $ => choice( + // $.await, + // $.binary_operator, + // $.identifier, + // alias("match", $.identifier), + // $.keyword_identifier, + // $.string, + // $.concatenated_string, + // $.integer, + // $.float, + // $.true, + // $.false, + // $.none, + // $.unary_operator, + // $.attribute, + // $.subscript, + // $.call, + // $.list, + // $.list_comprehension, + // $.dictionary, + // $.dictionary_comprehension, + // $.set, + // $.set_comprehension, + // $.tuple, + // $.parenthesized_expression, + // $.generator_expression, + // $.ellipsis, + // ), + fn primary_expression(&mut self, node_type: &NodeType, node: &Node) -> ErrorableResult { + use ProductionKind::*; + + let exprdesc: ExprDesc = match node_type { + NodeType::Production(rule) => match &rule.production_kind { + AWAIT => self.await_expr(rule.node)?, + BINARY_OPERATOR => self.binary_op(rule.node)?, + // TODO: soft keywords like `match` and that story with python and tree-sitter + IDENTIFIER => self.name(rule.node), + KEYWORD_IDENTIFIER => self.name(node), + STRING => self.raw_string(rule.node, rule.node)?, + CONCATENATED_STRING => self.concatenated_string(rule.node)?, + INTEGER => self.integer(rule.node)?, + FLOAT => self.float(rule.node)?, + TRUE => self.constant(ConstantDesc::Bool(true)), + FALSE => self.constant(ConstantDesc::Bool(false)), + NONE => self.none(), + UNARY_OPERATOR => self.unary_op(rule.node)?, + ATTRIBUTE => self.attribute(rule.node)?, + SUBSCRIPT => self.subscript(rule.node)?, + CALL => self.call(rule.node)?, + LIST => self.list(rule.node)?, + LIST_COMPREHENSION => self.list_comp(rule.node)?, + DICTIONARY => self.dictionary(rule.node)?, + DICTIONARY_COMPREHENSION => self.dictionary_comprehension(rule.node)?, + SET => self.set(rule.node)?, + SET_COMPREHENSION => self.set_comp(rule.node)?, + TUPLE => self.tuple(rule.node)?, + PARENTHESIZED_EXPRESSION => return self.parenthesized_expression(rule.node), + GENERATOR_EXPRESSION => self.generator_expression(rule.node)?, + ELLIPSIS => self.constant(ConstantDesc::Ellipsis), + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected token: {:?}", + node + )), + node, + )); + } + }, + _ => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!("{:?}", node)), + node, + )); + } + }; + Ok(self.parser.new_expr(exprdesc, node)) + } + + // parenthesized_expression: $ => prec(PREC.parenthesized_expression, seq( + // '(', + // choice($.expression, $.yield), + // ')' + // )), + fn parenthesized_expression<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let middle_node = &node + .child(self.filtered_cst, 1) + .expect("middle node of parenthesized_expression"); + if middle_node.kind() == "yield" { + let yield_desc = self.yield_statement(middle_node)?; + Ok(self.parser.new_expr(yield_desc, middle_node)) + } else { + self.expression(middle_node) + } + } + + // named_expression: $ => seq( + // field('name', $._named_expresssion_lhs), + // ':=', + // field('value', $.expression) + // ), + fn named_expression<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let target_node = &node + .child_by_field_name(self.filtered_cst, "name") + .expect("named_expression missing name field"); + + self.set_expression_context(ExprContext::Store); + let target = self.expression(target_node)?; + self.pop_expression_context(); + + let value_node = &node + .child_by_field_name(self.filtered_cst, "value") + .expect("named_expression missing value field"); + let value = self.expression(value_node)?; + + Ok(ExprDesc::NamedExpr { target, value }) + } + + // list_comprehension: $ => seq( + // '[', + // field('body', $.expression), + // $._comprehension_clauses, + // ']' + // ), + fn list_comp<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut generators = vec![]; + let elt = self.comprehension_core(node, &mut generators)?; + + Ok(ExprDesc::ListComp { elt, generators }) + } + + // set_comprehension: $ => seq( + // '{', + // field('body', $.expression), + // $._comprehension_clauses, + // '}' + // ), + fn set_comp<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut generators = vec![]; + let elt = self.comprehension_core(node, &mut generators)?; + Ok(ExprDesc::SetComp { elt, generators }) + } + + // generator_expression: $ => seq( + // '(', + // field('body', $.expression), + // $._comprehension_clauses, + // ')' + // ), + fn generator_expression<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut generators = vec![]; + let elt = self.comprehension_core(node, &mut generators)?; + Ok(ExprDesc::GeneratorExp { elt, generators }) + } + + // dictionary_comprehension: $ => seq( + // '{', + // field('body', $.pair), + // $._comprehension_clauses, + // '}' + // ), + fn dictionary_comprehension<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut generators = vec![]; + let (key, value) = self.dictionary_pair(node, &mut generators)?; + + Ok(ExprDesc::DictComp { + key, + value, + generators, + }) + } + + fn dictionary_pair<'a>( + &mut self, + node: &'a Node<'a>, + generators: &mut Vec, + ) -> ErrorableResult<(Expr, Expr)> { + //let elt = + let pair_node = node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing pair in dictionary_comprehension"); + + let key_node = pair_node + .child_by_field_name(self.filtered_cst, "key") + .expect("missing key in pair node of dictionary"); + let key = self.expression(key_node)?; + + let value_node = pair_node + .child_by_field_name(self.filtered_cst, "value") + .expect("missing value in pair node of dictionary"); + let value = self.expression(value_node)?; + + self.comprehension_clauses(node, generators)?; + Ok((key, value)) + } + + fn comprehension_core<'a>( + &mut self, + node: &'a Node<'a>, + generators: &mut Vec, + ) -> ErrorableResult { + let body_node = node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in comprehension"); + let elt = self.expression(body_node)?; + + self.comprehension_clauses(node, generators)?; + Ok(elt) + } + + // _comprehension_clauses: $ => seq( + // $.for_in_clause, + // repeat(choice( + // $.for_in_clause, + // $.if_clause + // )) + // ), + fn comprehension_clauses<'a>( + &mut self, + node: &'a Node<'a>, + generators: &mut Vec, + ) -> ErrorableResult<()> { + use ProductionKind::*; + + for child_node in node.named_children(self.filtered_cst) { + //_comprehension_clauses + let child_type = &get_node_type(child_node); + match child_type { + // for_in_clause + NodeType::Production(prod) => match prod.production_kind { + FOR_IN_CLAUSE => { + let comp = self.comprehension_clause(child_node)?; + generators.push(comp); + } + IF_CLAUSE => { + let expr = self.if_clause(child_node)?; + generators.last_mut().unwrap().ifs.push(expr); + } + _ => (), + }, + _ => (), // skip other nodes + } + } + Ok(()) + } + + // _comprehension_clauses: $ => seq( + // $.for_in_clause, + // repeat(choice( + // $.for_in_clause, + // $.if_clause + // )) + // ), + // + // _expression_within_for_in_clause: $ => choice( + // $.expression, + // alias($.lambda_within_for_in_clause, $.lambda) + // ), + // + // for_in_clause: $ => prec.left(seq( + // optional('async'), + // 'for', + // field('left', $._left_hand_side), + // 'in', + // field('right', commaSep1($._expression_within_for_in_clause)), + // optional(',') + // )), + fn comprehension_clause<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let left_node = &node + .child_by_field_name(self.filtered_cst, "left") + .expect("comprehension_clause missing left field"); + + let right_node = &node + .child_by_field_name(self.filtered_cst, "right") + .expect("comprehension_clause missing right field"); + + self.set_expression_context(ExprContext::Store); + let target = self.assign_left_hand_side(left_node)?; + self.pop_expression_context(); + + self.set_expression_context(ExprContext::Load); + let iter = self.expression(right_node)?; // TODO this should call _expression_within_for_in_clause, which takes lambda too + self.pop_expression_context(); + + let ifs = vec![]; + + Ok(Comprehension { + target, + iter, + ifs, + is_async: node.child(self.filtered_cst, 0).unwrap().kind().eq("async"), + }) + } + + // if_clause: $ => seq( + // 'if', + // $.expression + // ), + fn if_clause<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let expr_node = node + .child(self.filtered_cst, 1) + .expect("if_clause missing expression"); + + self.expression(expr_node) + } + + // + // Process Binary Operators + // + // binary_operator: $ => { + // const table = [ + // [prec.left, '+', PREC.plus], + // [prec.left, '-', PREC.plus], + // [prec.left, '*', PREC.times], + // [prec.left, '@', PREC.times], + // [prec.left, '/', PREC.times], + // [prec.left, '%', PREC.times], + // [prec.left, '//', PREC.times], + // [prec.right, '**', PREC.power], + // [prec.left, '|', PREC.bitwise_or], + // [prec.left, '&', PREC.bitwise_and], + // [prec.left, '^', PREC.xor], + // [prec.left, '<<', PREC.shift], + // [prec.left, '>>', PREC.shift], + // ]; + + // return choice(...table.map(([fn, operator, precedence]) => fn(precedence, seq( + // field('left', $.primary_expression), + // field('operator', operator), + // field('right', $.primary_expression) + // )))); + // }, + fn binary_op<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let lhs_node = node + .child_by_field_name(self.filtered_cst, "left") + .expect("missing lhs in binary op"); + let left = self.expression(lhs_node)?; + let operator_node = node + .child_by_field_name(self.filtered_cst, "operator") + .expect("missing operator in binary op"); + let operator = match get_node_type(operator_node) { + NodeType::BinaryOperator(op) => Operator::try_from(op) + .expect("expected NodeType::BinaryOperator to have valid binary operator"), + _ => { + return Err(self.record_recoverable_error( + RecoverableError::MissingOperator(operator_node.kind().into()), + node, + )); + } + }; + let rhs_node = node + .child_by_field_name(self.filtered_cst, "right") + .expect("missing rhs in binary op"); + let right = self.expression(rhs_node)?; + + Ok(ExprDesc::BinOp { + left, + op: operator, + right, + }) + } + + // Process Attribute + // + // attribute: $ => prec(PREC.call, seq( + // field('object', $.primary_expression), + // '.', + // field('attribute', $.identifier) + // )), + fn attribute<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let lhs = node + .child_by_field_name(self.filtered_cst, "object") + .expect("missing left hand side (attribute.object)"); + let lhs_type = get_node_type(lhs); + self.set_expression_context(ExprContext::Load); + let value = self.primary_expression(&lhs_type, lhs)?; + self.pop_expression_context(); + let rhs = node + .child_by_field_name(self.filtered_cst, "attribute") + .expect("missing right hand side (attribute.attribute)"); + let raw_attr = self.get_valid_identifier(rhs); + + // Handle AUTOCOMPLETE token + let attr = if raw_attr == AUTOCOMPLETE_TOKEN { + String::from("") + } else { + raw_attr + }; + + Ok(ExprDesc::Attribute { + value, + attr, + ctx: self.get_expression_context(), + }) + } + + fn set_expression_context(&mut self, ctx: ExprContext) { + self.current_expr_ctx.push(Some(ctx)); + } + + fn pop_expression_context(&mut self) { + self.current_expr_ctx.pop(); + } + + fn get_expression_context(&mut self) -> ExprContext { + match self.current_expr_ctx.last() { + Some(None) => ExprContext::Load, + Some(not_none) => match not_none { + Some(ExprContext::Store) => ExprContext::Store, + Some(ExprContext::Del) => ExprContext::Del, + _ => ExprContext::Load, + }, + _ => ExprContext::Load, + } + } + + // _collection_elements: $ => seq( + // commaSep1(choice( + // $.yield, $.list_splat, $.parenthesized_list_splat, s.expression + // )), + // optional(',') + // ), + fn collection_elements(&mut self, node: &Node, exp_list: &mut Vec) { + for child in node.named_children(self.filtered_cst) { + // it is ok to leave out a subexpression if there is a problem with it + match child.kind() { + "yield" => { + // I don't think we should support yield here + self.record_recoverable_error( + RecoverableError::UnimplementedStatement(format!("{:?}", &child)), + child, + ); + } + "list_splat" => { + match self.starred(child) { + Ok(starred) => exp_list.push(self.parser.new_expr(starred, child)), + _ => (), + }; + } + "parenthesized_list_splat" => { + // TODO: add support for parenthesized_list_splat + self.record_recoverable_error( + RecoverableError::UnimplementedStatement(format!("{:?}", &child)), + child, + ); + } + _ => { + match self.expression(child) { + Ok(arg) => exp_list.push(arg), + _ => (), + }; + } + }; + } + } + + // Process List expression + // list: $ => seq( + // '[', + // optional($._collection_elements), + // ']' + // ), + fn list<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut expressions = vec![]; + self.collection_elements(node, &mut expressions); + + Ok(ExprDesc::List { + elts: expressions, + ctx: self.get_expression_context(), + }) + } + + // Process Tuple expression + // tuple: $ => seq( + // '(', + // optional($._collection_elements), + // ')' + // ), + fn tuple<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut expressions = vec![]; + self.collection_elements(node, &mut expressions); + + Ok(ExprDesc::Tuple { + elts: expressions, + ctx: self.get_expression_context(), + }) + } + + // Process Set expression + // set: $ => seq( + // '{', + // $._collection_elements, + // '}' + // ), + fn set<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let mut expressions = vec![]; + self.collection_elements(node, &mut expressions); + + Ok(ExprDesc::Set(expressions)) + } + + //Process Set expression + fn if_exp<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let body_node = node + .child(self.filtered_cst, 0) + .expect("if_exp missing body"); + let body = self.expression(body_node)?; + + let test_node = node + .child(self.filtered_cst, 2) + .expect("if_exp missing test"); + let test = self.expression(test_node)?; + + let orelse_node = node + .child(self.filtered_cst, 4) + .expect("if_exp missing orelse"); + let orelse = self.expression(orelse_node)?; + + Ok(ExprDesc::IfExp { test, body, orelse }) + } + + // dictionary: $ => seq( + // '{', + // optional(commaSep1(choice($.pair, $.dictionary_splat))), + // optional(','), + // '}' + // ), + // + // dictionary_splat: $ => seq( + // '**', + // $.expression + // ), + fn dictionary(&mut self, node: &Node) -> ErrorableResult { + use ProductionKind::*; + + let mut keys = vec![]; + let mut values = vec![]; + + for pair_or_dictionary_splat in node.named_children(self.filtered_cst) { + let pair_or_dictionary_splat_type = get_node_type(pair_or_dictionary_splat); + match &pair_or_dictionary_splat_type { + NodeType::Production(param) => match ¶m.production_kind { + PAIR => { + let key_node = pair_or_dictionary_splat + .child(self.filtered_cst, 0) + .ok_or_else(|| { + self.record_recoverable_error( + RecoverableError::MissingChild, + pair_or_dictionary_splat, + ) + })?; + + let key = self.expression(key_node)?; + keys.push(Some(key)); + + let value_node = pair_or_dictionary_splat + .child(self.filtered_cst, 2) + .ok_or_else(|| { + self.record_recoverable_error( + RecoverableError::MissingChild, + pair_or_dictionary_splat, + ) + })?; + + let value = self.expression(value_node)?; + values.push(value); + } + DICTIONARY_SPLAT => { + let value_node = pair_or_dictionary_splat + .child(self.filtered_cst, 1) + .ok_or_else(|| { + self.record_recoverable_error( + RecoverableError::MissingChild, + pair_or_dictionary_splat, + ) + })?; + + keys.push(None); + let value = self.expression(value_node)?; + values.push(value); + } + _ => { + self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected dictionary production: {:?}", + param + )), + node, + ); + } + }, + _ => { + self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected dictionary production: {:?}", + node + )), + node, + ); + } + } + } + + Ok(ExprDesc::Dict { keys, values }) + } + + // Process Call + // + // call: $ => prec(PREC.call, seq( + // field('function', $.primary_expression), + // field('arguments', choice( + // $.generator_expression, + // $.argument_list + // )) + // )), + fn call<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let function = node + .child_by_field_name(self.filtered_cst, "function") + .expect("missing function in call"); + + let function_type = &get_node_type(function); + let func = self.primary_expression(function_type, function)?; + + let argument_or_generator = node + .child_by_field_name(self.filtered_cst, "arguments") + .expect("missing arguments (or generator) in call"); + + let mut args = vec![]; + let mut keywords = vec![]; + + match argument_or_generator.kind() { + "generator_expression" => { + let generator_expression = self.generator_expression(argument_or_generator)?; + args.push( + self.parser + .new_expr(generator_expression, argument_or_generator), + ); + } + _ => { + self.argument_list(argument_or_generator, &mut args, &mut keywords)?; + } + } + + Ok(ExprDesc::Call { + func, + args, + keywords, + }) + } + + // Process Argument List + // + // argument_list: $ => seq( + // '(', + // optional(commaSep1( + // choice( + // $.expression, + // $.list_splat, + // $.dictionary_splat, + // alias($.parenthesized_list_splat, $.parenthesized_expression), + // $.keyword_argument + // ) + // )), + // optional(','), + // ')' + // ), + fn argument_list( + &mut self, + node: &Node, + arg_list: &mut Vec, + keyword_list: &mut Vec, + ) -> ErrorableResult<()> { + use ProductionKind::*; + + for child in node.named_children(self.filtered_cst) { + let child_type = get_node_type(child); + + match &child_type { + NodeType::Production(rule) => match &rule.production_kind { + //TODO: alias($.parenthesized_list_splat, $.parenthesized_expression), - what does this resolve to? + LIST_SPLAT => { + let starred = self.starred(child)?; + arg_list.push(self.parser.new_expr(starred, child)); + } + DICTIONARY_SPLAT => { + let keywordarg = self.dictionary_splat(child)?; + keyword_list.push(keywordarg); + } + KEYWORD_ARGUMENT => { + let keywordarg = self.keyword_argument(child)?; + keyword_list.push(keywordarg); + } + _ => { + let expr = self.expression(child)?; + arg_list.push(expr); + } + }, + _ => { + self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "unexpected argument handling: {:?}", + child_type + )), + child, + ); + } + }; + } + Ok(()) + } + + // list_splat: $ => seq( + // '*', + // $.expression, + // ), + fn starred<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let identifier = node + .child(self.filtered_cst, 1) + .expect("missing identifier in starred"); + + let value = self.expression(identifier)?; + + Ok(ExprDesc::Starred { + value, + ctx: self.get_expression_context(), + }) + } + + // subscript: $ => prec(PREC.call, seq( + // field('value', $.primary_expression), + // '[', + // commaSep1(field('subscript', choice($.expression, $.slice))), + // optional(','), + // ']' + // )), + // + // slice: $ => seq( + // optional($.expression), + // ':', + // optional($.expression), + // optional(seq(':', optional($.expression))) + // ), + fn subscript<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let value_node = node + .child_by_field_name(self.filtered_cst, "value") + .expect("value field in subscript"); + + // subscripts and their slies are always loaded, even if they are on the lhs of an assignment operation + self.set_expression_context(ExprContext::Load); + let value = self.expression(value_node)?; + + // if many slices, then wrapped inside a Tuple, otherwise slice on its own if only one + let mut slices: Vec = vec![]; + + for subscript_node in node.children_by_field_name(self.filtered_cst, "subscript") { + let mut slice_elements: Vec> = vec![]; + + let mut last_expr: Option = None; + + if subscript_node.kind() == "slice" { + for slice_child in subscript_node.children(self.filtered_cst) { + // if : or something else + let token = self.get_valid_identifier(slice_child); + if token == ":" { + slice_elements.push(last_expr); + last_expr = None; + } else { + last_expr = Some(self.expression(slice_child)?); + } + } + slice_elements.push(last_expr); + + slices.push(self.parser.new_expr( + ExprDesc::Slice { + lower: slice_elements.remove(0), + upper: { + if slice_elements.is_empty() { + None + } else { + slice_elements.remove(0) + } + }, + step: { + if slice_elements.is_empty() { + None + } else { + slice_elements.remove(0) + } + }, + }, + subscript_node, + )); + } else { + // single expression + slices.push(self.expression(subscript_node)?); + } + } + + let ends_in_comma = node + .child(self.filtered_cst, node.child_count() - 2) + .unwrap() + .kind() + == ","; + + let slice = if !ends_in_comma && slices.len() == 1 { + slices.pop().expect("should be at least one slice") + } else { + // if ends in comma or if there are more than one slice + let start_position = node + .child(self.filtered_cst, 2) + .expect("first element of tuple") + .start_position(); + + let end_position = node + .child(self.filtered_cst, node.child_count() - 2) + .expect("']' node in subscript") + .end_position(); + + Expr::new( + ExprDesc::Tuple { + elts: slices, + ctx: self.get_expression_context(), + }, + start_position.row as isize + 1, + start_position.column as isize, + end_position.row as isize + 1, + end_position.column as isize, + ) + }; + + self.pop_expression_context(); + + Ok(ExprDesc::Subscript { + value, + slice, + ctx: self.get_expression_context(), + }) + } + + // dictionary_splat: $ => seq( + // '**', + // $.expression + // ), + fn dictionary_splat<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let identifier = node + .child(self.filtered_cst, 1) + .expect("missing identifier in dictionary_splat"); + + let value = self.expression(identifier)?; + + //Ok(Box::new(DictionaryFuncArg::new( + Ok(AstKeyword::new(None, value, node)) + } + + // keyword_argument: $ => seq( + // field('name', choice($.identifier, $.keyword_identifier, alias("match", $.identifier))), + // '=', + // field('value', $.expression) + // ), + fn keyword_argument<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let lhs = node + .child_by_field_name(self.filtered_cst, "name") + .expect("missing lhs in keyword_argument"); + // TODO: keywords (await and async) are permitted in this location but + // we use get_valid_identifier anyway as it would be strange for anyone + // to be giving a variable name (await and async) in real code. + // If this turns out to be a problem then we can add a modifed version + // of get_valid_identifier that permits await and async to be used as + // identifiers + let arg = self.get_valid_identifier(lhs); + + let rhs = node + .child_by_field_name(self.filtered_cst, "value") + .expect("missing rhs in keyword_argument"); + + let value = self.expression(rhs)?; + + //Ok(Box::new(DictionaryFuncArg::new( + Ok(AstKeyword::new(Some(arg), value, node)) + } + + // Process a Comparison Operator + // comparison_operator: $ => prec.left(PREC.compare, seq( + // $.primary_expression, + // repeat1(seq( + // field('operators', + // choice( + // '<', + // '<=', + // '==', + // '!=', + // '>=', + // '>', + // '<>', + // 'in', + // alias(seq('not', 'in'), 'not in'), + // 'is', + // alias(seq('is', 'not'), 'is not') + // )), + // $.primary_expression + // )) + // )), + fn comparison_operator<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + // we have to do some hoo haa re skipping nodes and reading ahead to accommodate the + // fact that `is not` and `not in` are represented as two separate sets of nodes in the cst + + let mut left = None; + let mut ops = vec![]; + let mut comparators = vec![]; + + // we need to examine more than one item so in a vector is needed + let mut all_items = vec![]; + + for child in node.children(self.filtered_cst) { + all_items.push(child); + } + let mut next_itr = all_items.iter(); + next_itr.next(); + let mut skip_next = false; + for child in all_items.iter() { + if skip_next { + skip_next = false; + continue; + } + let child_type = &get_node_type(child); + match child_type { + NodeType::Production(_) => match left { + // comparitor + None => left = Some(self.primary_expression(child_type, child)?), + Some(_) => comparators.push(self.primary_expression(child_type, child)?), + }, + _ => { + // must be an operator + if let Some(cmp_operator) = get_comp_op(child_type) { + ops.push(cmp_operator); + + match cmp_operator { + Cmpop::IsNot | Cmpop::NotIn => { + skip_next = true; + } + _ => (), + } + } + } + } + } + + Ok(ExprDesc::Compare { + left: left + .ok_or_else(|| self.record_recoverable_error(RecoverableError::MissingLhs, node))?, + ops, + comparators, + }) + } + + // not_operator: $ => prec(PREC.not, seq( + // 'not', + // field('argument', $.expression) + // )), + fn not_operator<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let arg = node + .child_by_field_name(self.filtered_cst, "argument") + .expect("missing argument in not operator"); + let operand = self.expression(arg)?; + + Ok(ExprDesc::UnaryOp { + op: Unaryop::Not, + operand, + }) + } + + // await: $ => prec(PREC.unary, seq( + // 'await', + // $.expression + // )), + fn await_expr<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let arg = node + .child(self.filtered_cst, 1) + .expect("missing argument in await"); + let arg = self.expression(arg)?; + + Ok(ExprDesc::Await(arg)) + } + + // lambda_within_for_in_clause: $ => seq( + // 'lambda', + // field('parameters', optional($.lambda_parameters)), + // ':', + // field('body', $._expression_within_for_in_clause) + // ), + // + // lambda: $ => prec(PREC.lambda, seq( + // 'lambda', + // field('parameters', optional($.lambda_parameters)), + // ':', + // field('body', $.expression) + // )), + fn lambda<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let args = match node.child_by_field_name(self.filtered_cst, "parameters") { + Some(params_node) => self.get_parameters(params_node)?, + _ => Arguments { + posonlyargs: vec![], + args: vec![], + vararg: None, + kwonlyargs: vec![], + kw_defaults: vec![], + kwarg: None, + defaults: vec![], + }, + }; + + let body_node = node + .child_by_field_name(self.filtered_cst, "body") + .expect("missing body in lambda"); + let body = self.expression(body_node)?; + + Ok(ExprDesc::Lambda { args, body }) + } + + // boolean_operator: $ => choice( + // prec.left(PREC.and, seq( + // field('left', $.expression), + // field('operator', 'and'), + // field('right', $.expression) + // )), + // prec.left(PREC.or, seq( + // field('left', $.expression), + // field('operator', 'or'), + // field('right', $.expression) + // )) + // ), + fn bool_op<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let op_node = node + .child_by_field_name(self.filtered_cst, "operator") + .expect("missing operator in unary operator"); + let op_type = get_node_type(op_node); + let operator = match op_type { + NodeType::Keyword(Keyword::AND) => Boolop::And, + NodeType::Keyword(Keyword::OR) => Boolop::Or, + _ => panic!("unexpected boolean operator node {:?}", op_type), + }; + + let mut values: Vec = vec![]; + + for child_name in &["left", "right"] { + let child_node = node + .child_by_field_name(self.filtered_cst, child_name) + .expect("missing child node in boolean_operator"); + let child_node_expression = self.expression(child_node)?; + + if let ExprDesc::BoolOp { op: child_op, .. } = &*child_node_expression.desc { + if child_node.kind() != "parenthesized_expression" && child_op == &operator { + // Consecutive operations with the same operator, such as a + // or b or c, are collapsed into one node with several + // values. Unless child node is wrapped up within a param () + // in which case it is not collapsed. e.g. + // a or b or c <- collapsed + // a or (b or c) < not collapsed + + if let ExprDesc::BoolOp { + values: child_values, + .. + } = *child_node_expression.desc + { + values.extend(child_values); + } + + continue; + } + } + values.push(child_node_expression); + } + + Ok(ExprDesc::BoolOp { + op: operator, + values, + }) + } + + // unary_operator: $ => prec(PREC.unary, seq( + // field('operator', choice('+', '-', '~')), + // field('argument', $.primary_expression) + // )), + fn unary_op<'a>(&mut self, node: &'a Node<'a>) -> ErrorableResult { + let operator_node = node + .child_by_field_name(self.filtered_cst, "operator") + .expect("missing operator in unary operator"); + let operator_type = get_node_type(operator_node); + let operator = match operator_type { + NodeType::BinaryOperator(BinaryOperator::MINUS) => Unaryop::USub, + NodeType::BinaryOperator(BinaryOperator::PLUS) => Unaryop::UAdd, + NodeType::BinaryOperator(BinaryOperator::TILDE) => Unaryop::Invert, + _ => panic!("unexpected unary operator node {:?}", operator_type), + }; + + let arg = node + .child_by_field_name(self.filtered_cst, "argument") + .expect("missing argument in not operator"); + let arg_type = get_node_type(arg); + let operand = self.primary_expression(&arg_type, arg)?; + + Ok(ExprDesc::UnaryOp { + op: operator, + operand, + }) + } + + // + // + // AST node constructors + // + // + + // none: $ => 'None', + fn none(&mut self) -> ExprDesc { + ExprDesc::Constant { + value: None, + kind: None, + } + } + + fn constant(&mut self, const_value: ConstantDesc) -> ExprDesc { + ExprDesc::Constant { + value: Some(const_value), + kind: None, + } + } + + /// replace all {{ with { and }} with } + fn tidy_double_braces(&mut self, from_string: String) -> String { + from_string.replace("{{", "{").replace("}}", "}") + } + + fn is_triple_quote_multiline(&mut self, string: &str) -> bool { + // possible to have "\"" - double brackets inside double brackets as input + string.starts_with("\"\"\"") && string.ends_with("\"\"\"") && string.len() >= 6 + || string.starts_with("\'\'\'") && string.ends_with("\'\'\'") && string.len() >= 6 + || string.starts_with("f\"\"\"") && string.ends_with("\"\"\"") && string.len() >= 7 + || string.starts_with("f\'\'\'") && string.ends_with("\'\'\'") && string.len() >= 7 + } + + /// multiline f strings are interesting and require some giggling around so + /// that we can consistantly extract substring strings from the string. + /// Essentially we must: + /// - Offset 2 extra chars off start of String (""" is 2 more chars wider than ") + /// - remove newlines and do some offset calculations + /// - keep track of column offsets on a per line basis + fn format_multiline_string_node_text_inplace( + &mut self, + node_text: &mut String, + base_row: usize, + prev_idx: &mut usize, + multiline_offsets: &mut HashMap, + ) { + let mut cur_row = base_row; + multiline_offsets.insert(cur_row, 0); + // move chars across one at a time and update offsets as approperiate + let mut new_node_text = String::from(""); + let mut prev_char_is_backslash = false; + + for ch in node_text.chars() { + if ch == '\n' { + if !prev_char_is_backslash { + new_node_text.push('\\'); + new_node_text.push('n'); + } else { + new_node_text.pop(); + } + + cur_row += 1; + multiline_offsets.insert(cur_row, new_node_text.len()); + } else { + new_node_text.push(ch); + } + prev_char_is_backslash = ch == '\\'; + } + node_text.clear(); + node_text.push_str(new_node_text.as_str()); + if self.is_triple_quote_multiline(node_text) { + *prev_idx += 2; + } + } + + fn handle_format_string_escape_sequence(&mut self, maybe_escape_sequence: &Node) -> usize { + let escape_sequence = self.get_text(maybe_escape_sequence); + if escape_sequence.to_uppercase().starts_with("\\U") { + let escape_sequence = self.get_text(maybe_escape_sequence); + let unicode = u32::from_str_radix(&escape_sequence[2..], 16).unwrap(); + + // correctly determine the amount to offset based on the number of bytes consumed by the unicode character... + // see also: https://en.wikipedia.org/wiki/UTF-8#Encoding + match char::from_u32(unicode).unwrap().len_utf8() { + 2 => 4, + 4 => 6, + _ => 3, + } + } else if escape_sequence.starts_with("\\x") { + 2 + } else { + 0 + } + } + + /// walk all interpolated nodes and + /// push each one to expressions as FormattedValue's + /// push any intervening string chunks to expressions as strings + /// but watch out for unicode escape_sequences as these are to be treated as an offset + fn handle_format_string_interpolation_node_inplace<'a>( + &mut self, + maybe_interpolation_node: &'a Node<'a>, + expressions: &mut Vec, + base_col: usize, + base_row: usize, + unicode_offset: &mut usize, + unicode_offset_since_last_interpolation: &mut usize, + prev_idx: &mut usize, + is_multiline: bool, + node_text: &str, + apostrophe_or_quote: &String, + multiline_offsets: &HashMap, + current_row: &mut Option, + prev_end_row: &mut usize, + ) -> ErrorableResult<()> { + let start_row = maybe_interpolation_node.start_position().row; + + // unicode_offset only applies to entries on the same row as the unicode character + // after this the offset should no longer apply: + if let Some(some_current_row) = current_row { + if start_row != *some_current_row { + *unicode_offset = 0; + *unicode_offset_since_last_interpolation = 0; + *current_row = Some(start_row); + } + } else { + *current_row = Some(start_row); + } + + if maybe_interpolation_node.kind() == "string_content" { + for maybe_escape_sequence in maybe_interpolation_node.named_children(self.filtered_cst) + { + if maybe_escape_sequence.kind() == "escape_sequence" { + let offset = self.handle_format_string_escape_sequence(maybe_escape_sequence); + *unicode_offset += offset; + *unicode_offset_since_last_interpolation += offset; + } + } + } else if maybe_interpolation_node.kind() == "interpolation" { + let end_row = maybe_interpolation_node.end_position().row; + let mut start_col = maybe_interpolation_node.start_position().column; + let mut end_col = maybe_interpolation_node.end_position().column; + + start_col -= *unicode_offset; + end_col -= *unicode_offset; + + if is_multiline && start_row > base_row { + // if multiline, we need line column offset adjustment + // might be a CPython bug + start_col += multiline_offsets.get(&start_row).unwrap(); + end_col += multiline_offsets.get(&end_row).unwrap(); + } else if is_multiline && start_row == base_row && start_row != end_row { + // if multiline and interpolation brackets begin in first line and + // end in further lines, we need line column adjustment for ending row + start_col -= base_col; + end_col += multiline_offsets.get(&end_row).unwrap(); + } else { + // single line f-literal or first line of multiline f-literal + // => decrease by code before the f-literal + start_col -= base_col; + end_col -= base_col; + } + + // add next FormattedValue corresponding to {} region + let interpolation_expression = maybe_interpolation_node + .child(self.filtered_cst, 1) + .expect("expression node of interpolation node"); + + let mut format_spec: Option = None; + let mut conversion: Option = Some(-1); + let mut has_equals = false; + + // format_specifier and/or type_conversion may be specified for interpolation_node + self.extract_interpolation_node_optionals( + maybe_interpolation_node, + &mut format_spec, + &mut conversion, + &mut has_equals, + ); + + let value = self.expression(interpolation_expression)?; + let start_offset = if base_row == start_row { base_col } else { 0 }; + let end_offset = if base_row == end_row { base_col } else { 0 }; + if start_col > *prev_idx { + // indicates that there is a string at one of the following two locations + // start of the f-string before the first {} (formatted value) + // in between two {}'s + // strings after the last {} are handled after iterating through + // the interpolation nodes + let mut string_before_tidy_braces = + self.tidy_double_braces(node_text[*prev_idx..start_col].to_string()); + + // foo{x=} expands to foox={x}, so the end position of the prefix string needs to be extended + let mut equals_offset = 0; + if has_equals { + let interpolation_contents_equals = interpolation_expression + .utf8_text(self.parser.code.as_bytes()) + .expect("Could not fetch param name"); + string_before_tidy_braces = + string_before_tidy_braces + interpolation_contents_equals + "="; + equals_offset = interpolation_contents_equals.len() as isize + 2; + } + // in multiline string allowed to have " inside """ """ + // so we have to "\"" or '\'' respectively to correctly preprocess substring + if is_multiline { + string_before_tidy_braces = string_before_tidy_braces.replace( + apostrophe_or_quote, + &format!("{}{}", "\\", apostrophe_or_quote), + ); + } + let string_desc = self.process_string( + format!( + "{}{}{}", + apostrophe_or_quote, string_before_tidy_braces, apostrophe_or_quote + ), + maybe_interpolation_node, + ); + let start_offset = if base_row == *prev_end_row { + base_col + } else { + 0 + }; + // unicode_offset includes the unicode characters in the substring immediately preceding the current interpolation + let prefix_unicode_offset = + *unicode_offset - *unicode_offset_since_last_interpolation; + expressions.push(Expr::new( + string_desc, + *prev_end_row as isize + 1, + (*prev_idx - multiline_offsets.get(prev_end_row).unwrap_or(&0) + + start_offset + + prefix_unicode_offset) as isize, + start_row as isize + 1, + maybe_interpolation_node.start_position().column as isize + equals_offset, + )); + } else if has_equals { + // Create new const expression for cases like {x=} with no preceding literal substring + // the new const expression has the same position as the variable name except the ending + // column is incremented by 1 to account for the = + let expr = interpolation_expression + .utf8_text(self.parser.code.as_bytes()) + .expect("Could not fetch param name") + .to_string() + + "="; + let expr = self.string(format!("'{}'", expr), false); + expressions.push(Expr::new( + expr, + value.lineno, + value.col_offset, + value.end_lineno.unwrap(), + value.end_col_offset.unwrap() + 1, + )); + } + let formatted_value = Expr::new( + ExprDesc::FormattedValue { + value, + conversion, + format_spec, + }, + start_row as isize + 1, + (start_col - multiline_offsets.get(&start_row).unwrap_or(&0) + + start_offset + + *unicode_offset) as isize, + end_row as isize + 1, + (end_col - multiline_offsets.get(&end_row).unwrap_or(&0) + + end_offset + + *unicode_offset) as isize, + ); + expressions.push(formatted_value); + *prev_end_row = end_row; + *prev_idx = end_col; + *unicode_offset_since_last_interpolation = 0; + } + Ok(()) + } + + // + // string: $ => seq( + // field('prefix', alias($._string_start, '"')), + // repeat(choice( + // field('interpolation', $.interpolation), + // field('string_content', $.string_content) + // )), + // field('suffix', alias($._string_end, '"')) + // ), + // + // + // string_content: $ => prec.right(0, repeat1( + // choice( + // $._escape_interpolation, + // $.escape_sequence, + // $._not_escape_sequence, + // $._string_content + // ))), + // + // interpolation: $ => seq( + // token.immediate('{'), + // field('expression', $._f_expression), + // optional('='), + // optional(field('type_conversion', $.type_conversion)), + // optional(field('format_specifier', $.format_specifier)), + // '}' + // ), + // ), + // origin_node will be different from format_node where the format string exists within + // a concatenated string + // 1. Check if this f string is multiline + // 2. Calculate offsets for each row in multiline string + // 3. Iterate by string collecting: string before {}, strings in {} and strings after + // 4. All subparts pushed respectively to expressions + fn format_string<'a>( + &mut self, + format_node: &'a Node<'a>, + origin_node: &'a Node<'a>, + node_text: String, + ) -> ErrorableResult { + let mut expressions: Vec = vec![]; + + let quotes = ['\'', '"']; + let quote_idx = node_text.chars().position(|c| quotes.contains(&c)).unwrap(); + let apostrophe_or_quote = node_text[quote_idx..quote_idx + 1].to_string(); + + let mut prev_idx = string_prefix(&node_text).len() + 1; + let mut node_text = node_text; + let mut multiline_offsets = HashMap::new(); + let base_row = format_node.start_position().row; + let base_col = format_node.start_position().column; + + let is_multiline = node_text.contains('\n') || self.is_triple_quote_multiline(&node_text); + if is_multiline { + self.format_multiline_string_node_text_inplace( + &mut node_text, + base_row, + &mut prev_idx, + &mut multiline_offsets, + ); + } + + let mut has_interpolation_nodes = false; + + let mut unicode_offset: usize = 0; + let mut unicode_offset_since_last_interpolation: usize = 0; + let mut current_row = None; + let mut prev_end_row = base_row; + for interpolation_node in format_node.named_children(self.filtered_cst) { + if interpolation_node.kind() == "interpolation" { + has_interpolation_nodes = true; + } + self.handle_format_string_interpolation_node_inplace( + interpolation_node, + &mut expressions, + base_col, + base_row, + &mut unicode_offset, + &mut unicode_offset_since_last_interpolation, + &mut prev_idx, + is_multiline, + &node_text, + &apostrophe_or_quote, + &multiline_offsets, + &mut current_row, + &mut prev_end_row, + )?; + } + // adjusted_node_text is only required in case if there is leftover string + // dropping last " symbol + let mut adjusted_node_text = node_text[..node_text.len() - 1].to_string(); + if is_multiline { + // the characters used to demarcate the end of the string are + // two characters wider, so we take 2 away: """ vs " + adjusted_node_text = adjusted_node_text[..adjusted_node_text.len() - 2].to_string(); + } + + if adjusted_node_text.len() > prev_idx { + let expr = if has_interpolation_nodes { + // add remainder of string as node at end of format string + let mut after_last_tidy_braces = + self.tidy_double_braces(adjusted_node_text[prev_idx..].to_string()); + // in multiline string allowed to have " inside """ """ + // so we have to "\"" or '\'' respectively to correctly preprocess substring + if is_multiline { + after_last_tidy_braces = after_last_tidy_braces.replace( + &apostrophe_or_quote, + &format!("{}{}", "\\", apostrophe_or_quote), + ); + } + let string_desc = self.process_string( + format!( + "{}{}{}", + apostrophe_or_quote, after_last_tidy_braces, apostrophe_or_quote + ), + origin_node, + ); + let start_offset = if prev_end_row == base_row { + base_col + } else { + 0 + }; + // don't add the unicode characters inside the current substring to the start position + let prefix_unicode_offset = + unicode_offset - unicode_offset_since_last_interpolation; + let end_offset = if is_multiline { 3 } else { 1 }; + Expr::new( + string_desc, + prev_end_row as isize + 1, + (prev_idx + prefix_unicode_offset + - *multiline_offsets.get(&prev_end_row).unwrap_or(&0) + + start_offset) as isize, + format_node.end_position().row as isize + 1, + format_node.end_position().column as isize - end_offset, + ) + } else { + // no interpolation nodes, just treat as normal string and cut of f from start + let normal_string = self.tidy_double_braces(node_text[1..].to_string()); + let string_desc = self.process_string(normal_string, format_node); + let start_offset = if is_multiline { 4 } else { 2 }; + let end_offset = if is_multiline { 3 } else { 1 }; + Expr::new( + string_desc, + format_node.start_position().row as isize + 1, + start_offset + format_node.start_position().column as isize, + format_node.end_position().row as isize + 1, + format_node.end_position().column as isize - end_offset, + ) + }; + + expressions.push(expr); + } + + Ok(ExprDesc::JoinedStr(expressions)) + } + + /// Interpolation nodes can contain: + /// a conversion is an integer: + /// * -1: no formatting + /// * 115: !s string formatting + /// * 114: !r repr formatting + /// * 97: !a ascii formatting + /// format_spec is a JoinedStr node representing the formatting of the value. + /// Both conversion and format_spec can be set at the same time. + fn extract_interpolation_node_optionals( + &mut self, + interpolation_node: &Node, + format_spec: &mut Option, + conversion: &mut Option, + has_equals: &mut bool, + ) { + let interpolation_node_count = interpolation_node.child_count(); + *has_equals = false; + if interpolation_node_count > 3 { + for node_id in 2..(interpolation_node_count - 1) { + let interpolation_component_node = &interpolation_node + .child(self.filtered_cst, node_id) + .expect("interpolation_node child"); + match interpolation_component_node.kind() { + "format_specifier" => { + let mut format_spec_expressions = vec![]; + let interpolation_node_str = + self.get_text(interpolation_component_node)[1..].to_string(); + let string_desc = + self.string(format!("'{}'", interpolation_node_str,), false); + format_spec_expressions.push(Expr::new( + string_desc, + interpolation_component_node.start_position().row as isize + 1, + // +1 to skip the colon + interpolation_component_node.start_position().column as isize + 1, + interpolation_component_node.end_position().row as isize + 1, + interpolation_component_node.end_position().column as isize, + )); + *format_spec = Some(self.parser.new_expr( + ExprDesc::JoinedStr(format_spec_expressions), + interpolation_component_node, + )); + } + "type_conversion" => { + // the following magic numbers are defined in the Python + // language spec: + // https://docs.python.org/3.10/library/ast.html#ast.FormattedValue + *conversion = + Some(match self.get_text(interpolation_component_node).as_str() { + "!s" => 115, + "!r" => 114, + "!a" => 97, + _ => -1, + }); + } + "=" => *has_equals = true, + _ => (), + } + } + + // Only set conversion by = if neither explicit conversion nor explicit formatters are set. + if *has_equals && format_spec.is_none() && conversion == &mut Some(-1isize) { + *conversion = Some(114) + } + } + } + + /// create one large string from a number contained in a Vec + /// if any ' 's are within the strings then all are wrapped in double + /// quotes + fn sew_strings_together(&mut self, strings: Vec, conc_str_node: &Node) -> ExprDesc { + let mut one_big_string = String::from(""); + let mut needs_doublequote = false; + let mut is_previous_token_byte = false; + let mut first = true; + + for child_string in strings { + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(astring) | ConstantDesc::ByteStr(astring)), + kind: _, + } = &*child_string.desc + { + let is_byte = match &*child_string.desc { + ExprDesc::Constant { + value: Some(ConstantDesc::ByteStr(_)), + kind: _, + } => true, + _ => false, + }; + + if !first && is_byte != is_previous_token_byte { + self.record_recoverable_error( + RecoverableError::SyntaxError( + "cannot mix bytes and nonbytes literals".to_string(), + ), + conc_str_node, + ); + } + first = false; + is_previous_token_byte = is_byte; + let segment = &astring[1..astring.len() - 1].to_string(); + if segment.contains('\'') { + needs_doublequote = true; + } + one_big_string.push_str(segment); + } + } + + let prefix = if is_previous_token_byte { "b" } else { "" }; + let quote_style = if needs_doublequote { "\"" } else { "'" }; + one_big_string = format!("{}{}{}{}", prefix, quote_style, one_big_string, quote_style); + self.process_string(one_big_string, conc_str_node) + } + + fn extract_concatenated_strings<'a>( + &mut self, + conc_str_node: &'a Node<'a>, + strings: &mut Vec, + ) -> ErrorableResult { + let mut contains_f_string = false; + for child_string_node in conc_str_node.named_children(self.filtered_cst) { + let child_string_expr = self.raw_string(child_string_node, conc_str_node)?; + if let ExprDesc::JoinedStr(_) = child_string_expr { + contains_f_string = true; + } + strings.push(self.parser.new_expr(child_string_expr, child_string_node)); + } + Ok(contains_f_string) + } + + // concatenated_string: $ => seq( + // $.string, + // repeat1($.string) + // ), + /// Concatenated strings are just regular strings which are made up of a number + /// of other strings apread across multiple consecutive lines and + /// delimited by a \ followed by a newline. + /// most of the time, if all nodes are regular strings then we need + /// just return a concatenated string. + /// BUT if any nodes are an f string then return one big concatenated f string + /// must be returned. This is achieved by creating a new f string and adding all + /// f string and regular string components into one large expression list + /// when joining f strings it is expected that string nodes are to be + /// merged together to form one large string at the boundry point + /// f-string([a:FormattedValue, b:FormattedValue, c:str]) + f-string([d:str, e:FormattedValue, f:FormattedValue]) + /// => f-string([a:FormattedValue, b:FormattedValue, concat(c+d):str, e:FormattedValue, f:FormattedValue]) + fn concatenated_string<'a>( + &mut self, + conc_str_node: &'a Node<'a>, + ) -> ErrorableResult { + let mut strings: Vec = vec![]; + let contains_f_string = self.extract_concatenated_strings(conc_str_node, &mut strings)?; + if contains_f_string { + let mut expressions: Vec = vec![]; + + for mut child_string in strings { + if let ExprDesc::JoinedStr(mut child_expressions) = *child_string.desc { + if !expressions.is_empty() && !child_expressions.is_empty() { + let last_item: &Expr = expressions.last().unwrap(); + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(_) | ConstantDesc::ByteStr(_)), + kind: _, + } = &*last_item.desc + { + let to_add_first_item = child_expressions.first().unwrap(); + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(_) | ConstantDesc::ByteStr(_)), + kind: _, + } = &*to_add_first_item.desc + { + // last item and first are strings, so we need to sew these together + let start_line = last_item.lineno; + let start_col = last_item.col_offset; + let end_line = to_add_first_item.end_lineno.unwrap(); + let end_col = to_add_first_item.end_col_offset.unwrap(); + let mut to_sew = vec![]; + to_sew.push(expressions.pop().unwrap()); + to_sew.push(child_expressions.remove(0)); + let sewn_desc = self.sew_strings_together(to_sew, conc_str_node); + expressions.push(Expr::new( + sewn_desc, start_line, start_col, end_line, end_col, + )); + // and the rest of the items can be extended into the expressions list + } + } + } + + expressions.extend(child_expressions); + } else if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(_) | ConstantDesc::ByteStr(_)), + kind: _, + } = &*child_string.desc + { + // sew previous lines together if both string constants + if !expressions.is_empty() { + let last_item = expressions.last().unwrap(); + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(_) | ConstantDesc::ByteStr(_)), + kind: _, + } = &*last_item.desc + { + // last item was a string, so lets sew them together + let start_line = last_item.lineno; + let start_col = last_item.col_offset; + let end_line = child_string.end_lineno.unwrap(); + let end_col = child_string.end_col_offset.unwrap(); + let mut to_sew = vec![]; + to_sew.push(expressions.pop().unwrap()); + to_sew.push(child_string); + let sewn_desc = self.sew_strings_together(to_sew, conc_str_node); + child_string = + Expr::new(sewn_desc, start_line, start_col, end_line, end_col); + } + } + expressions.push(child_string); + } + } + + Ok(ExprDesc::JoinedStr(expressions)) + } else { + Ok(self.sew_strings_together(strings, conc_str_node)) + } + } + + fn raw_string<'a>( + &mut self, + raw_string_node: &'a Node<'a>, + origin_node: &'a Node<'a>, + ) -> ErrorableResult { + // collect escape sequences and parse into corresponding unicode characters + let mut escape_sequences = vec![]; + for string_content_nodes in + raw_string_node.children_by_field_name(self.filtered_cst, "string_content") + { + for child in string_content_nodes.named_children(self.filtered_cst) { + if child.kind() == "escape_sequence" { + let escape_sequence = self.get_text(child); + if escape_sequence.to_uppercase().starts_with("\\U") + || escape_sequence.starts_with("\\x") + { + let escape_code = u32::from_str_radix(&escape_sequence[2..], 16).unwrap(); + let escape_sequence = if escape_code < 32 // unprintable ascii + || escape_code == 92 // backslash + || escape_code == 173 // soft hyphen + || (127..=160).contains(&escape_code) + { + // code corresponds to a non-printable character, or character + // with a special escape sequence. we need to manually create + // the new escape sequence + match escape_code { + 9 => String::from("\\t"), + 10 => String::from("\\n"), + 13 => String::from("\\r"), + 92 => String::from("\\\\"), + _ => format!("\\x{:02x}", escape_code), + } + } else { + let as_unicode = std::char::from_u32(escape_code); + // In cases where escape_code is not a valid u32, it + // seems that CPython formats the unicode character + // as escape_sequence.to_lowercase() so we do the same + match as_unicode { + Some(formatted) => format!("{}", formatted), + None => escape_sequence.to_lowercase(), + } + }; + escape_sequences.push(( + escape_sequence, + child.start_byte() - raw_string_node.start_byte(), + child.end_byte() - raw_string_node.start_byte(), + )); + } + } + } + } + let string_contents = self.escape_decode_text(raw_string_node, &escape_sequences); + let categorization = self.categorize_string(&string_contents, origin_node, false); + + if categorization.is_format { + self.format_string(raw_string_node, origin_node, string_contents) + } else { + Ok(self.process_string(string_contents, origin_node)) + } + } + + /// Retrieves actual text representation of the string, additionally converting any escape + /// sequences (like \xc3, \xXX) found in the previous steps to actual unicode form + /// (unless there are no escape sequences or the string is a byte string) + fn escape_decode_text( + &mut self, + raw_string_node: &Node, + escape_sequences: &[(String, usize, usize)], + ) -> String { + let original_contents = self.get_text(raw_string_node); + + if escape_sequences.is_empty() + || self + .categorize_string(&original_contents, raw_string_node, false) + .is_byte + { + original_contents + } else { + // substitute the new characters + let mut string_contents = String::new(); + let mut left = 0; + for (escape_sequence, start_byte, end_byte) in escape_sequences.iter() { + string_contents.push_str(&original_contents[left..*start_byte]); + string_contents.push_str(escape_sequence); + left = *end_byte; + } + string_contents.push_str(&original_contents[left..]); + string_contents + } + } + + // - Add an extra '\' for non special characters which are escaped (e.g. \c => \\c) + // Equivalent to matching Regex::new(r#"(? + // - Translate hexadecimal characters which are not escaped (e.g. \0 => \x00) + fn process_escaped_chars(&mut self, string_contents: String) -> String { + let mut new_node_text: String = String::from(""); + let mut octal_seq: String = String::from(""); + let mut is_escaped: bool; + let mut prev_backslashes = 0; + + for ch in string_contents.chars() { + is_escaped = prev_backslashes % 2 == 1; + + // Start of a 1-3 escaped digits sequence denoting an octal character to translate e.g. '\1' == '\01' == '\001' => "\x01", + if is_escaped && octal_seq.len() < 3 && ('0'..'8').contains(&ch) { + if octal_seq.is_empty() { + new_node_text.pop(); + } + octal_seq.push(ch); + continue; + // End of octal sequence + } else if is_escaped + && !octal_seq.is_empty() + && (!('0'..'8').contains(&ch) || octal_seq.len() == 3) + { + if let Some(octal_conv) = OCTAL_MAP.get(&octal_seq.parse::().unwrap()) { + new_node_text.push_str(octal_conv); + } + octal_seq = String::from(""); + prev_backslashes = 0; + is_escaped = false; + } + + // Backslash counter + if ch == '\\' { + prev_backslashes += 1; + new_node_text.push(ch); + } else { + // Non special char + if !SPECIAL_CHARS.contains(&ch) { + if is_escaped { + // For non special chars escaped (odd number of '\', add an additional '\' to result in an even number of '\' (not escaped) + new_node_text.push('\\'); + } + new_node_text.push(ch); + // Hexa chars which are not escaped are translated, e.g. '\a' => "\x07", + } else if let Some(hex_str) = HEXA_CONVERSION.get(&ch) { + if is_escaped { + for hex_ch in hex_str.chars() { + new_node_text.push(hex_ch); + } + } else { + new_node_text.push(ch); + } + // Special chars left as is + } else { + new_node_text.push(ch); + } + prev_backslashes = 0; + } + } + + new_node_text.to_string() + } + + /// categorize_string will attempt to figure out what th prefix is of a string + /// Failures are logged as recoverable and the string is otherwise categorized + /// As a vanilla string with no prefix + fn categorize_string( + &mut self, + string_with_prefix: &str, + node: &Node, + record_invalid_prefix: bool, + ) -> StringCategory { + match categorize_string(string_with_prefix) { + Ok(string_category) => string_category, + Err(invalid_string_category_error) => { + if record_invalid_prefix { + self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "Invalid string prefix: {:?}", + invalid_string_category_error.invalid_prefix + )), + node, + ); + } + + StringCategory { + ..Default::default() + } + } + } + } + + /// process_string performs the following: + /// 1. We check if a string is prefixed with a 'b' or 'r', if so + /// this is stripped out and added back as a prefix to the output of the + /// following steps (except 'r' which is thrown away)... + /// 2. We consider '\' at the end of a line, which is treated as a line + /// continuation (ignored), or as a literal '\' for raw strings (prefixed with 'r') + /// 3. We convert multiline strings to single line strings (denoted + /// via single quote marks) and insert newlines with escapes for newlines + /// 4. We remove all quote mark escape characters \' -> ', \" -> " + /// 5. Strings created via double quotes ("") are converted to single + /// quote (''), unless they contain a single quote (') or if they contain both a + /// single quote (') and a double quote (", originally \" but \ is removed in step + /// 4). Whereas strings created with single quotes ('') containing other single + /// quotes but no double quotes (") are converted to double quoted strings. + /// 6. We add escape characters again if needed (' -> \' or " -> \"). In practice, + /// this is relevant only when the the string contains both single (') and double + /// (") quotes. + fn process_string(&mut self, string_contents: String, node: &Node) -> ExprDesc { + // TODO: this method is getting quite unweildly, we should refactor it. + let mut string_contents = string_contents; + let categorization = self.categorize_string(&string_contents, node, true); + + let byte = categorization.is_byte; + let raw = categorization.is_raw; + + if raw || byte { + string_contents = string_contents[1..].to_string(); + } + let double_quote_string = string_contents.starts_with('\"'); + let is_triple_quote = self.is_triple_quote_multiline(&string_contents); + if raw { + string_contents = string_contents.replace('\\', "\\\\"); + } else { + let mut new_string_contents = String::from(""); + let mut prev_backslashes = 0; + for (i, ch) in string_contents.chars().enumerate() { + // Drop \n when prefixed by the line continuation char \ (and drops the continuation char) + // except when the line continuation char is itself escaped (edge case for multiline strings only) + if ch == '\n' && prev_backslashes % 2 == 1 { + new_string_contents.pop(); + } else { + // replace \' by ' and \" by " except at the end + if prev_backslashes > 0 && (ch == '\'' || ch == '"') { + if i < string_contents.len() - 3 + || (!is_triple_quote && i < string_contents.len() - 1) + { + new_string_contents.pop(); + } + } + new_string_contents.push(ch); + } + if ch == '\\' { + prev_backslashes += 1; + } else { + prev_backslashes = 0; + } + } + string_contents = new_string_contents; + } + + string_contents = self.process_escaped_chars(string_contents); + + string_contents = string_contents.replace('\n', "\\n").replace('\t', "\\t"); + // check is line multiline string and replace with single double quote + if self.is_triple_quote_multiline(&string_contents) { + string_contents = string_contents[2..string_contents.len() - 2].to_string(); + } + + string_contents = { + // convert string to being wrapped in '' (or "") unless there are inner ' s (or " s) + if string_contents.starts_with('\"') + && (!string_contents.contains('\'') + || string_contents.contains('\'') + && string_contents[1..string_contents.len() - 1].contains('\"')) + && string_contents.len() > 1 + { + string_contents = string_contents[1..string_contents.len() - 1].to_string(); + format!("'{}'", string_contents) + } else if string_contents.starts_with('\'') + && !string_contents.contains('\"') + && string_contents.len() > 1 + { + // wrap only if there is a ' in the middle of the string + // e.g. '\\'' -> "\\'" + let index: Option = string_contents[1..].find('\'').map(|i| i + 1); + match index { + Some(i) if i > 0 && i < string_contents.len() - 1 => { + string_contents = string_contents[1..string_contents.len() - 1].to_string(); + + format!("\"{}\"", string_contents) + } + _ => string_contents, + } + } else { + string_contents + } + }; + + string_contents = { + if string_contents.starts_with('\"') && string_contents.len() > 1 { + string_contents = string_contents[1..string_contents.len() - 1].to_string(); + string_contents = string_contents.replace('\"', "\\\""); + if !raw && double_quote_string { + // \' revert back to \\' when located in a double quote string + string_contents = string_contents.replace("\\'", "\\\\'"); + } + format!("\"{}\"", string_contents) + } else if string_contents.len() > 1 { + string_contents = string_contents[1..string_contents.len() - 1].to_string(); + string_contents = string_contents.replace('\'', "\\\'"); + if !raw && !double_quote_string { + // \" revert back to \\" when located in a single quote string + string_contents = string_contents.replace("\\\"", "\\\\\""); + } + format!("'{}'", string_contents) + } else { + string_contents + } + }; + + self.string(string_contents, byte) + } + + // string: $ => seq( + // field('prefix', $.string_start), + // repeat(choice( + // field('interpolation', $.interpolation), + // field('string_content', $.string_content) + // )), + // field('suffix', $.string_end) + //), + fn string(&mut self, const_value: String, is_byte_string: bool) -> ExprDesc { + ExprDesc::Constant { + value: Some(if is_byte_string { + ConstantDesc::ByteStr(const_value) + } else { + ConstantDesc::Str(const_value) + }), + kind: None, + } + } + + fn parse_integer_from_str_radix( + &mut self, + const_value: &str, + node: &Node, + radix: u32, + variant_name: &str, + ) -> ErrorableResult { + match isize::from_str_radix(&const_value[2..], radix) { + Ok(value) => Ok(value), + Err(error_msg) => Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "cannot parse integer (Not a binary {:?}): {:?} as {:?}", + variant_name, const_value, error_msg + )), + node, + )), + } + } + + // integer: $ => token(choice( + // seq( + // choice('0x', '0X'), + // repeat1(/_?[A-Fa-f0-9]+/), + // ), + // seq( + // choice('0o', '0O'), + // repeat1(/_?[0-7]+/), + // ), + // seq( + // choice('0b', '0B'), + // repeat1(/_?[0-1]+/), + // ), + // seq( + // repeat1(/[0-9]+_?/), + // choice( + // optional(/[Ll]/), // long numbers + // optional(/[jJ]/) // complex numbers + // ) + // ) + // )), + fn integer(&mut self, node: &Node) -> ErrorableResult { + let const_value = self.get_text(node).replace('_', ""); + + let integer_value = if const_value.starts_with("0b") || const_value.starts_with("0B") { + // binary integer + self.parse_integer_from_str_radix(&const_value, node, 2, "binary")? + } else if const_value.starts_with("0x") || const_value.starts_with("0X") { + // hexadecimal integer + self.parse_integer_from_str_radix(&const_value, node, 16, "hexadecimal")? + } else if const_value.starts_with("0o") || const_value.starts_with("0O") { + // octal integer + self.parse_integer_from_str_radix(&const_value, node, 8, "octal")? + } else { + if const_value.ends_with('j') || const_value.ends_with('J') { + // imaginary part of complex numbers are always parsed like floats + // even when they have an integer component as here + return self.float(node); + } + + match const_value.parse::() { + Ok(value) => value, + Err(ref e) if *e == self.integer_overflow_error => { + // TODO: use ParseIntError.kind() to detect integer overflow of + // parse of const_value when Meta is on rust 2022. + // In rust 2021 ParseIntError.kind is private + // For now, store an overflow Err from parsing a large integer + // Adapted from https://github.com/rust-lang/rust/issues/22639 + // and https://github.com/uutils/coreutils/pull/2882/ + return Ok(ExprDesc::Constant { + value: Some(ConstantDesc::Num(Num::BigInt(const_value))), + kind: None, + }); + } + Err(error_msg) => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "cannot parse integer: {:?} as {:?}", + const_value, error_msg + )), + node, + )); + } + } + }; + + Ok(ExprDesc::Constant { + value: Some(ConstantDesc::Num(Num::Int(integer_value))), + kind: None, + }) + } + + // float: $ => { + // const digits = repeat1(/[0-9]+_?/); + // const exponent = seq(/[eE][\+-]?/, digits) + + // return token(seq( + // choice( + // seq(digits, '.', optional(digits), optional(exponent)), + // seq(optional(digits), '.', digits, optional(exponent)), + // seq(digits, exponent) + // ), + // optional(choice(/[Ll]/, /[jJ]/)) + // )) + // }, + fn float(&mut self, node: &Node) -> ErrorableResult { + let mut const_value = self.get_text(node).replace('_', ""); + + let is_complex = const_value.ends_with('j') || const_value.ends_with('J'); + if is_complex { + const_value = const_value[0..const_value.len() - 1].to_string(); + } + + let float_value = match const_value.parse::() { + Ok(value) => value, + Err(error_msg) => { + return Err(self.record_recoverable_error( + RecoverableError::UnexpectedExpression(format!( + "cannot parse float: {:?} as {:?}", + const_value, error_msg + )), + node, + )); + } + }; + + Ok(ExprDesc::Constant { + value: Some(ConstantDesc::Num(if is_complex { + Num::Complex(float_value) + } else { + Num::Float(float_value) + })), + kind: None, + }) + } + + /// + /// Will return an identifier as a String and will record a + /// recoverable error if the identifier is invalid + /// (e.g. keyword, empty space etc) + fn get_valid_identifier(&mut self, node: &Node) -> String { + let identifier: String = self.get_text(node); + self.check_identifier_valid(&identifier, node); + identifier + } + + /// + /// Will record a recoverable error if the identifier + /// is invalid (e.g. keyword, empty space etc) + fn check_identifier_valid(&mut self, identifier: &String, node: &Node) { + if self.python_keywords.contains(identifier) { + self.record_recoverable_error( + RecoverableError::SyntaxError(format!( + "keyword: {:?} cannot be used as identifier", + identifier + )), + node, + ) + } else if identifier.is_empty() { + self.record_recoverable_error( + RecoverableError::SyntaxError( + "empty string cannot be used as identifier".to_string(), + ), + node, + ) + } + } + + fn name(&mut self, node: &Node) -> ExprDesc { + let identifier: String = self.get_valid_identifier(node); + + ExprDesc::Name { + id: identifier, + ctx: self.get_expression_context(), + } + } + + // Get a copy of the source code behind this node. + // For identifiers that is the identifer name. + fn get_text(&self, node: &Node) -> String { + get_node_text(&self.parser.code, node) + } +} + +pub fn get_node_text(code: &String, node: &Node) -> String { + node.utf8_text(code.as_bytes()) + .expect("Invalid Identifier") // deal with errors + .to_string() +} + +fn get_comp_op(operator: &NodeType) -> Option { + match operator { + NodeType::ComparisonOperator(cmp_operator) => Some(match cmp_operator { + ComparisonOperator::LESS_THAN => Cmpop::Lt, + ComparisonOperator::LESS_THAN_EQUAL => Cmpop::LtE, + ComparisonOperator::EQUAL => Cmpop::Eq, + ComparisonOperator::NOT_EQUAL => Cmpop::NotEq, + ComparisonOperator::GREATER_THAN_EQUAL => Cmpop::GtE, + ComparisonOperator::GREATER_THAN => Cmpop::Gt, + ComparisonOperator::IN | ComparisonOperator::NOT | ComparisonOperator::IS => { + panic!("unexpected comparison operator node {:?}", cmp_operator) + } + }), + NodeType::Keyword(Keyword::IN) => Some(Cmpop::In), + NodeType::Keyword(Keyword::IS) => Some(Cmpop::Is), + NodeType::Keyword(Keyword::IS_NOT) => Some(Cmpop::IsNot), + NodeType::Keyword(Keyword::NOT_IN) => Some(Cmpop::NotIn), + _ => None, + } +} + +impl TryFrom for Operator { + type Error = FromBinaryOperatorError; + fn try_from(operator: BinaryOperator) -> Result { + match operator { + BinaryOperator::AT => Ok(Self::MatMult), + BinaryOperator::BITWISE_AND => Ok(Self::BitAnd), + BinaryOperator::BITWISE_OR => Ok(Self::BitOr), + BinaryOperator::BITWISE_XOR => Ok(Self::BitXor), + BinaryOperator::LEFT_SHIFT => Ok(Self::LShift), + BinaryOperator::RIGHT_SHIFT => Ok(Self::RShift), + BinaryOperator::PLUS => Ok(Self::Add), + BinaryOperator::MINUS => Ok(Self::Sub), + BinaryOperator::STAR => Ok(Self::Mult), + BinaryOperator::PERCENT => Ok(Self::Mod), + BinaryOperator::SLASH => Ok(Self::Div), + BinaryOperator::DOUBLE_SLASH => Ok(Self::FloorDiv), + BinaryOperator::DOUBLE_STAR => Ok(Self::Pow), + _ => Err(FromBinaryOperatorError(operator)), + } + } +} + +#[derive(Copy, Clone, Debug, thiserror::Error)] +#[error("invalid binary operator: {0:?}")] +pub struct FromBinaryOperatorError(BinaryOperator); + +impl From for Operator { + fn from(operator: AugAssignOperator) -> Operator { + match operator { + AugAssignOperator::AT_EQUAL => Self::MatMult, + AugAssignOperator::BITWISE_AND_EQUAL => Self::BitAnd, + AugAssignOperator::BITWISE_OR_EQUAL => Self::BitOr, + AugAssignOperator::BITWISE_XOR_EQUAL => Self::BitXor, + AugAssignOperator::LEFT_SHIFT_EQUAL => Self::LShift, + AugAssignOperator::RIGHT_SHIFT_EQUAL => Self::RShift, + AugAssignOperator::PLUS_EQUAL => Self::Add, + AugAssignOperator::MINUS_EQUAL => Self::Sub, + AugAssignOperator::STAR_EQUAL => Self::Mult, + AugAssignOperator::PERCENT_EQUAL => Self::Mod, + AugAssignOperator::SLASH_EQUAL => Self::Div, + AugAssignOperator::DOUBLE_SLASH_EQUAL => Self::FloorDiv, + AugAssignOperator::DOUBLE_STAR_EQUAL => Self::Pow, + } + } +} diff --git a/source/errpy/dune b/source/errpy/dune new file mode 100644 index 00000000000..a44397583d6 --- /dev/null +++ b/source/errpy/dune @@ -0,0 +1,39 @@ +(env + (dev + (flags + (:standard -w A-30)) + (ocamlopt_flags + (-g -Oclassic))) + (release + (flags + (:standard -w A-30)) + (ocamlopt_flags (-O3)))) + +(rule + (alias libffi_ocaml) + (targets libffi_ocaml.a) + (mode fallback) + (locks /cargo) + (deps + (source_tree .)) + (action + (progn + (run cargo build --release --offline) + (run cp ./target/release/libffi_ocaml.a libffi_ocaml.a)))) + +(library + (name errpy) + (modules parser ast) + (public_name errpy) + (flags -linkall) + (preprocess + (pps ppx_deriving.show)) + (libraries ocamlpool) + (c_library_flags -lstdc++ -lpthread) + (no_dynlink) + (foreign_archives ffi_ocaml)) + +(executable + (name parse_and_print) + (modules parse_and_print) + (libraries errpy)) diff --git a/source/errpy/dune-project b/source/errpy/dune-project new file mode 100644 index 00000000000..09bf968ebe8 --- /dev/null +++ b/source/errpy/dune-project @@ -0,0 +1,30 @@ +(lang dune 3.4) + +(name errpy) + +(version 0.0.10) + +(generate_opam_files true) + +(maintainers "pyre@meta.com") + +(authors "pyre@meta.com") + +(bug_reports "https://github.com/facebook/errpy/issues") + +(homepage "https://github.com/facebook/errpy") + +(source (github "facebook/errpy" ) ) + +(formatting + (enabled_for dune) +) + +(license MIT) + +(package + (name errpy) + (synopsis "Errpy: An Error Recovering Python Parser implemented in Rust") + (description "This is a new project to provide an error-recovering Python parser, implemented in Rust based on tree-sitter. Our short-term goal is to use it in the pyre type checker, in order to provide better IDE features.") + (depends ocaml dune ppx_deriving (conf-rust-2021 ( and :build)) (ounit2 (and :with-test))) + ) diff --git a/source/errpy/errors.rs b/source/errpy/errors.rs new file mode 100644 index 00000000000..8965c988d47 --- /dev/null +++ b/source/errpy/errors.rs @@ -0,0 +1,47 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[derive(Debug, thiserror::Error)] +pub enum ParserError { + #[error("failed to set tree_sitter language: {0}")] + Language(#[from] tree_sitter::LanguageError), + #[error("parser timed out or was cancelled")] + DidNotComplete, +} + +#[derive(Debug, thiserror::Error)] +pub enum RecoverableError { + #[error("encountered unexpected expression")] + UnexpectedExpression(String), + #[error("encountered unimplemented expression")] + UnimplementedStatement(String), + #[error("expected a node, but it was missing")] + MissingChild, // TODO: add String parameter to state which child is missing + #[error("expected comparison to have lhs node, but it was missing")] + MissingLhs, + #[error("expected BinaryOperator node, but got unexpected node kind: {0}")] + MissingOperator(String), + #[error("Syntax error resulted in ERROR node")] + SyntaxError(String), +} + +pub fn recoverable_error_to_string(recoverable_error: &RecoverableError) -> String { + match recoverable_error { + RecoverableError::UnexpectedExpression(expression_name) => { + format!("UnexpectedExpression: {}", expression_name) + } + RecoverableError::UnimplementedStatement(statement_name) => { + format!("UnimplementedStatement: {}", statement_name) + } + RecoverableError::MissingChild => "MissingChild".to_string(), + RecoverableError::MissingLhs => "MissingLhs".to_string(), + RecoverableError::MissingOperator(operator) => { + format!("MissingOperator: {}", operator) + } + RecoverableError::SyntaxError(invalid_syntax) => { + format!("SyntaxError: {}", invalid_syntax) + } + } +} diff --git a/source/errpy/errpy.opam b/source/errpy/errpy.opam new file mode 100644 index 00000000000..9c0da0be8ea --- /dev/null +++ b/source/errpy/errpy.opam @@ -0,0 +1,34 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +version: "0.0.10" +synopsis: "Errpy: An Error Recovering Python Parser implemented in Rust" +description: + "This is a new project to provide an error-recovering Python parser, implemented in Rust based on tree-sitter. Our short-term goal is to use it in the pyre type checker, in order to provide better IDE features." +maintainer: ["pyre@meta.com"] +authors: ["pyre@meta.com"] +license: "MIT" +homepage: "https://github.com/facebook/errpy" +bug-reports: "https://github.com/facebook/errpy/issues" +depends: [ + "ocaml" + "dune" {>= "3.4"} + "ppx_deriving" + "conf-rust-2021" {build} + "ounit2" {with-test} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/facebook/errpy.git" diff --git a/source/errpy/ffi_ocaml.rs b/source/errpy/ffi_ocaml.rs new file mode 100644 index 00000000000..3f9c67c859c --- /dev/null +++ b/source/errpy/ffi_ocaml.rs @@ -0,0 +1,54 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[macro_use] +extern crate rust_to_ocaml_attr; + +use cst_to_ast::Parser as CSTToASTParser; +use parser_pre_process::remove_comments; + +use crate::errors::recoverable_error_to_string; + +pub mod ast; +pub mod constants; +pub mod cst_to_ast; +pub mod errors; +pub mod node_wrapper; +pub mod parser_post_process; +pub mod parser_pre_process; +pub mod sitter; +pub mod string_helpers; + +ocamlrep_ocamlpool::ocaml_ffi! { + fn parse_module(_source_text: bstr::BString) -> Result< (ast::Mod_, Vec), String> { + let input_code_as_rust_string = format!("{}", _source_text); + let input_without_comments = remove_comments(input_code_as_rust_string); + + let mut cst_to_ast = CSTToASTParser::new(input_without_comments); + + match cst_to_ast.parse() { + Ok(_) => { + let ast_and_metadata = cst_to_ast.ast_and_metadata; + let ast = ast_and_metadata.ast.unwrap(); + let recoverable_errors = ast_and_metadata.recoverable_errors; + let mut errors: Vec = vec![]; + for recoverable_error_with_location in recoverable_errors{ + let error_message = recoverable_error_to_string(&recoverable_error_with_location.parser_error); + let location = &recoverable_error_with_location.location; + + errors.push(ast::RecoverableErrorWithLocation{ + error: error_message, + lineno: location.lineno, + col_offset: location.col_offset, + end_lineno: location.end_lineno, + end_col_offset: location.end_col_offset + }); + } + Ok((ast, errors)) + } + Err(e) => Err(format!("Failure parsing input\n{:?}\n", e)) + } + } +} diff --git a/source/errpy/ffi_python.pyi b/source/errpy/ffi_python.pyi new file mode 100644 index 00000000000..19428650f3b --- /dev/null +++ b/source/errpy/ffi_python.pyi @@ -0,0 +1,12 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +def py_parse_module_print_ast(input_code: str) -> tuple[str, str]: ... +def py_parse_module_print_ast_and_pretty_print(input_code: str) -> tuple[str, str]: ... +def py_parse_module_print_ast_pretty_print_only(input_code: str) -> tuple[str, str]: ... +def py_parse_module_print_ast_pretty_and_errors( + input_code: str, +) -> tuple[str, str, str]: ... +def py_parse_module(input_code: str) -> None: ... diff --git a/source/errpy/ffi_python.rs b/source/errpy/ffi_python.rs new file mode 100644 index 00000000000..2dbebd4ffef --- /dev/null +++ b/source/errpy/ffi_python.rs @@ -0,0 +1,89 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +use pyo3::prelude::*; + +#[macro_use] +extern crate rust_to_ocaml_attr; + +use cst_to_ast::Parser as CSTToASTParser; + +use crate::printers::parse_module_print_ast_code; +use crate::printers::parse_module_print_ast_pretty_and_errors; +use crate::printers::PrintingMode; + +pub mod ast; +pub mod constants; +pub mod cst_to_ast; +pub mod errors; +pub mod node_wrapper; +pub mod parser_post_process; +pub mod parser_pre_process; +pub mod printers; +pub mod sitter; +pub mod string_helpers; + +#[pyfunction] +fn py_parse_module_print_ast(input_code: String) -> PyResult<(String, String)> { + Ok(parse_module_print_ast_code( + input_code, + PrintingMode::ASTOnly, + )) +} + +#[pyfunction] +fn py_parse_module_print_ast_and_pretty_print(input_code: String) -> PyResult<(String, String)> { + Ok(parse_module_print_ast_code( + input_code, + PrintingMode::ASTAndPrettyPrintAST, + )) +} + +#[pyfunction] +fn py_parse_module_print_ast_pretty_print_only(input_code: String) -> PyResult<(String, String)> { + Ok(parse_module_print_ast_code( + input_code, + PrintingMode::PrettyPrintASTOnly, + )) +} + +#[pyfunction] +fn py_parse_module_print_ast_pretty_and_errors( + input_code: String, +) -> PyResult<(String, String, String)> { + Ok(parse_module_print_ast_pretty_and_errors(input_code)) +} + +/// +/// run errpy but ignore result - useful for benchmarking +#[pyfunction] +fn py_parse_module(input_code: String) -> PyResult<()> { + let mut cst_to_ast = CSTToASTParser::new(input_code); + _ = cst_to_ast.parse(); + + Ok(()) +} + +/// A Python module implemented in Rust. The name of this function must match +/// the `lib.name` setting in the `Cargo.toml`, else Python will not be able to +/// import the module. +#[pymodule] +fn ffi_python(_py: Python<'_>, m: &PyModule) -> PyResult<()> { + m.add_function(wrap_pyfunction!(py_parse_module_print_ast, m)?)?; + m.add_function(wrap_pyfunction!( + py_parse_module_print_ast_and_pretty_print, + m + )?)?; + m.add_function(wrap_pyfunction!( + py_parse_module_print_ast_pretty_print_only, + m + )?)?; + m.add_function(wrap_pyfunction!( + py_parse_module_print_ast_pretty_and_errors, + m + )?)?; + m.add_function(wrap_pyfunction!(py_parse_module, m)?)?; + Ok(()) +} diff --git a/source/errpy/node_wrapper.rs b/source/errpy/node_wrapper.rs new file mode 100644 index 00000000000..5ab27c00814 --- /dev/null +++ b/source/errpy/node_wrapper.rs @@ -0,0 +1,260 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +use std::collections::HashMap; +use std::collections::VecDeque; +use std::fmt; +use std::iter; +use std::str; + +use tree_sitter::Node as TSNode; +use tree_sitter::Point; +use tree_sitter::TreeCursor; + +/// Tree-sitter can emit `comment` and `error` nodes anywhere in its output CST's. +/// This means that in theory our code needs to handle the possibility of a comment +/// or error node being present anywhere in the CST! This is not really practical +/// to implement in `cst_to_ast.rs` so instead here we add `node_wrapper` to filter +/// out ERROR and COMMENT notes in a new `Node` struct which wraps around +/// the Tree sitter `TSNode`. +/// +/// We make use of an arena based tree allocator within `FilteredCST` for ease of +/// understanding and future maintenance. +/// +/// The methods exposed here are a subset of those on the `TSNode` API visible at: +/// https://docs.rs/tree-sitter/latest/src/tree_sitter/lib.rs.html + +#[derive(Debug, Default)] +pub struct FilteredCST<'tree> { + nodes: Vec>, +} + +pub struct Node<'a> { + ts_node: TSNode<'a>, + parent_idx: Option, + children: Vec, + named_children: Vec, + children_for_field_name: HashMap<&'a str, Vec>, +} + +impl<'a> fmt::Debug for Node<'a> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self.ts_node) + } +} + +impl<'tree> FilteredCST<'tree> { + /// Place node into FilteredCST tree and return numerial index + fn allocate(&mut self, to_push: Node<'tree>) -> usize { + self.nodes.push(to_push); + self.nodes.len() - 1 + } + + pub fn get_root(&self) -> &Node<'tree> { + &self.nodes[0] + } +} + +impl<'a> PartialEq for Node<'a> { + fn eq(&self, other: &Self) -> bool { + self.ts_node.id() == other.ts_node.id() + } +} + +/// iterative method to create a node tree from root TS Node +pub fn build_node_tree(root_ts_node: TSNode) -> FilteredCST { + let mut arena = FilteredCST { nodes: vec![] }; + + let mut to_process = VecDeque::new(); + to_process.push_back((None, None, root_ts_node)); + + while !to_process.is_empty() { + if let Some((parent_position, field_name, ts_node)) = to_process.pop_front() { + let mut current_node = Node::new(ts_node); + current_node.parent_idx = parent_position; + let current_node_idx: usize = arena.allocate(current_node); + + if let Some(parent_position) = parent_position { + arena.nodes[parent_position].children.push(current_node_idx); + if ts_node.is_named() { + arena.nodes[parent_position] + .named_children + .push(current_node_idx); + } + + if let Some(field_name) = field_name { + let children_for_field_name = + &mut arena.nodes[parent_position].children_for_field_name; + + if !children_for_field_name.contains_key(field_name) { + children_for_field_name.insert(field_name, vec![]); + } + children_for_field_name + .get_mut(&field_name) + .unwrap() + .push(current_node_idx); + } + } + + let field_names: Vec> = extract_child_field_names(ts_node); + + let walker = &mut ts_node.walk(); + for (child, child_field_name) in ts_node.children(walker).zip(field_names.iter()) { + let kind = child.kind(); + if kind == "ERROR" || kind == "comment" || kind == "line_continuation" { + continue; + } + + to_process.push_back((Some(current_node_idx), *child_field_name, child)); + } + } + } + + arena +} + +/// Extract all child field names from a TSNode +fn extract_child_field_names<'a>(ts_node: TSNode<'a>) -> Vec> { + let cursor = &mut ts_node.walk(); + cursor.reset(ts_node); + cursor.goto_first_child(); + (0..ts_node.child_count()) + .map(move |_| { + let result = cursor.field_name(); + cursor.goto_next_sibling(); + result + }) + .collect() +} + +impl<'tree> Node<'tree> { + pub fn new(ts_node: TSNode<'tree>) -> Self { + Self { + ts_node, + parent_idx: None, + children: vec![], + named_children: vec![], + children_for_field_name: HashMap::new(), + } + } + + /// Get a numeric id for this node that is unique. + pub fn id(&self) -> usize { + self.ts_node.id() + } + + /// Get this node's start position in terms of rows and columns. + pub fn start_position(&self) -> Point { + self.ts_node.start_position() + } + + /// Get this node's end position in terms of rows and columns. + pub fn end_position(&self) -> Point { + self.ts_node.end_position() + } + + /// Get the node's child at the given index, where zero represents the first child. + pub fn child<'a>(&'a self, filtered_cst: &'a FilteredCST<'tree>, idx: usize) -> Option<&Self> { + self.children + .get(idx) + .map(|child_index| &filtered_cst.nodes[*child_index]) + } + + /// Get this node's number of children. + pub fn child_count(&self) -> usize { + self.children.len() + } + + /// Get this node's utf8 text as a string. + pub fn utf8_text<'a>(&self, source: &'a [u8]) -> Result<&'a str, str::Utf8Error> { + self.ts_node.utf8_text(source) + } + + /// Get the byte offsets where this node starts. + pub fn start_byte(&self) -> usize { + self.ts_node.start_byte() + } + + /// Get the byte offsets where this node end. + pub fn end_byte(&self) -> usize { + self.ts_node.end_byte() + } + + /// Create a new [TreeCursor] starting from this node. + pub fn walk(&self) -> TreeCursor<'tree> { + self.ts_node.walk() + } + + /// Get this node's type as a string. + pub fn kind(&self) -> &'static str { + self.ts_node.kind() + } + + /// Get this node's immediate parent. + pub fn parent<'a>(&'a self, filtered_cst: &'a FilteredCST<'tree>) -> Option<&Self> { + self.parent_idx + .map(|parent_idx| &filtered_cst.nodes[parent_idx]) + } + + /// Check if this node is *named*. + /// + /// Named nodes correspond to named rules in the grammar, whereas *anonymous* nodes + /// correspond to string literals in the grammar. + pub fn is_named(&self) -> bool { + self.ts_node.is_named() + } + + /// Get the first child with the given field name. + /// + /// If multiple children may have the same field name, access them using + /// [children_by_field_name](Node::children_by_field_name) + pub fn child_by_field_name<'a>( + &'a self, + filtered_cst: &'a FilteredCST<'tree>, + field_name: &'a str, + ) -> Option<&'a Node<'a>> { + self.children_by_field_name(filtered_cst, field_name).next() + } + + /// Iterate over this node's children with a given field name. + /// + /// See also [Node::children]. + pub fn children_by_field_name<'a>( + &'a self, + filtered_cst: &'a FilteredCST<'tree>, + field_name: &str, + ) -> Box> + 'a> { + match self.children_for_field_name.get(field_name) { + Some(children) => Box::new( + children + .iter() + .map(|child_index| &filtered_cst.nodes[*child_index]), + ), + None => Box::new(iter::empty()), + } + } + + /// Iterate over this node's named children. + /// + /// See also [Node::children]. + pub fn named_children<'a>( + &'a self, + filtered_cst: &'a FilteredCST<'tree>, + ) -> impl ExactSizeIterator> + 'a { + self.named_children + .iter() + .map(|child_index| &filtered_cst.nodes[*child_index]) + } + + /// Iterate over this node's children. + pub fn children<'a>( + &'a self, + filtered_cst: &'a FilteredCST<'tree>, + ) -> impl ExactSizeIterator> + 'a { + self.children + .iter() + .map(|child_index| &filtered_cst.nodes[*child_index]) + } +} diff --git a/source/errpy/parse_and_print.ml b/source/errpy/parse_and_print.ml new file mode 100644 index 00000000000..004d4db7423 --- /dev/null +++ b/source/errpy/parse_and_print.ml @@ -0,0 +1,26 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +print_endline ("Running on OCaml version: " ^ Sys.ocaml_version) + +module Errpyast = Errpy.Ast +module Errpyparser = Errpy.Parser + +let () = + let print_recoverable_errors recoverable_errors = + recoverable_errors + |> List.map Errpyast.show_recoverableerrorwithlocation + |> String.concat ", " + |> Format.asprintf "[%s]" + in + match Errpyparser.parse_module Sys.argv.(1) with + | Ok (mod_, recoverable_errors) -> + Printf.printf + "\nParser produced AST:\n%s\n\nRecoverable Errors:\n%s\n" + (Errpyast.show_mod_ mod_) + (print_recoverable_errors recoverable_errors) + | Error err -> Printf.eprintf "Parser error: %s\n" err diff --git a/source/errpy/parser.ml b/source/errpy/parser.ml new file mode 100644 index 00000000000..77f7204d351 --- /dev/null +++ b/source/errpy/parser.ml @@ -0,0 +1,15 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +(** [parse_module input] takes the string [input] and parse it as a Python module, represented by a + list of {!type: Ast.mod_}. + + In the future we can add support for type comments here *) +external parse_module + : string -> + (Ast.mod_ * Ast.recoverableerrorwithlocation list, string) result + = "parse_module" diff --git a/source/errpy/parser_post_process.rs b/source/errpy/parser_post_process.rs new file mode 100644 index 00000000000..1a7597b7b8f --- /dev/null +++ b/source/errpy/parser_post_process.rs @@ -0,0 +1,98 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree +use std::collections::HashSet; + +use regex::Regex; + +// TODO: Refactor this into the constants.rs file once necessary updates are made to the TARGETS file +pub static AUTOCOMPLETE_TOKEN: &str = "AUTOCOMPLETE"; + +#[derive(Debug)] +pub struct ParserPostprocessor {} + +#[derive(Debug)] +pub struct ErrorSegment { + pub start_lineno: isize, // inclusive + pub end_lineno: isize, // exclusive +} + +impl ParserPostprocessor { + pub fn new() -> Self { + ParserPostprocessor {} + } + + /// + /// Returns if the series of characters form a valid Python identifier or + /// a valid combinations that can precede a "." + /// + /// (e.g., "foo.bar" is valid, "'foo'.split" is also valid, but + /// "!.bar" is not). + /// + /// A valid identifier has the following properties: + /// * It contains only ASCII alphanumeric characters and underscores. + /// * It begins with a letter or an underscore. + /// * It is not followed by any punctuation. + /// * It is not a reserved keyword. + fn valid_tokens_preceding_dot(&self, line: &str) -> bool { + let preceding_tokens = match line.rsplit_once([' ', '.', ')', '\'', '}', ']', '\"']) { + Some((_, identifier_and_trailing_dot)) => identifier_and_trailing_dot, + None => line, + }; + + !preceding_tokens.is_empty() + && preceding_tokens + .chars() + .next() + .map_or(false, |c| c.is_ascii_alphabetic() || c == '_') // First char must be letter or an underscore. + && preceding_tokens + .chars() + .all(|c| c.is_ascii_alphanumeric() || c == '_') // Only ASCII alphanumeric characters and underscores. + } + + /// + /// Injects a `AUTOCOMPLETE_TOKEN` to the input code if a valid identifier + /// followed by a trailing dot is found. + fn process_trailing_dots(&self, line: &str) -> String { + let re = Regex::new(r"\.\s").expect("Invalid Regex"); + let mut result = Vec::new(); + let mut curr = 0; + + let segments = re.split(line).collect::>(); + let num_segments = segments.len(); + + for substring in segments { + if curr < num_segments - 1 { + if self.valid_tokens_preceding_dot(substring) { + result.push(format!("{}.{}", substring, AUTOCOMPLETE_TOKEN)); + } else { + result.push(format!("{}.", substring)); + } + curr += 1; + } else { + // Skip last segment + result.push(substring.trim_end().to_string()); + if line.ends_with('\n') { + result.push("\n".to_string()); + } + break; + } + } + result.join("") + } + + pub fn postprocess(self, input_code: &str, error_lines: HashSet) -> String { + input_code + .split_inclusive('\n') + .enumerate() + .map(|(line_number, line)| { + if error_lines.contains(&line_number) { + self.process_trailing_dots(line) + } else { + String::from(line) + } + }) + .collect() + } +} diff --git a/source/errpy/parser_pre_process.rs b/source/errpy/parser_pre_process.rs new file mode 100644 index 00000000000..a5a441e18b6 --- /dev/null +++ b/source/errpy/parser_pre_process.rs @@ -0,0 +1,160 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[derive(PartialEq)] +enum StringCommentState { + OutsideString, + InsideSingleQuotedString, + InsideDoubleQuotedString, + InsideSingleQuotedStringEscape, + InsideDoubleQuotedStringEscape, + InsideSingleQuotedMultilineString, + InsideDoubleQuotedMultilineString, + InsideComment, +} + +// handles a single (') or double quote (") and returns new parser state +fn handle_quote_character( + input_code: &str, + state: StringCommentState, + idx: &usize, + multiline_quote: &str, + inside_string: StringCommentState, + inside_string_escaped: StringCommentState, + inside_multiline_string: StringCommentState, +) -> StringCommentState { + use StringCommentState::*; + + if state == OutsideString { + if input_code[..idx + 1].ends_with(multiline_quote) { + // triple quote => start new multiline string + inside_multiline_string + } else { + // single quote => we are now inside a string + inside_string + } + } else if state == inside_string_escaped { + // escaped quote => we are still inside the string + inside_string + } else if state == inside_string { + // quote ends string => we are now outside + OutsideString + } else if state == inside_multiline_string { + if input_code[..idx + 1].ends_with(multiline_quote) + && (input_code.len() == idx + 1 || !input_code[..idx + 2].ends_with(multiline_quote)) + { + // triple quote ends the multiline string => we are now outside + OutsideString + } else { + // a single quote won't do anything in a multiline string + // => we are still inside the multiline string + inside_multiline_string + } + } else { + // any other case (e.g. single quote in double quote string) + // => don't change the parser state + state + } +} + +/// +/// This function will remove comment's from input_code. +/// Comments are replaced with newlines so as to preserve line +/// and column information +/// +/// TODO: This code will need refactoring in the future if/when we wish to +/// * Handle `# pyre-fixme:`'s better by integrating them into the AST. +/// * Outut a CST code will need refactoring. +/// +/// For now this function is only used on in the context of AST production +/// so it's fit for purpose. +pub fn remove_comments(input_code: String) -> String { + use StringCommentState::*; + + let without_comments = &mut String::new(); + + // start of current slice to copy to result string + let mut start = 0; + // line end index (either ends at comment start or at newline) + let mut line_end: Option = None; + let mut state = OutsideString; + for (idx, char) in input_code.char_indices() { + match char { + '\\' => match state { + InsideSingleQuotedString => state = InsideSingleQuotedStringEscape, + InsideDoubleQuotedString => state = InsideDoubleQuotedStringEscape, + _ => {} + }, + '\'' => { + state = handle_quote_character( + &input_code, + state, + &idx, + "'''", + InsideSingleQuotedString, + InsideSingleQuotedStringEscape, + InsideSingleQuotedMultilineString, + ) + } + '\"' => { + state = handle_quote_character( + &input_code, + state, + &idx, + "\"\"\"", + InsideDoubleQuotedString, + InsideDoubleQuotedStringEscape, + InsideDoubleQuotedMultilineString, + ) + } + '#' => match state { + OutsideString => { + // we are not inside a string and are at the start of a comment + // => line ends already _before_ the hash character + line_end = Some(idx); + state = InsideComment; + } + _ => {} + }, + '\n' => { + if state == InsideSingleQuotedStringEscape + || state == InsideDoubleQuotedStringEscape + { + // newline was escaped within string + continue; + } + if line_end.is_none() { + // no line comment => end line here (at newline) + line_end = Some(idx); + } + // note that this slice does not contain the newline character as + // the newline character will be contained in the next slice (`start` points to the newline char) + without_comments.push_str(&input_code[start..line_end.unwrap()]); + start = idx; + line_end = None; + match state { + InsideSingleQuotedMultilineString | InsideDoubleQuotedMultilineString => {} + _ => state = OutsideString, + } + } + _ => { + if state == InsideSingleQuotedStringEscape { + state = InsideSingleQuotedString; + } else if state == InsideDoubleQuotedStringEscape { + state = InsideDoubleQuotedString; + } + } + } + } + if line_end.is_none() { + // no line comment at the end + // => copy all remaining code into the result + line_end = Some(input_code.len()); + } + without_comments.push_str(&input_code[start..line_end.unwrap()]); + // this extra newline is actually not needed, but kept for backwards-compatibility + without_comments.push('\n'); + without_comments.to_string() +} diff --git a/source/errpy/print_ast.rs b/source/errpy/print_ast.rs new file mode 100644 index 00000000000..06531b8b485 --- /dev/null +++ b/source/errpy/print_ast.rs @@ -0,0 +1,45 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[macro_use] +extern crate rust_to_ocaml_attr; + +use std::path::PathBuf; + +use crate::printers::parse_module_print_ast_code; +use crate::printers::read_stdin_or_file; +use crate::printers::PrintingMode; + +pub mod ast; +pub mod constants; +pub mod cst_to_ast; +pub mod errors; +pub mod node_wrapper; +pub mod parser_post_process; +pub mod parser_pre_process; +pub mod printers; +pub mod sitter; +pub mod string_helpers; + +/// Python Parser which will output AST pretty printed. +/// Usage: `print_ast file.py` or `echo "print('hello')" | print_ast`. +/// With a build system such as buck, `buck run //path/to/errpy:print_ast -- file.py` and `echo "print('test')" | buck run //path/to/errpy:print_ast -` +#[derive(clap::Parser)] +struct Args { + /// Python file to generate AST for + input_file: PathBuf, +} + +fn main() { + let args = ::parse(); + + let input_file = read_stdin_or_file(args.input_file); + let (ast, errors) = parse_module_print_ast_code(input_file, PrintingMode::ASTAndPrettyPrintAST); + if errors.is_empty() { + println!("{}", ast); + } else { + print!("{}\n{}", ast, errors); + } +} diff --git a/source/errpy/print_cst.rs b/source/errpy/print_cst.rs new file mode 100644 index 00000000000..fc00923bf02 --- /dev/null +++ b/source/errpy/print_cst.rs @@ -0,0 +1,50 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[macro_use] +extern crate rust_to_ocaml_attr; + +use std::path::PathBuf; + +use clap::ArgAction; +use clap::Parser as ClapParser; + +use crate::printers::read_stdin_or_file; +use crate::printers::CSTPrinter; + +pub mod ast; +pub mod constants; +pub mod cst_to_ast; +pub mod errors; +pub mod node_wrapper; +pub mod parser_post_process; +pub mod parser_pre_process; +pub mod printers; +pub mod sitter; +pub mod string_helpers; + +/// Python Parser which will output CST pretty printed. +/// Usage: `print_cst file.py` or `echo "print('hello')" | print_cst`. +/// With a build system such as buck, `buck run //path/to/errpy:print_cst -- file.py` and `echo "print('test')" | buck run //path/to/errpy:print_cst -` +#[derive(ClapParser)] +struct Args { + /// Python file to generate CST for + input_file: PathBuf, + + /// If the error nodes should be filtered in the output CST + /// (default is to include all nodes) + #[clap(long, short, action=ArgAction::SetTrue)] + filter_errors: bool, +} + +fn main() { + let args = ::parse(); + + let input_file = read_stdin_or_file(args.input_file); + + let filter_errors = args.filter_errors; + + CSTPrinter::new(input_file).print_cst(filter_errors); +} diff --git a/source/errpy/printers.rs b/source/errpy/printers.rs new file mode 100644 index 00000000000..190d524caf5 --- /dev/null +++ b/source/errpy/printers.rs @@ -0,0 +1,237 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +pub mod ast_pretty_print; +pub mod ast_pretty_print_helper; +pub mod ast_print; +use std::fs; +use std::io; +use std::io::BufRead; +use std::path::PathBuf; + +use ast_pretty_print_helper::PrintHelper; +use cst_to_ast::get_node_text; +use cst_to_ast::ASTAndMetaData; +use cst_to_ast::Parser as CSTToASTParser; +use errors::recoverable_error_to_string; +use errors::ParserError; +use node_wrapper::build_node_tree; +use node_wrapper::Node; +use parser_pre_process::remove_comments; +use tree_sitter::Parser as TreeSitterParser; +use tree_sitter::TreeCursor; + +use crate::cst_to_ast; +use crate::errors; +use crate::node_wrapper; +use crate::node_wrapper::FilteredCST; +use crate::parser_pre_process; + +pub enum PrintingMode { + ASTOnly, + PrettyPrintASTOnly, + ASTAndPrettyPrintAST, +} + +pub fn parse_module_print_ast_pretty_and_errors(input_code: String) -> (String, String, String) { + let parsing_and_printer = ParsingAndPrinter::new(input_code); + ( + parsing_and_printer.get_print_ast(), + parsing_and_printer.get_pretty_print_ast(), + parsing_and_printer.get_recoverable_errors(), + ) +} + +pub fn read_stdin_or_file(input_parameter: PathBuf) -> String { + if input_parameter == PathBuf::from("-") { + let lines = io::stdin().lock().lines(); + let mut user_input = String::new(); + + for line in lines { + let last_input = line.unwrap(); + user_input.push_str(&last_input); + user_input.push('\n'); + } + user_input + } else { + fs::read_to_string(&input_parameter).unwrap() + } +} + +pub fn parse_module_print_ast_code( + input_code: String, + printing_mode: PrintingMode, +) -> (String, String) { + let (print_ast, pretty_print_ast) = match printing_mode { + PrintingMode::ASTOnly => (true, false), + PrintingMode::PrettyPrintASTOnly => (false, true), + PrintingMode::ASTAndPrettyPrintAST => (true, true), + }; + + let parsing_and_printer = ParsingAndPrinter::new(input_code); + let pprint_output = &mut String::new(); + + if print_ast { + pprint_output.push_str(parsing_and_printer.get_print_ast().as_str()); + } + + if pretty_print_ast { + pprint_output.push_str(parsing_and_printer.get_pretty_print_ast().as_str()); + } + + ( + pprint_output.to_string(), + parsing_and_printer.get_recoverable_errors(), + ) +} + +struct ParsingAndPrinter { + cst_to_ast: CSTToASTParser, + parse_result: Result<(), ParserError>, +} + +impl ParsingAndPrinter { + pub fn new(input_code: String) -> Self { + let input_without_comments = remove_comments(input_code); + let mut cst_to_ast = CSTToASTParser::new(input_without_comments); + let parse_result = cst_to_ast.parse(); + ParsingAndPrinter { + cst_to_ast, + parse_result, + } + } + + pub fn get_print_ast(&self) -> String { + match &self.parse_result { + Ok(_) => format!("{}\n", self.cst_to_ast.get_ast_and_metadata()), + Err(e) => format!("Failure parsing python module\n{:?}\n", e), + } + } + + pub fn get_pretty_print_ast(&self) -> String { + let to_print = &mut String::new(); + let printer = &mut PrintHelper::new(to_print, 4); + self.cst_to_ast.get_ast_and_metadata().pprint(printer); + + to_print.to_string() + } + + pub fn get_recoverable_errors(&self) -> String { + extract_errors(self.cst_to_ast.get_ast_and_metadata()) + } +} + +/// +/// Will return an empty string if there are no errors +fn extract_errors(metadata: &ASTAndMetaData) -> String { + let mut errors = String::new(); + if !metadata.recoverable_errors.is_empty() { + let error_count = metadata.recoverable_errors.len(); + + let errors_word = if error_count > 1 { "errors" } else { "error" }; + + errors.push_str(&format!( + "{} Recoverable {} detected:\n", + error_count, errors_word + )); + + for recoverable_error_with_location in &metadata.recoverable_errors { + let recoverable_as_string = + recoverable_error_to_string(&recoverable_error_with_location.parser_error); + + let location = &recoverable_error_with_location.location; + errors.push_str( + &format!( + "{} at [{}:{} - {}:{}]", + recoverable_as_string, + location.lineno, + location.col_offset, + location.end_lineno, + location.end_col_offset + ) + .to_string(), + ); + errors.push('\n'); + + let stack = &recoverable_error_with_location.stack; + errors.push_str("CST Stack:\n"); + for item in stack.iter() { + errors.push_str(" "); + errors.push_str(item); + errors.push('\n'); + } + } + } + errors +} + +pub struct CSTPrinter { + code: String, +} + +impl CSTPrinter { + pub fn new(code: String) -> CSTPrinter { + CSTPrinter { code } + } + + // Prints the sitter nodes in their "derived `Debug` form" + pub fn print_cst(&self, is_filter_errors: bool) { + let mut parser = TreeSitterParser::new(); + parser + .set_language(tree_sitter_python::language()) + .expect("Fail to initialize TreeSitter"); + let tree = parser.parse(&self.code, None).expect("Fail to parse file"); + + println!( + ">>> Tree-Sitter CST Nodes{}:\n", + if is_filter_errors { " (filtered)" } else { "" } + ); + + if is_filter_errors { + let filtered_cst = build_node_tree(tree.root_node()); + self.print_filtered_cst_node(&filtered_cst, filtered_cst.get_root(), ""); + } else { + let mut tree_cursor_root = tree.walk(); + self.print_cst_node(&mut tree_cursor_root, ""); + } + } + + fn print_filtered_cst_node(&self, filtered_cst: &FilteredCST, node: &Node, indent: &str) { + println!( + "{}{:?} :: {}", + indent, + node, + get_node_text(&self.code, node).replace('\n', "\\n") + ); + for child in node.children(filtered_cst) { + let new_indent = format!(" {}", indent); + self.print_filtered_cst_node(filtered_cst, child, new_indent.as_str()); + } + } + + fn print_cst_node(&self, tree_cursor: &mut TreeCursor<'_>, indent: &str) { + println!( + "{}{:?} :: {}", + indent, + tree_cursor.node(), + tree_cursor + .node() + .utf8_text(self.code.as_bytes()) + .expect("Invalid Identifier") + .to_string() + .replace('\n', "\\n") + ); + + // Preorder traversal of the tree to print out the nodes + if tree_cursor.goto_first_child() { + let new_indent = format!(" {}", indent); + self.print_cst_node(tree_cursor, new_indent.as_str()); + while tree_cursor.goto_next_sibling() { + self.print_cst_node(tree_cursor, new_indent.as_str()); + } + tree_cursor.goto_parent(); + } + } +} diff --git a/source/errpy/printers/ast_pretty_print.rs b/source/errpy/printers/ast_pretty_print.rs new file mode 100644 index 00000000000..4fb6c77ad90 --- /dev/null +++ b/source/errpy/printers/ast_pretty_print.rs @@ -0,0 +1,1755 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree +use std::convert::TryFrom; + +use ast::Alias; +use ast::Arg; +use ast::Arguments; +use ast::Boolop; +use ast::Cmpop; +use ast::Comprehension; +use ast::ConstantDesc; +use ast::ExcepthandlerDesc; +use ast::Expr; +use ast::ExprDesc; +use ast::Keyword; +use ast::MatchCase; +use ast::Mod_; +use ast::Num; +use ast::Operator; +use ast::PatternDesc; +use ast::Stmt; +use ast::StmtDesc; +use ast::Unaryop; +use ast::Withitem; +use num_enum::IntoPrimitive; +use num_enum::TryFromPrimitive; +use printers::ast_pretty_print_helper::PrintHelper; +use printers::ast_print::cpython_float_to_string; +use printers::ast_print::UNKOWN_NODE_MOD; + +use crate::ast; +use crate::ast::Pattern; +use crate::cst_to_ast::ASTAndMetaData; +use crate::printers; + +/// The output of this pretty preinter is required to match the output of +/// the `ast.unparse` function in CPython 3.10 onwards. The spec for this +/// (including rare edge cases) can be found here: +/// https://github.com/python/cpython/blob/main/Python/ast_unparse.c + +#[repr(u8)] +#[derive(PartialEq, PartialOrd)] +#[derive(Copy, Clone)] +#[derive(IntoPrimitive, TryFromPrimitive)] +enum PriorityLevel { + NamedExpr, // := + Tuple, // () + Test, // 'if'-'else', 'lambda' + Or, // 'or' + And, // 'and' + Not, // 'not' + Compare, // '<', '>', '==', '>=', '<=', '!=' 'in', 'not in', 'is', 'is not' + ExpressionOrBitOr, // expression or '|' - these share the same priority level + BitXOr, // '^' + BitAnd, // '&' + Shift, // '<<', '>>' + PlusMinus, // '+', '-' + Term, // '*', '@', '/', '%', '//' + Factor, // unary '+', '-', '~' + Power, // '**' + Await, // 'await' + Atom, // Constants +} + +impl PriorityLevel { + fn next(&self) -> PriorityLevel { + match PriorityLevel::try_from(Into::::into(*self) + 1) { + Ok(next_level) => next_level, + Err(..) => PriorityLevel::NamedExpr, + } + } +} + +fn bool_operator_to_priority_level(operator: &Boolop) -> PriorityLevel { + match operator { + Boolop::And => PriorityLevel::And, + Boolop::Or => PriorityLevel::Or, + } +} +fn unary_operator_to_priority_level(operator: &Unaryop) -> PriorityLevel { + match operator { + Unaryop::Invert => PriorityLevel::Factor, + Unaryop::Not => PriorityLevel::Not, + Unaryop::UAdd => PriorityLevel::Factor, + Unaryop::USub => PriorityLevel::Factor, + } +} + +fn operator_to_priority_level(operator: &Operator) -> PriorityLevel { + match operator { + Operator::Add => PriorityLevel::PlusMinus, + Operator::Sub => PriorityLevel::PlusMinus, + Operator::Mult => PriorityLevel::Term, + Operator::MatMult => PriorityLevel::Term, + Operator::Div => PriorityLevel::Term, + Operator::Mod => PriorityLevel::Term, + Operator::Pow => PriorityLevel::Power, + Operator::LShift => PriorityLevel::Shift, + Operator::RShift => PriorityLevel::Shift, + Operator::BitOr => PriorityLevel::ExpressionOrBitOr, + Operator::BitXor => PriorityLevel::BitXOr, + Operator::BitAnd => PriorityLevel::BitAnd, + Operator::FloorDiv => PriorityLevel::Term, + } +} + +fn apply_parenthesis( + pprint_output: &mut PrintHelper, + current_priority_level: PriorityLevel, + priority_level: PriorityLevel, + parenthesis: &str, +) { + if current_priority_level > priority_level { + pprint_output.push_str(parenthesis); + } +} +fn left_parenthesis( + pprint_output: &mut PrintHelper, + current_priority_level: PriorityLevel, + priority_level: PriorityLevel, +) { + apply_parenthesis(pprint_output, current_priority_level, priority_level, "("); +} +fn right_parenthesis( + pprint_output: &mut PrintHelper, + current_priority_level: PriorityLevel, + priority_level: PriorityLevel, +) { + apply_parenthesis(pprint_output, current_priority_level, priority_level, ")"); +} + +impl ASTAndMetaData { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + self.ast.as_ref().unwrap().pprint(pprint_output); + } +} + +impl Mod_ { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + match self { + Mod_::Module { + body, + type_ignores: _, + } => process_module_class_functiondef_block(body, true, pprint_output), + _ => pprint_output.push_str(UNKOWN_NODE_MOD), // ignore + } + } +} + +fn process_module_class_functiondef_block( + body: &[Stmt], + at_module_level: bool, + pprint_output: &mut PrintHelper, +) { + let mut is_first = true; + for targ_elm in body.iter() { + match is_first { + true => { + // for first statement in a block + if !at_module_level { + match targ_elm.desc { + StmtDesc::ClassDef { .. } + | StmtDesc::FunctionDef { .. } + | StmtDesc::AsyncFunctionDef { .. } => { + pprint_output.push_str("\n"); + } + _ => (), + } + } + + // if the first line is a string, we turn it into a docstring + if let StmtDesc::Expr(expr) = &targ_elm.desc { + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(astring)), + kind: _, + } = &*expr.desc + { + let mut res = astring + .to_string() + .replace("\\n", "\n") + .replace("\\t", "\t"); + res = res[1..res.len() - 1].to_string(); + pprint_output.push_ident(); + pprint_output.push_str(&format!("\"\"\"{}\"\"\"", res).to_string()); + pprint_output.push_str("\n"); + continue; + } + } + } + false => { + // for everything but first statement in a block... + pprint_output.strip_all_but_one_trailing_newline(); + + match targ_elm.desc { + StmtDesc::ClassDef { .. } + | StmtDesc::FunctionDef { .. } + | StmtDesc::AsyncFunctionDef { .. } => { + pprint_output.push_str("\n"); + } + _ => (), + } + } + } + + targ_elm.pprint(pprint_output); + pprint_output.push_str("\n"); + is_first = false; + } +} + +fn format_vec_str(names: &[String], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for name in names.iter() { + at_least_one = true; + pprint_output.push_str(name); + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } +} + +fn format_vec_expr(exprs: &[Expr], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for expr in exprs.iter() { + at_least_one = true; + (*expr.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } +} + +fn format_vec_alias(aliases: &[Alias], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for alias in aliases.iter() { + at_least_one = true; + pprint_output.push_str(&alias.name); + match &alias.asname { + Some(asname_text) => { + pprint_output.push_str(" as "); + pprint_output.push_str(asname_text); + } + _ => (), + } + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } +} + +fn format_vec_keywords(keywords: &[Keyword], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for keyword in keywords.iter() { + at_least_one = true; + keyword.pprint(pprint_output); + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } +} + +fn format_vec_pattern_for_or(or_choices: &[Pattern], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for or_choice in or_choices.iter() { + at_least_one = true; + + if let PatternDesc::MatchOr(_) = *or_choice.desc { + pprint_output.push_str("("); + or_choice.desc.pprint(pprint_output); + pprint_output.push_str(")"); + } else { + or_choice.desc.pprint(pprint_output); + } + + pprint_output.push_str(" | "); + } + if at_least_one { + pprint_output.pop_many(3); + } +} + +fn format_vec_pattern(choices: &[Pattern], pprint_output: &mut PrintHelper) { + let mut at_least_one = false; + for or_choice in choices.iter() { + at_least_one = true; + + if let PatternDesc::MatchOr(_) = *or_choice.desc { + or_choice.desc.pprint(pprint_output); + } else { + or_choice.desc.pprint(pprint_output); + } + + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } +} + +/// +/// Function will format output without a trailing newline +/// the caller is to add newline after the block if appropriate +fn format_block(body: &[Stmt], pprint_output: &mut PrintHelper) { + pprint_output.inc_ident(); + for item in body.iter() { + item.pprint(pprint_output); + pprint_output.push_str("\n"); + } + // remove last newline, we only want newlines between block statements + pprint_output.pop(); + pprint_output.dec_ident(); +} + +impl Stmt { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + pprint_output.push_ident(); + match &self.desc { + StmtDesc::Assign { + targets, + value, + type_comment: _, + } => { + for targ_elm in targets.iter() { + (*targ_elm.desc) + .pprint_with_priority_level(pprint_output, PriorityLevel::NamedExpr); + pprint_output.push_str(" = "); + } + pprint_output.pop_many(3); + + pprint_output.push_str(" = "); + handle_assign_rhs_yield(&value.desc, pprint_output); + } + StmtDesc::AnnAssign { + target, + annotation, + value, + simple, + } => { + let lhs = &*target.desc; + if *simple == 0 { + // not simple and lhs is a Name, then wrap the name in ()'s + match lhs { + ExprDesc::Name { id, ctx: _ } => { + pprint_output.push_str("("); + pprint_output.push_str(id); + pprint_output.push_str(")"); + } + _ => lhs.pprint(pprint_output), + } + } else { + lhs.pprint(pprint_output); + } + + pprint_output.push_str(": "); + (*annotation.desc).pprint(pprint_output); + + if let Some(v) = value { + pprint_output.push_str(" = "); + (*v.desc).pprint(pprint_output); + } + } + StmtDesc::AugAssign { target, op, value } => { + (*target.desc).pprint(pprint_output); + pprint_output.push_str(" "); + op.pprint(pprint_output); + pprint_output.push_str("= "); + handle_assign_rhs_yield(&value.desc, pprint_output); + } + StmtDesc::Expr(expr) => (*expr.desc).pprint(pprint_output), + StmtDesc::Delete(exprs) => { + pprint_output.push_str("del "); + format_vec_expr(exprs, pprint_output); + } + StmtDesc::Import(aliases) => { + pprint_output.push_str("import "); + format_vec_alias(aliases, pprint_output); + } + StmtDesc::ImportFrom { + module__, + names, + level, + } => { + pprint_output.push_str("from "); + + match level { + Some(llevel) => { + let compl = *llevel; + if compl > 0 { + let mut ll = 0; + while ll < compl { + pprint_output.push_str("."); + ll += 1; + } + } + } + _ => (), + } + + match module__ { + Some(mm) => pprint_output.push_str(mm), + _ => (), + } + + pprint_output.push_str(" import "); + format_vec_alias(names, pprint_output); + } + StmtDesc::Pass => pprint_output.push_str("pass"), + StmtDesc::Break => pprint_output.push_str("break"), + StmtDesc::Continue => pprint_output.push_str("continue"), + StmtDesc::Raise { exc, cause } => { + pprint_output.push_str("raise"); + + match &exc { + Some(ex) => { + pprint_output.push_str(" "); + (*ex.desc).pprint(pprint_output); + match &cause { + Some(ca) => { + pprint_output.push_str(" from "); + (*ca.desc).pprint(pprint_output); + } + _ => (), + } + } + _ => (), + }; + } + StmtDesc::Assert { test, msg } => { + pprint_output.push_str("assert "); + (*test.desc).pprint(pprint_output); + + match &msg { + Some(msg) => { + pprint_output.push_str(", "); + (*msg.desc).pprint(pprint_output); + } + _ => (), + }; + } + StmtDesc::Return(value) => { + pprint_output.push_str("return"); + + match &value { + Some(val) => { + pprint_output.push_str(" "); + (*val.desc).pprint(pprint_output); + } + _ => (), + }; + } + StmtDesc::Global(names) => { + pprint_output.push_str("global "); + format_vec_str(names, pprint_output); + } + StmtDesc::Nonlocal(names) => { + pprint_output.push_str("nonlocal "); + format_vec_str(names, pprint_output); + } + StmtDesc::If { test, body, orelse } => { + format_if_stmt(test, body, orelse, pprint_output) + } + StmtDesc::For { + target, + iter, + body, + orelse, + type_comment: _, + } => format_for_stmt(target, iter, body, orelse, false, pprint_output), + StmtDesc::AsyncFor { + target, + iter, + body, + orelse, + type_comment: _, + } => format_for_stmt(target, iter, body, orelse, true, pprint_output), + StmtDesc::While { test, body, orelse } => { + pprint_output.push_str("while "); + (*test.desc).pprint(pprint_output); + pprint_output.push_str(":\n"); + + format_block(body, pprint_output); + + if !orelse.is_empty() { + pprint_output.push_str("\nelse:\n"); + format_block(orelse, pprint_output); + } + } + StmtDesc::AsyncFunctionDef { + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment, + } => format_funcdef( + true, + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment, + pprint_output, + ), + StmtDesc::FunctionDef { + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment, + } => format_funcdef( + false, + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment, + pprint_output, + ), + StmtDesc::With { + items, + body, + type_comment, + } => format_with(false, items, body, type_comment, pprint_output), + StmtDesc::AsyncWith { + items, + body, + type_comment, + } => format_with(true, items, body, type_comment, pprint_output), + StmtDesc::Try { + body, + handlers, + orelse, + finalbody, + } => { + pprint_output.push_str("try:\n"); + format_block(body, pprint_output); + + for handle in handlers { + handle.desc.pprint(pprint_output); + } + + if !orelse.is_empty() { + pprint_output.push_str("\n"); + pprint_output.push_ident(); + pprint_output.push_str("else:\n"); + format_block(orelse, pprint_output); + } + + if !finalbody.is_empty() { + pprint_output.push_str("\n"); + pprint_output.push_ident(); + pprint_output.push_str("finally:\n"); + format_block(finalbody, pprint_output); + } + } + StmtDesc::ClassDef { + name, + bases, + keywords, + body, + decorator_list, + type_params: _, + } => format_class_def(name, bases, keywords, body, decorator_list, pprint_output), + StmtDesc::Match { subject, cases } => { + pprint_output.push_str("match "); + subject.desc.pprint(pprint_output); + pprint_output.push_str(":\n"); + pprint_output.inc_ident(); + + for case in cases { + pprint_output.push_ident(); + case.pprint(pprint_output); + } + + pprint_output.dec_ident(); + } + } + } +} + +impl MatchCase { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + pprint_output.push_str("case "); + self.pattern.desc.pprint(pprint_output); + + match &self.guard { + Some(if_clause) => { + pprint_output.push_str(" if "); + (*if_clause.desc).pprint(pprint_output); + } + None => (), + } + + pprint_output.push_str(":\n"); + + format_block(&self.body, pprint_output); + pprint_output.push_str("\n"); + } +} + +impl PatternDesc { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + match self { + PatternDesc::MatchOr(or_choices) => { + format_vec_pattern_for_or(or_choices, pprint_output) + } + PatternDesc::MatchSequence(choices) => { + pprint_output.push_str("["); + format_vec_pattern(choices, pprint_output); + pprint_output.push_str("]"); + } + PatternDesc::MatchClass { + cls, + patterns, + kwd_attrs, + kwd_patterns, + } => { + cls.desc.pprint(pprint_output); + pprint_output.push_str("("); + let mut at_least_one_instance = false; + + for pattern in patterns { + at_least_one_instance = true; + (*pattern.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + + for instance in kwd_attrs.iter().zip(kwd_patterns.iter()) { + at_least_one_instance = true; + + let (name, pattern) = instance; + pprint_output.push_str(format!("{}=", name).as_str()); + (*pattern.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + + if at_least_one_instance { + pprint_output.pop_many(2); + } + + pprint_output.push_str(")"); + } + PatternDesc::MatchStar(name) => match name { + Some(name) => pprint_output.push_str(format!("*{}", name).as_str()), + None => pprint_output.push_str("*_"), + }, + PatternDesc::MatchValue(expr) => expr.desc.pprint(pprint_output), + PatternDesc::MatchSingleton(constant) => match constant { + Some(constant) => constant.pprint(pprint_output), + None => pprint_output.push_str("None"), + }, + + PatternDesc::MatchMapping { + keys, + patterns, + rest, + } => { + pprint_output.push_str("{"); + + let mut at_least_one_instance = false; + + for instance in keys.iter().zip(patterns.iter()) { + at_least_one_instance = true; + + let (expression, pattern) = instance; + (*expression.desc).pprint(pprint_output); + pprint_output.push_str(": "); + (*pattern.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + + if let Some(rest) = rest { + pprint_output.push_str(format!("**{}", rest).as_str()); + } else if at_least_one_instance { + pprint_output.pop_many(2); + } + + pprint_output.push_str("}"); + } + + PatternDesc::MatchAs { pattern, name } => { + if pattern.is_none() && name.is_none() { + pprint_output.push_str("_"); + } else if pattern.is_some() { + pattern.as_ref().unwrap().desc.pprint(pprint_output); + + if name.is_some() { + pprint_output.push_str(" as "); + pprint_output.push_str(name.clone().unwrap().as_str()); + } + } else if name.is_some() { + pprint_output.push_str(name.clone().unwrap().as_str()); + } + } + } + } +} + +fn format_class_def( + name: &str, + bases: &[Expr], + keywords: &[Keyword], + body: &[Stmt], + decorator_list: &[Expr], + pprint_output: &mut PrintHelper, +) { + for item in decorator_list.iter() { + pprint_output.push_str("@"); + (*item.desc).pprint(pprint_output); + pprint_output.push_str("\n"); + } + pprint_output.push_str(format!("class {}", name).as_str()); + + if !bases.is_empty() || !keywords.is_empty() { + //superclass_items + pprint_output.push_str("("); + format_vec_expr(bases, pprint_output); + if !bases.is_empty() && !keywords.is_empty() { + pprint_output.push_str(", "); + } + + if !keywords.is_empty() { + format_vec_keywords(keywords, pprint_output) + } + pprint_output.push_str(")"); + } + + pprint_output.push_str(":\n"); + + if !body.is_empty() { + pprint_output.inc_ident(); + process_module_class_functiondef_block(body, false, pprint_output); + pprint_output.dec_ident(); + + match &body.last().unwrap().desc { + StmtDesc::FunctionDef { .. } | StmtDesc::AsyncFunctionDef { .. } => (), + _ => { + pprint_output.push_str("\n"); + } + } + } +} + +pub fn format_with( + is_async: bool, + items: &[Withitem], + body: &[Stmt], + _type_comment: &Option, + pprint_output: &mut PrintHelper, +) { + if is_async { + pprint_output.push_str("async "); + } + pprint_output.push_str("with "); + + let mut at_least_one = false; + for withitem in items.iter() { + at_least_one = true; + withitem.pprint(pprint_output); + pprint_output.push_str(", "); + } + if at_least_one { + pprint_output.pop_many(2); + } + + pprint_output.push_str(":\n"); + format_block(body, pprint_output); +} + +pub fn format_funcdef( + is_async: bool, + name: &str, + args: &Arguments, + body: &[Stmt], + decorator_list: &[Expr], + _type_params: &[Expr], + returns: &Option, + _type_comment: &Option, + pprint_output: &mut PrintHelper, +) { + for item in decorator_list.iter() { + pprint_output.push_str("@"); + (*item.desc).pprint(pprint_output); + pprint_output.push_str("\n"); + pprint_output.push_ident(); + } + if is_async { + pprint_output.push_str("async def "); + } else { + pprint_output.push_str("def "); + } + pprint_output.push_str(name); + // args are quite involved + { + let mut at_least_one_arg = false; + pprint_output.push_str("("); + + { + let mut positional_and_args = vec![]; + for it in args.posonlyargs.iter() { + positional_and_args.push(it); + } + + let mut pos_slash_index: i32 = positional_and_args.len() as i32; + + for it in args.args.iter() { + positional_and_args.push(it); + } + + // normal args - may have default values... + let mut args_w_detaults = vec![]; // these come second + for it in positional_and_args + .iter() + .rev() + .zip(args.defaults.iter().rev()) + { + args_w_detaults.push(it); + } + + // printing + // print those without defaults + let mut w_default_cnt = positional_and_args.len() - args_w_detaults.len(); + if w_default_cnt > 0 { + for arg_no_default in positional_and_args.iter() { + at_least_one_arg = true; + arg_no_default.pprint(pprint_output); + pprint_output.push_str(", "); + pos_slash_index -= 1; + if pos_slash_index == 0 { + pprint_output.push_str("/, "); + } + w_default_cnt -= 1; + if w_default_cnt == 0 { + break; + } + } + } + // now for those with defaults: + for it in args_w_detaults.iter().rev() { + at_least_one_arg = true; + let (arg, defaultx) = it; + arg.pprint(pprint_output); + pprint_output.push_str("="); + (*defaultx.desc).pprint(pprint_output); + pprint_output.push_str(", "); + pos_slash_index -= 1; + if pos_slash_index == 0 { + pprint_output.push_str("/, "); + } + } + } + + //vararg + match &args.vararg { + Some(vararg) => { + at_least_one_arg = true; + pprint_output.push_str("*"); + vararg.pprint(pprint_output); + pprint_output.push_str(", "); + } + _ => { + if !args.kwonlyargs.is_empty() { + pprint_output.push_str("*, "); + } + } + } + + //kwonlyargs + for it in args.kwonlyargs.iter().zip(args.kw_defaults.iter()) { + // normal args + at_least_one_arg = true; + let (kwonlyarg, kwonlyarg_default) = it; + + kwonlyarg.pprint(pprint_output); + + match kwonlyarg_default { + Some(x) => { + pprint_output.push_str("="); + (*x.desc).pprint(pprint_output); + } + _ => (), + } + + pprint_output.push_str(", "); + } + + //... + + //kwarg + match &args.kwarg { + Some(kwarg) => { + at_least_one_arg = true; + pprint_output.push_str("**"); + kwarg.pprint(pprint_output); + pprint_output.push_str(", "); + } + _ => (), + } + + if at_least_one_arg { + pprint_output.pop_many(2); + } + + pprint_output.push_str(")"); + } + // args + + match &returns { + Some(ret) => { + pprint_output.push_str(" -> "); + (*ret.desc).pprint(pprint_output); + } + _ => (), + } + + pprint_output.push_str(":\n"); + pprint_output.inc_ident(); + process_module_class_functiondef_block(body, false, pprint_output); + pprint_output.dec_ident(); +} + +pub fn format_for_stmt( + target: &Expr, + iter: &Expr, + body: &[Stmt], + orelse: &[Stmt], + is_async: bool, + pprint_output: &mut PrintHelper, +) { + if is_async { + pprint_output.push_str("async "); + } + pprint_output.push_str("for "); + (*target.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Tuple); + pprint_output.push_str(" in "); + (*iter.desc).pprint(pprint_output); + pprint_output.push_str(":\n"); + + format_block(body, pprint_output); + + if !orelse.is_empty() { + pprint_output.push_str("\nelse:\n"); + + format_block(orelse, pprint_output); + } +} + +pub fn format_if_stmt( + test: &Expr, + body: &[Stmt], + orelse: &[Stmt], + pprint_output: &mut PrintHelper, +) { + pprint_output.push_str("if "); + (*test.desc).pprint(pprint_output); + pprint_output.push_str(":\n"); + + format_block(body, pprint_output); + + let mut isfirst = true; + let orelse_len = orelse.len(); + + for orelse_statement in orelse.iter() { + // Python has an interesting way to represent elif instances. "elif + // clauses don’t have a special representation in the AST, but rather + // appear as extra If nodes within the orelse section of the previous + // one." - https://docs.python.org/3/library/ast.html + // Hence if an orelse field of an If node contains a single if + // statement then the parent else of the If node gets turned into an + // elif block with the contents of the if. However, if there is more + // than one item in the orelse field block (even if the first item is + // an if) then this logic does not apply and the else of the If node + //stays as an else. + if orelse_len == 1 { + match &orelse_statement.desc { + StmtDesc::If { test, body, orelse } => { + if isfirst { + pprint_output.push_str("\n"); + pprint_output.push_ident(); + pprint_output.push_str("el"); + } + isfirst = false; + format_if_stmt(test, body, orelse, pprint_output); + + pprint_output.push_str("\n"); + continue; + } + _ => (), + } + } + + if isfirst { + pprint_output.push_str("\n"); + pprint_output.push_ident(); + pprint_output.push_str("else:\n"); + } + isfirst = false; + pprint_output.inc_ident(); + orelse_statement.pprint(pprint_output); + pprint_output.dec_ident(); + + pprint_output.push_str("\n"); + } + if !isfirst { + // remove last newline if at least one orelse block + pprint_output.pop(); + } +} + +impl ExprDesc { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + // PriorityLevel::Test is the lowest level of priority besides tuple, + // tuple is not used as the default to avoid supressing parenthesis + // being added around tuple expressions of simple expressions. + self.pprint_with_priority_level(pprint_output, PriorityLevel::Test); + } + + fn pprint_with_priority_level( + &self, + pprint_output: &mut PrintHelper, + current_priority_level: PriorityLevel, + ) { + match self { + ExprDesc::Name { id, ctx: _ } => pprint_output.push_str(id), + ExprDesc::Constant { value, kind: _ } => match value { + Some(val) => val.pprint(pprint_output), + _ => pprint_output.push_str("None"), + }, + ExprDesc::List { elts, ctx: _ } => { + pprint_output.push_str("["); + format_vec_expr(elts, pprint_output); + pprint_output.push_str("]"); + } + ExprDesc::Tuple { elts, ctx: _ } => { + let priority_level = PriorityLevel::Tuple; + + left_parenthesis(pprint_output, current_priority_level, priority_level); + + let mut count = 0; + for expr in elts.iter() { + count += 1; + // PriorityLevel::Test, not Tuple + (*expr.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + + if count > 0 { + pprint_output.pop(); + if count > 1 { + // leave the last comma if there is only one item in the tuple + pprint_output.pop(); + } + } + + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Set(ss) => { + pprint_output.push_str("{"); + format_vec_expr(ss, pprint_output); + pprint_output.push_str("}"); + } + ExprDesc::Await(arg) => { + let priority_level = PriorityLevel::Await; + left_parenthesis(pprint_output, current_priority_level, priority_level); + pprint_output.push_str("await "); + + match *arg.desc { + ExprDesc::Yield(_) | ExprDesc::YieldFrom(_) => { + pprint_output.push_str("("); + (*arg.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Atom); + pprint_output.push_str(")"); + } + _ => (*arg.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Atom), + } + + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Dict { keys, values } => { + pprint_output.push_str("{"); + let mut atleastone = false; + + for (k, v) in keys.iter().zip(values.iter()) { + match k { + Some(value) => { + (*value.desc).pprint(pprint_output); + pprint_output.push_str(": "); + (*v.desc).pprint(pprint_output); + } + _ => { + pprint_output.push_str("**"); + (*v.desc).pprint_with_priority_level( + pprint_output, + PriorityLevel::ExpressionOrBitOr, + ); + } + } + pprint_output.push_str(", "); + atleastone = true; + } + + if atleastone { + pprint_output.pop_many(2); + } + + pprint_output.push_str("}"); + } + ExprDesc::Lambda { args, body } => { + let priority_level = PriorityLevel::Test; + left_parenthesis(pprint_output, current_priority_level, priority_level); + pprint_output.push_str("lambda "); + + let mut atleastone = false; + for arg in args.args.iter() { + atleastone = true; + arg.pprint(pprint_output); + pprint_output.push_str(", "); + } + + if atleastone { + pprint_output.pop_many(2); + } else { + // remove the space after the lambda + pprint_output.pop(); + } + + pprint_output.push_str(": "); + (*body.desc).pprint_with_priority_level(pprint_output, priority_level); + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::UnaryOp { op, operand } => { + let priority_level = unary_operator_to_priority_level(op); + left_parenthesis(pprint_output, current_priority_level, priority_level); + op.pprint(pprint_output); + (*operand.desc).pprint_with_priority_level(pprint_output, priority_level); + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Subscript { + value, + slice, + ctx: _, + } => { + (*value.desc).pprint(pprint_output); + pprint_output.push_str("["); + + match &(*slice.desc) { + ExprDesc::Tuple { elts, ctx: _ } => { + let mut count = 0; + for expr in elts.iter() { + count += 1; + (*expr.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + + pprint_output.pop(); // always remove the space + if count > 1 { + // when there is only one item, then leave the , at the end + pprint_output.pop(); + } + } + _ => (*slice.desc).pprint(pprint_output), + } + + pprint_output.push_str("]"); + } + ExprDesc::Slice { lower, upper, step } => { + if lower.is_none() && upper.is_none() && step.is_none() { + pprint_output.push_str(":"); + } else { + match lower { + Some(thing) => { + (*thing.desc).pprint(pprint_output); + pprint_output.push_str(":"); + } + _ => (), + } + + match upper { + Some(thing) => { + match lower { + Some(_) => (), + _ => pprint_output.push_str(":"), + } + (*thing.desc).pprint(pprint_output); + } + _ => (), + } + + match step { + Some(thing) => { + match lower { + Some(_) => (), + _ => pprint_output.push_str(":"), + } + + pprint_output.push_str(":"); + + (*thing.desc).pprint(pprint_output); + } + _ => (), + } + } + } + ExprDesc::BinOp { left, op, right } => { + let priority_level = operator_to_priority_level(op); + // default is left associative + let mut left_priority_level = priority_level; + let mut right_priority_level = priority_level.next(); + + if op == &Operator::Pow { + // right associative + left_priority_level = priority_level.next(); + right_priority_level = priority_level; + } + + left_parenthesis(pprint_output, current_priority_level, priority_level); + (left.desc).pprint_with_priority_level(pprint_output, left_priority_level); + pprint_output.push_str(" "); + op.pprint(pprint_output); + pprint_output.push_str(" "); + (right.desc).pprint_with_priority_level(pprint_output, right_priority_level); + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::BoolOp { op, values } => { + let priority_level = bool_operator_to_priority_level(op); + + left_parenthesis(pprint_output, current_priority_level, priority_level); + + let mut is_first_elem = true; + for value in values.iter() { + let value_description = &*value.desc; + + if let ExprDesc::BoolOp { + op: child_operator, .. + } = value_description + { + let child_priority_level = bool_operator_to_priority_level(op); + // insert params for nested non collapsed boolean + // operators + if is_first_elem && op == &Boolop::Or && child_operator == &Boolop::And { + // except for case of: or(and(_, _), _) + // e.g. `a and b or c` stays as `a and b or c` + // with no params needed + value_description + .pprint_with_priority_level(pprint_output, child_priority_level); + } else { + value_description + .pprint_with_priority_level(pprint_output, PriorityLevel::Atom); + } + } else if let ExprDesc::UnaryOp { + op: child_operator, .. + } = value_description + { + // Circumvent operator precedence here and print always parantheses around + // `not` operator if it is not the first element in a binary expression. + // Necessary to comply with CPythons AST pretty printing. + if !is_first_elem && child_operator == &Unaryop::Not { + pprint_output.push_str("("); + value_description.pprint(pprint_output); + pprint_output.push_str(")"); + } else { + value_description.pprint(pprint_output); + } + } else { + value_description.pprint(pprint_output); + } + pprint_output.push_str(" "); + op.pprint(pprint_output); + pprint_output.push_str(" "); + is_first_elem = false; + } + + pprint_output.pop_many(2); + match op { + Boolop::And => { + pprint_output.pop_many(3); + } + Boolop::Or => { + pprint_output.pop_many(2); + } + }; + + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Compare { + left, + ops, + comparators, + } => { + let priority_level = PriorityLevel::Compare; + left_parenthesis(pprint_output, current_priority_level, priority_level); + + (*left.desc).pprint_with_priority_level(pprint_output, priority_level.next()); + pprint_output.push_str(" "); + + for it in ops.iter().zip(comparators.iter()) { + let (op, comp) = it; + op.pprint(pprint_output); + pprint_output.push_str(" "); + (*comp.desc).pprint_with_priority_level(pprint_output, priority_level.next()); + pprint_output.push_str(" "); + } + pprint_output.pop(); + + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Attribute { + value, + attr, + ctx: _, + } => { + (*value.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Atom); + + match *value.desc { + ExprDesc::Constant { + value: + Some(ConstantDesc::Num(Num::Int(_))) + | Some(ConstantDesc::Num(Num::BigInt(_))), + .. + } => pprint_output.push_str(" ."), + _ => pprint_output.push_str("."), + } + + pprint_output.push_str(attr); + } + ExprDesc::Call { + func, + args, + keywords, + } => { + (*func.desc).pprint(pprint_output); + pprint_output.push_str("("); + + let mut atleastone = false; + for keyword_or_arg in args.iter() { + atleastone = true; + (*keyword_or_arg.desc).pprint(pprint_output); + pprint_output.push_str(", "); + } + for keyword_or_arg in keywords.iter() { + atleastone = true; + keyword_or_arg.pprint(pprint_output); + pprint_output.push_str(", "); + } + if atleastone { + pprint_output.pop_many(2); + } + + pprint_output.push_str(")"); + } + ExprDesc::Starred { value, ctx: _ } => { + pprint_output.push_str("*"); + (*value.desc) + .pprint_with_priority_level(pprint_output, PriorityLevel::ExpressionOrBitOr); + } + ExprDesc::IfExp { test, body, orelse } => { + let priority_level = PriorityLevel::Test; + left_parenthesis(pprint_output, current_priority_level, priority_level); + + (*body.desc).pprint_with_priority_level(pprint_output, priority_level.next()); + pprint_output.push_str(" if "); + (*test.desc).pprint_with_priority_level(pprint_output, priority_level.next()); + pprint_output.push_str(" else "); + (*orelse.desc).pprint_with_priority_level(pprint_output, priority_level); + + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::ListComp { elt, generators } => { + format_list_comp("[", "]", &elt.desc, generators, pprint_output); + } + ExprDesc::SetComp { elt, generators } => { + format_list_comp("{", "}", &elt.desc, generators, pprint_output); + } + ExprDesc::GeneratorExp { elt, generators } => { + format_list_comp("(", ")", &elt.desc, generators, pprint_output); + } + ExprDesc::DictComp { + key, + value, + generators, + } => { + pprint_output.push_str("{"); + (*key.desc).pprint(pprint_output); + pprint_output.push_str(": "); + (*value.desc).pprint(pprint_output); + pprint_output.push_str(" "); + + for comp in generators.iter() { + comp.pprint(pprint_output); + pprint_output.push_str(" "); + } + pprint_output.pop(); + + pprint_output.push_str("}"); + } + ExprDesc::NamedExpr { target, value } => { + let priority_level = PriorityLevel::NamedExpr; + left_parenthesis(pprint_output, current_priority_level, priority_level); + (*target.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Atom); + pprint_output.push_str(" := "); + (*value.desc).pprint_with_priority_level(pprint_output, PriorityLevel::Atom); + right_parenthesis(pprint_output, current_priority_level, priority_level); + } + ExprDesc::Yield(callx) => { + pprint_output.push_str("yield"); + + match &callx { + Some(val) => { + pprint_output.push_str(" "); + + match *val.desc { + ExprDesc::Await(_) => { + pprint_output.push_str("("); + (*val.desc).pprint(pprint_output); + pprint_output.push_str(")"); + } + _ => (*val.desc).pprint(pprint_output), + } + } + _ => (), + } + } + ExprDesc::YieldFrom(val) => { + pprint_output.push_str("yield from "); + + match *val.desc { + ExprDesc::Await(_) => { + pprint_output.push_str("("); + (*val.desc).pprint(pprint_output); + pprint_output.push_str(")"); + } + _ => (*val.desc).pprint(pprint_output), + } + } + ExprDesc::JoinedStr(exprs) => { + pprint_output.push_str("f"); + + if exprs.len() == 1 { + // special logic to deal with case where f-string consists + // of a single string and no iterpolation nodes... + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(const_string)), + kind: _, + } = &*exprs[0].desc + { + let formatted_output = const_string.replace('{', "{{").replace('}', "}}"); + pprint_output.push_str(&formatted_output); + return; + } + } + + // if a constant part of the f-string contains single quotes + // we surround the string with double quotes + let mut needs_double_quote = false; + let f_string_output_start = pprint_output.current_length(); + for expr in exprs.iter() { + pprint_output.ignore_next_n_chars(1); + + if let ExprDesc::Constant { + value: Some(ConstantDesc::Str(const_string)), + kind: _, + } = &*expr.desc + { + let formatted_output = const_string.replace('{', "{{").replace('}', "}}"); + needs_double_quote |= + const_string[1..const_string.len() - 1].contains('\''); + pprint_output.push_str(&formatted_output); + } else { + (*expr.desc).pprint(pprint_output); + } + + pprint_output.pop(); + } + + let quote_type = if needs_double_quote { "\"" } else { "'" }; + pprint_output.insert_at(f_string_output_start, quote_type); + pprint_output.push_str(quote_type); + } + ExprDesc::FormattedValue { + value, + conversion, + format_spec, + } => { + // The f-string's consists of a series of formattedValues and + // string constant nodes. Strings are always wrapped in either + // ' or " (depending on if they themselves contain a ') and we + // always ignore the leading and trailing char (the ' or ") + // via the `ignore_next_n_chars` and `pop` calls. For + // consistency therefore, we have to add a leading and + // trailing ' + pprint_output.push_str("'{"); + (*value.desc).pprint(pprint_output); + + if let Some(conversion) = conversion { + // the following magic numbers are defined in the Python + // language spec: + // https://docs.python.org/3.10/library/ast.html#ast.FormattedValue + pprint_output.push_str(match conversion { + 115 => "!s", + 114 => "!r", + 97 => "!a", + _ => "", + }); + } + + if let Some(format_spec) = format_spec { + pprint_output.push_str(":"); + pprint_output.ignore_next_n_chars(2); + (*format_spec.desc).pprint(pprint_output); + pprint_output.pop(); + } + pprint_output.push_str("}'"); + } + } + } +} + +fn format_list_comp( + prefix: &str, + postfix: &str, + exprdesc: &ExprDesc, + generators: &[Comprehension], + pprint_output: &mut PrintHelper, +) { + pprint_output.push_str(prefix); + exprdesc.pprint(pprint_output); + pprint_output.push_str(" "); + + for comp in generators.iter() { + comp.pprint(pprint_output); + pprint_output.push_str(" "); + } + pprint_output.pop(); + + pprint_output.push_str(postfix); +} + +impl Arg { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + pprint_output.push_str(&self.arg); + match &self.annotation { + Some(annot) => { + pprint_output.push_str(": "); + (*annot.desc).pprint(pprint_output); + } + _ => (), + } + } +} + +fn handle_assign_rhs_yield(value: &ExprDesc, pprint_output: &mut PrintHelper) { + // Bit of a hack but it seems that yeild when used on the rhs of an expression requires wrapping in params: () + match &value { + ExprDesc::Yield(yldarg) => { + pprint_output.push_str("(yield"); + match yldarg { + Some(arg) => { + pprint_output.push_str(" "); + (*arg.desc).pprint(pprint_output); + } + _ => (), + } + pprint_output.push_str(")"); + } + ExprDesc::YieldFrom(yfarg) => { + pprint_output.push_str("(yield from "); + (*yfarg.desc).pprint(pprint_output); + pprint_output.push_str(")"); + } + _ => { + value.pprint(pprint_output); + } + }; +} + +impl Comprehension { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + pprint_output.push_str(if self.is_async { "async for " } else { "for " }); + self.target + .desc + .pprint_with_priority_level(pprint_output, PriorityLevel::Tuple); + pprint_output.push_str(" in "); + self.iter.desc.pprint(pprint_output); + pprint_output.push_str(" "); + for guard in self.ifs.iter() { + pprint_output.push_str("if "); + guard.desc.pprint(pprint_output); + pprint_output.push_str(" "); + } + + pprint_output.pop(); + } +} + +impl Keyword { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + match &self.arg { + Some(arg) => { + pprint_output.push_str(arg); + pprint_output.push_str("="); + (*self.value.desc).pprint(pprint_output); + } + _ => { + pprint_output.push_str("**"); + (*self.value.desc).pprint(pprint_output); + } + } + } +} + +impl Unaryop { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + let res = match self { + Unaryop::Invert => "~", + Unaryop::Not => "not ", + Unaryop::UAdd => "+", + Unaryop::USub => "-", + }; + + pprint_output.push_str(res) + } +} + +impl Operator { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + let res = match self { + Operator::Add => "+", + Operator::Sub => "-", + Operator::Mult => "*", + Operator::MatMult => "@", + Operator::Div => "/", + Operator::Mod => "%", + Operator::Pow => "**", + Operator::LShift => "<<", + Operator::RShift => ">>", + Operator::BitOr => "|", + Operator::BitXor => "^", + Operator::BitAnd => "&", + Operator::FloorDiv => "//", + }; + + pprint_output.push_str(res) + } +} + +impl Cmpop { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + let res = 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", + }; + + pprint_output.push_str(res) + } +} + +impl Boolop { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + let res = match self { + Boolop::And => "and", + Boolop::Or => "or", + }; + + pprint_output.push_str(res) + } +} + +impl ConstantDesc { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + match self { + ConstantDesc::Num(Num::Int(vala)) => { + pprint_output.push_str(&vala.to_string()); + } + ConstantDesc::Num(Num::Float(vala)) => { + pprint_output.push_str(&cpython_float_to_string(vala, false)); + } + ConstantDesc::Num(Num::Complex(vala)) => { + pprint_output.push_str(&cpython_float_to_string(vala, true)); + pprint_output.push_str("j"); + } + rest => { + let res = match rest { + ConstantDesc::Str(vala) => vala, + ConstantDesc::ByteStr(vala) => { + pprint_output.push_str("b"); + vala + } + ConstantDesc::Num(Num::BigInt(vala)) => vala, + ConstantDesc::Bool(true) => "True", + ConstantDesc::Bool(false) => "False", + ConstantDesc::Ellipsis => "...", + _ => "", + }; + pprint_output.push_str(res) + } + }; + } +} + +impl Withitem { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + self.context_expr.desc.pprint(pprint_output); + + if let Some(opt) = &self.optional_vars { + pprint_output.push_str(" as "); + opt.desc.pprint(pprint_output); + } + } +} + +impl ExcepthandlerDesc { + pub fn pprint(&self, pprint_output: &mut PrintHelper) { + match self { + ExcepthandlerDesc::ExceptHandler { type__, name, body } => { + pprint_output.push_str("\n"); + pprint_output.push_ident(); + pprint_output.push_str("except"); + + if let Some(tt) = type__ { + pprint_output.push_str(" "); + (*tt.desc).pprint(pprint_output); + } + + if let Some(nname) = name { + pprint_output.push_str(" as "); + pprint_output.push_str(nname); + } + + pprint_output.push_str(":\n"); + + format_block(body, pprint_output); + } + } + } +} diff --git a/source/errpy/printers/ast_pretty_print_helper.rs b/source/errpy/printers/ast_pretty_print_helper.rs new file mode 100644 index 00000000000..dce6c90eda4 --- /dev/null +++ b/source/errpy/printers/ast_pretty_print_helper.rs @@ -0,0 +1,106 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +use std::cmp::min; + +pub struct PrintHelper<'a> { + pub pprint_output: &'a mut String, + ident_amount: usize, + ident_current: usize, + ident_str: String, + ignore_next_n_chars: usize, +} + +impl PrintHelper<'_> { + pub fn new(pprint_output: &'_ mut String, ident_amount: usize) -> PrintHelper { + PrintHelper { + pprint_output, + ident_amount, + ident_current: 0, + ident_str: "".to_string(), + ignore_next_n_chars: 0, + } + } + + pub fn ignore_next_n_chars(&mut self, ignore_next_n_chars: usize) { + self.ignore_next_n_chars += ignore_next_n_chars; + } + + pub fn push_str(&mut self, to_push: &str) { + if self.ignore_next_n_chars > 0 { + // cut up to ignore_next_n_chars chars from input, if not enough to remove in one go + // cut remainder from next call to push_str + let to_cut = min(to_push.len(), self.ignore_next_n_chars); + self.pprint_output.push_str(&to_push[to_cut..]); + self.ignore_next_n_chars -= to_cut; + } else { + self.pprint_output.push_str(to_push); + } + } + + pub fn push_ident(&mut self) { + if self.ident_current > 0 { + self.pprint_output.push_str(&self.ident_str); + } + } + + pub fn pop(&mut self) { + self.pprint_output.pop(); + } + + pub fn pop_many(&mut self, topop: usize) { + match topop { + 1 => { + self.pprint_output.pop(); + } + _ => { + self.pprint_output + .truncate(self.pprint_output.len() - topop); + } + }; + } + + pub fn inc_ident(&mut self) { + self.ident_current += self.ident_amount; + self.inc_calc(); + } + + pub fn dec_ident(&mut self) { + self.ident_current -= self.ident_amount; + self.inc_calc(); + } + + fn inc_calc(&mut self) { + self.ident_str = " ".repeat(self.ident_current); + } + + pub fn current_length(&mut self) -> usize { + self.pprint_output.len() + } + + pub fn insert_at(&mut self, at_point: usize, what: &str) { + self.pprint_output.insert_str(at_point, what); + } + + pub fn substring_contains(&mut self, at_point: usize, what: &str) -> bool { + self.pprint_output[at_point..].contains(what) + } + + pub fn strip_all_but_one_trailing_newline(&mut self) { + let mut offset_from_end = 0; + for last_char in self.pprint_output.chars().rev() { + if last_char != '\n' { + break; + } + + offset_from_end += 1; + } + + if offset_from_end > 1 { + self.pprint_output + .truncate(self.pprint_output.len() - offset_from_end + 1); + } + } +} diff --git a/source/errpy/printers/ast_print.rs b/source/errpy/printers/ast_print.rs new file mode 100644 index 00000000000..2cc11e8629a --- /dev/null +++ b/source/errpy/printers/ast_print.rs @@ -0,0 +1,970 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +use std::fmt; + +use ast::Alias; +use ast::Arg; +use ast::Arguments; +use ast::Boolop; +use ast::Cmpop; +use ast::Comprehension; +use ast::ConstantDesc; +use ast::Excepthandler; +use ast::ExcepthandlerDesc; +use ast::Expr; +use ast::ExprContext; +use ast::ExprDesc; +use ast::Keyword; +use ast::MatchCase; +use ast::Mod_; +use ast::Num; +use ast::Operator; +use ast::Pattern; +use ast::PatternDesc; +use ast::Stmt; +use ast::StmtDesc; +use ast::Unaryop; +use ast::Withitem; + +use crate::ast; +use crate::cst_to_ast::ASTAndMetaData; + +pub const UNKOWN_NODE_MOD: &str = "~~?AST Mod_ Node Missing formatting?~~"; +pub const UNKOWN_NODE_EXPR: &str = "~~?AST ExprDesc Node Missing formatting?~~"; + +impl fmt::Display for ASTAndMetaData { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", self.ast.as_ref().unwrap()) + } +} + +impl fmt::Display for Mod_ { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + Mod_::Module { + body, + type_ignores: _, + } => { + write!(f, "Module(body=[{}], type_ignores=[])", format_vec(body)) + } + _ => write!(f, "{}", UNKOWN_NODE_MOD), // ignore + } + } +} + +impl fmt::Display for Stmt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.desc, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() + ) + } +} + +impl fmt::Display for StmtDesc { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + StmtDesc::Assign { + targets, + value, + type_comment: _, + } => { + write!( + f, + "Assign(targets=[{}], value={}, ", + format_vec(targets), + value + ) + } + StmtDesc::AnnAssign { + target, + annotation, + value, + simple, + } => { + let fmt_value = if let Some(v) = value { + format!(", value={}", v) + } else { + String::from("") + }; + + write!( + f, + "AnnAssign(target={}, annotation={}{}, simple={}, ", + target, annotation, fmt_value, simple, + ) + } + StmtDesc::AugAssign { target, op, value } => { + write!( + f, + "AugAssign(target={}, op={}, value={}, ", + target, op, value + ) + } + StmtDesc::Expr(expr) => write!(f, "Expr(value={}, ", expr), + StmtDesc::Delete(exprs) => { + write!(f, "Delete(targets=[{}], ", format_vec(exprs)) + } + StmtDesc::With { + items, + body, + type_comment: _, + } => { + write!( + f, + "With(items=[{}], body=[{}], ", + format_vec(items), + format_vec(body), + ) + } + StmtDesc::AsyncWith { + items, + body, + type_comment: _, + } => { + write!( + f, + "AsyncWith(items=[{}], body=[{}], ", + format_vec(items), + format_vec(body), + ) + } + StmtDesc::For { + target, + iter, + body, + orelse, + type_comment: _, + } => { + write!( + f, + "For(target={}, iter={}, body=[{}], orelse=[{}], ", + target, + iter, + format_vec(body), + format_vec(orelse) + ) + } + StmtDesc::AsyncFor { + target, + iter, + body, + orelse, + type_comment: _, + } => { + write!( + f, + "AsyncFor(target={}, iter={}, body=[{}], orelse=[{}], ", + target, + iter, + format_vec(body), + format_vec(orelse) + ) + } + StmtDesc::Try { + body, + handlers, + orelse, + finalbody, + } => { + write!( + f, + "Try(body=[{}], handlers=[{}], orelse=[{}], finalbody=[{}], ", + format_vec(body), + format_vec(handlers), + format_vec(orelse), + format_vec(finalbody) + ) + } + StmtDesc::While { test, body, orelse } => { + write!( + f, + "While(test={}, body=[{}], orelse=[{}], ", + test, + format_vec(body), + format_vec(orelse) + ) + } + StmtDesc::Pass => write!(f, "Pass("), + StmtDesc::Break => write!(f, "Break("), + StmtDesc::Continue => write!(f, "Continue("), + StmtDesc::Raise { exc, cause } => match exc { + Some(ex) => match cause { + Some(cuz) => write!(f, "Raise(exc={}, cause={}, ", ex, cuz), + _ => write!(f, "Raise(exc={}, ", ex), + }, + _ => write!(f, "Raise("), + }, + StmtDesc::Assert { test, msg } => match msg { + Some(msg) => write!(f, "Assert(test={}, msg={}, ", test, msg), + _ => write!(f, "Assert(test={}, ", test), + }, + StmtDesc::Return(value) => match value { + Some(valu) => write!(f, "Return(value={}, ", valu), + _ => write!(f, "Return("), + }, + StmtDesc::Global(names) => { + write!(f, "Global(names=[{}], ", format_vec_names(names)) + } + StmtDesc::Import(aliases) => { + write!(f, "Import(names=[{}], ", format_vec(aliases)) + } + StmtDesc::ImportFrom { + module__, + names, + level, + } => { + let modstr = match module__ { + Some(mmstr) => format!("module='{}', ", mmstr), + _ => String::from(""), + }; + let levelstr = match level { + Some(ll) => format!("level={}, ", ll), + _ => String::from(""), + }; + write!( + f, + "ImportFrom({}names=[{}], {}", + modstr, + format_vec(names), + levelstr + ) + } + StmtDesc::Nonlocal(names) => { + write!(f, "Nonlocal(names=[{}], ", format_vec_names(names)) + } + StmtDesc::If { test, body, orelse } => { + write!( + f, + "If(test={}, body=[{}], orelse=[{}], ", + test, + format_vec(body), + format_vec(orelse) + ) + } + StmtDesc::FunctionDef { + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment: _, + } => { + let rets = match returns { + Some(r) => format!(", returns={}", r), + _ => "".to_string(), + }; + + write!( + f, + "FunctionDef(name='{}', args={}, body=[{}], decorator_list=[{}]{}, type_params=[{}], ", + name, + args, + format_vec(body), + format_vec(decorator_list), + rets, + format_vec(type_params) + ) + } + StmtDesc::AsyncFunctionDef { + name, + args, + body, + decorator_list, + type_params, + returns, + type_comment: _, + } => { + let rets = match returns { + Some(r) => format!(", returns={}", r), + _ => "".to_string(), + }; + + write!( + f, + "AsyncFunctionDef(name='{}', args={}, body=[{}], decorator_list=[{}]{}, type_params=[{}], ", + name, + args, + format_vec(body), + format_vec(decorator_list), + rets, + format_vec(type_params) + ) + } + StmtDesc::ClassDef { + name, + bases, + keywords, + body, + decorator_list, + type_params, + } => { + write!( + f, + "ClassDef(name='{}', bases=[{}], keywords=[{}], body=[{}], decorator_list=[{}], type_params=[{}], ", + name, + format_vec(bases), + format_vec(keywords), + format_vec(body), + format_vec(decorator_list), + format_vec(type_params), + ) + } + StmtDesc::Match { subject, cases } => { + write!( + f, + "Match(subject={}, cases=[{}], ", + subject, + format_vec(cases), + ) + } + } + } +} + +impl fmt::Display for Alias { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let asname = match &self.asname { + Some(the_name) => format!("asname='{}', ", the_name), + _ => "".to_string(), + }; + + write!( + f, + "alias(name='{}', {}lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.name, + asname, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() + ) + } +} + +fn format_vec(exprs: &[T]) -> String { + exprs + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", ") +} + +fn format_vec_names(exprs: &[T]) -> String { + exprs + .iter() + .map(|targ_elm| format!("'{}'", targ_elm)) + .collect::>() + .join(", ") +} + +fn format_gens(generators: &[Comprehension]) -> String { + generators + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", ") +} + +impl fmt::Display for Expr { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.desc, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() + ) + } +} + +impl fmt::Display for MatchCase { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let guard_str = match &self.guard { + Some(guard) => format!("guard={}, ", guard), + _ => String::from(""), + }; + + write!( + f, + "match_case(pattern={}, {}body=[{}])", + self.pattern, + guard_str, + format_vec(&self.body), + ) + } +} + +impl fmt::Display for Pattern { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.desc, self.lineno, self.col_offset, self.end_lineno, self.end_col_offset + ) + } +} + +impl fmt::Display for PatternDesc { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + PatternDesc::MatchOr(or_choices) => { + write!(f, "MatchOr(patterns=[{}], ", format_vec(or_choices)) + } + PatternDesc::MatchSequence(choices) => { + write!(f, "MatchSequence(patterns=[{}], ", format_vec(choices)) + } + PatternDesc::MatchClass { + cls, + patterns, + kwd_attrs, + kwd_patterns, + } => { + write!( + f, + "MatchClass(cls={}, patterns=[{}], kwd_attrs=[{}], kwd_patterns=[{}], ", + cls, + format_vec(patterns), + format_vec_names(kwd_attrs), + format_vec(kwd_patterns) + ) + } + PatternDesc::MatchStar(name) => match name { + Some(name) => write!(f, "MatchStar(name='{}', ", name), + None => write!(f, "MatchStar("), + }, + PatternDesc::MatchSingleton(constant) => match constant { + Some(constant) => write!(f, "MatchSingleton(value={}, ", constant), + None => write!(f, "MatchSingleton(value=None, "), + }, + PatternDesc::MatchValue(expr) => write!(f, "MatchValue(value={}, ", expr), + PatternDesc::MatchMapping { + keys, + patterns, + rest, + } => { + let rest_format = match rest { + Some(rest) => format!("rest='{}', ", rest), + _ => "".to_string(), + }; + + write!( + f, + "MatchMapping(keys=[{}], patterns=[{}], {}", + format_vec(keys), + format_vec(patterns), + rest_format, + ) + } + PatternDesc::MatchAs { pattern, name } => { + let pattern_str = match pattern { + Some(pattern) => format!("pattern={}, ", pattern), + _ => String::from(""), + }; + + let name_str = match name { + Some(name) => format!("name='{}', ", name), + _ => String::from(""), + }; + + write!(f, "MatchAs({}{}", pattern_str, name_str) + } + } + } +} + +impl fmt::Display for ExprDesc { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + ExprDesc::Name { id, ctx } => write!(f, "Name(id='{}', ctx={}, ", id, ctx), + ExprDesc::Constant { value, kind: _ } => match value { + Some(val) => write!(f, "Constant(value={}, ", val), + _ => write!(f, "Constant(value=None, "), + }, + ExprDesc::List { elts, ctx } => { + write!(f, "List(elts=[{}], ctx={}, ", format_vec(elts), ctx) + } + ExprDesc::Tuple { elts, ctx } => { + write!(f, "Tuple(elts=[{}], ctx={}, ", format_vec(elts), ctx) + } + ExprDesc::Set(elts) => { + write!(f, "Set(elts=[{}], ", format_vec(elts)) + } + ExprDesc::Dict { keys, values } => { + write!( + f, + "Dict(keys=[{}], values=[{}], ", + keys.iter() + .map(|targ_elm| match targ_elm { + Some(value) => format!("{}", value), + _ => "None".to_string(), + }) + .collect::>() + .join(", "), + format_vec(values) + ) + } + ExprDesc::Lambda { args, body } => { + write!(f, "Lambda(args={}, body={}, ", args, body) + } + ExprDesc::UnaryOp { op, operand } => { + write!(f, "UnaryOp(op={}, operand={}, ", op, operand) + } + ExprDesc::BinOp { left, op, right } => { + write!(f, "BinOp(left={}, op={}, right={}, ", left, op, right) + } + ExprDesc::BoolOp { op, values } => { + write!(f, "BoolOp(op={}, values=[{}], ", op, format_vec(values)) + } + ExprDesc::Compare { + left, + ops, + comparators, + } => { + write!( + f, + "Compare(left={}, ops=[{}], comparators=[{}], ", + left, + format_vec(ops), + format_vec(comparators) + ) + } + ExprDesc::Attribute { value, attr, ctx } => { + write!( + f, + "Attribute(value={}, attr='{}', ctx={}, ", + value, attr, ctx + ) + } + ExprDesc::Subscript { value, slice, ctx } => { + write!( + f, + "Subscript(value={}, slice={}, ctx={}, ", + value, slice, ctx + ) + } + ExprDesc::Slice { lower, upper, step } => { + let lower_str = match lower { + Some(sth) => format!("lower={}, ", sth), + _ => String::from(""), + }; + + let upper_str = match upper { + Some(sth) => format!("upper={}, ", sth), + _ => String::from(""), + }; + + let step_str = match step { + Some(sth) => format!("step={}, ", sth), + _ => String::from(""), + }; + + write!(f, "Slice({}{}{}", lower_str, upper_str, step_str) + } + ExprDesc::Call { + func, + args, + keywords, + } => { + write!( + f, + "Call(func={}, args=[{}], keywords=[{}], ", + func, + format_vec(args), + format_vec(keywords) + ) + } + ExprDesc::Starred { value, ctx } => { + write!(f, "Starred(value={}, ctx={}, ", value, ctx) + } + ExprDesc::IfExp { test, body, orelse } => { + write!(f, "IfExp(test={}, body={}, orelse={}, ", test, body, orelse) + } + ExprDesc::ListComp { elt, generators } => { + write!( + f, + "ListComp(elt={}, generators=[{}], ", + elt, + format_gens(generators) + ) + } + ExprDesc::SetComp { elt, generators } => { + write!( + f, + "SetComp(elt={}, generators=[{}], ", + elt, + format_gens(generators) + ) + } + ExprDesc::GeneratorExp { elt, generators } => { + write!( + f, + "GeneratorExp(elt={}, generators=[{}], ", + elt, + format_gens(generators) + ) + } + ExprDesc::DictComp { + key, + value, + generators, + } => { + write!( + f, + "DictComp(key={}, value={}, generators=[{}], ", + key, + value, + format_gens(generators) + ) + } + ExprDesc::NamedExpr { target, value } => { + write!(f, "NamedExpr(target={}, value={}, ", target, value) + } + ExprDesc::JoinedStr(exprs) => { + write!(f, "JoinedStr(values=[{}], ", format_vec(exprs)) + } + ExprDesc::FormattedValue { + value, + conversion, + format_spec, + } => { + let conversion_str = match conversion { + Some(sth) => format!(", conversion={}", sth), + _ => String::from(""), + }; + let format_spec_str = match format_spec { + Some(sth) => format!(", format_spec={}", sth), + _ => String::from(""), + }; + write!( + f, + "FormattedValue(value={}{}{}, ", + value, conversion_str, format_spec_str + ) + } + ExprDesc::Await(arg) => { + write!(f, "Await(value={}, ", arg) + } + ExprDesc::Yield(value) => match value { + Some(val) => write!(f, "Yield(value={}, ", val), + _ => write!(f, "Yield("), + }, + ExprDesc::YieldFrom(value) => { + write!(f, "YieldFrom(value={}, ", value) + } + } + } +} + +impl fmt::Display for Arguments { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let posonlyargsx = self + .posonlyargs + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", "); + + let argsx = self + .args + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", "); + + let varargx = match &self.vararg { + Some(varg) => format!(", vararg={}", varg), + _ => "".to_string(), + }; + + let kwonlyargsx = self + .kwonlyargs + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", "); + + let kw_defaultsx = self + .kw_defaults + .iter() + .map(|targ_elm| match targ_elm { + Some(x) => format!("{}", x), + _ => "None".to_string(), + }) + .collect::>() + .join(", "); + + let kwargx = match &self.kwarg { + Some(kwarg) => format!(", kwarg={}", kwarg), + _ => "".to_string(), + }; + + let defaultsx = self + .defaults + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", "); + + write!( + f, + "arguments(posonlyargs=[{}], args=[{}]{}, kwonlyargs=[{}], kw_defaults=[{}]{}, defaults=[{}])", + posonlyargsx, argsx, varargx, kwonlyargsx, kw_defaultsx, kwargx, defaultsx + ) + } +} + +impl fmt::Display for Arg { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let annotationx = match &self.annotation { + Some(annot) => format!(", annotation={}", annot), + _ => "".to_string(), + }; + + let type_commentx = match &self.type_comment { + Some(tc) => format!(", type_comment={}", tc), + _ => "".to_string(), + }; + + write!( + f, + "arg(arg='{}'{}{}, lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.arg, + annotationx, + type_commentx, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() // Weird, we expect this to be self.end_col_offset.unwrap() but it's this... Could be a bug? + ) + } +} + +impl fmt::Display for Comprehension { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let ifsz = self + .ifs + .iter() + .map(|targ_elm| format!("{}", targ_elm)) + .collect::>() + .join(", "); + + write!( + f, + "comprehension(target={}, iter={}, ifs=[{}], is_async={})", + self.target, + self.iter, + ifsz, + if self.is_async { "1" } else { "0" } + ) + } +} + +impl fmt::Display for Keyword { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let contents = match &self.arg { + Some(arg) => format!("arg='{}', value={}", arg, self.value), + _ => format!("value={}", self.value), + }; + + write!( + f, + "keyword({}, lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + contents, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() + ) + } +} + +impl fmt::Display for ExprContext { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{:?}()", self) + } +} + +impl fmt::Display for Unaryop { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let res = match self { + Unaryop::Invert => "Invert()", + Unaryop::Not => "Not()", + Unaryop::UAdd => "UAdd()", + Unaryop::USub => "USub()", + }; + + write!(f, "{}", res) + } +} + +impl fmt::Display for Operator { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let res = match self { + Operator::Add => "Add()", + Operator::Sub => "Sub()", + Operator::Mult => "Mult()", + Operator::MatMult => "MatMult()", + Operator::Div => "Div()", + Operator::Mod => "Mod()", + Operator::Pow => "Pow()", + Operator::LShift => "LShift()", + Operator::RShift => "RShift()", + Operator::BitOr => "BitOr()", + Operator::BitXor => "BitXor()", + Operator::BitAnd => "BitAnd()", + Operator::FloorDiv => "FloorDiv()", + }; + + write!(f, "{}", res) + } +} + +impl fmt::Display for Cmpop { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let res = match self { + Cmpop::Eq => "Eq()", + Cmpop::NotEq => "NotEq()", + Cmpop::Lt => "Lt()", + Cmpop::LtE => "LtE()", + Cmpop::Gt => "Gt()", + Cmpop::GtE => "GtE()", + Cmpop::Is => "Is()", + Cmpop::IsNot => "IsNot()", + Cmpop::In => "In()", + Cmpop::NotIn => "NotIn()", + }; + + write!(f, "{}", res) + } +} + +/// +/// Attempt to replicate PyOS_double_to_string function used by float_repr +/// in floatobject.c for representing floats as strings +/// https://github.com/python/cpython/blob/df81d2892eed3a256eb61ce59304f2173fb0c945/Python/pystrtod.c +pub fn cpython_float_to_string(value: &f64, is_complex: bool) -> String { + if value.log10().ceil() >= 17. { + // 17 digits or more requires exponent representation with + after the e + format!("{:e}", value).replace('e', "e+") + } else if value < &0.0001 && value != &0.0 { + // <= 0.00001 requires exponent representation, except for exactly + // zero (0.0) which we don't format with scientific notation + let mut little_formatted = format!("{:e}", value); + let exp = little_formatted.split_off(little_formatted.find('e').unwrap()); + little_formatted.push_str(&format!("e-{:0>pad$}", &exp[2..], pad = 2)); + little_formatted + } else { + // normal f64 in normal way... + if !is_complex && value.fract() == 0.0 { + // except we must ensure thats + // .0 is appended to floats which could be confused for integers + // i.e. those with no mantissa + // but this does not apply to imaginary component of complex numbers + format!("{:.1}", value) + } else { + format!("{}", value) + } + } +} + +impl fmt::Display for ConstantDesc { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + ConstantDesc::Num(Num::Int(vala)) => { + write!(f, "{}", vala) + } + ConstantDesc::Num(Num::Float(vala)) => { + write!(f, "{}", cpython_float_to_string(vala, false)) + } + ConstantDesc::Num(Num::Complex(vala)) => { + write!(f, "{}j", cpython_float_to_string(vala, true)) + } + ConstantDesc::ByteStr(vala) => { + write!(f, "b{}", vala) + } + rest => { + let res = match rest { + ConstantDesc::Str(vala) => vala, + ConstantDesc::Bool(true) => "True", + ConstantDesc::Bool(false) => "False", + ConstantDesc::Num(Num::BigInt(stra)) => stra, + ConstantDesc::Ellipsis => "Ellipsis", + _ => "", + }; + write!(f, "{}", res) + } + } + } +} + +impl fmt::Display for Boolop { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let res = match self { + Boolop::And => "And()", + Boolop::Or => "Or()", + }; + write!(f, "{}", res) + } +} + +impl fmt::Display for Withitem { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let opt_fmt = match &self.optional_vars { + Some(opt) => format!(", optional_vars={}", opt), + _ => String::from(""), + }; + write!(f, "withitem(context_expr={}{})", self.context_expr, opt_fmt) + } +} + +impl fmt::Display for ExcepthandlerDesc { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + ExcepthandlerDesc::ExceptHandler { type__, name, body } => { + let type_fmt = match &type__ { + Some(ttype) => format!("type={}, ", ttype), + _ => String::from(""), + }; + + let name_fmt = match &name { + Some(nname) => format!("name='{}', ", nname), + _ => String::from(""), + }; + + write!( + f, + "ExceptHandler({}{}body=[{}], ", + type_fmt, + name_fmt, + format_vec(body) + ) + } + } + } +} + +impl fmt::Display for Excepthandler { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}lineno={}, col_offset={}, end_lineno={}, end_col_offset={})", + self.desc, + self.lineno, + self.col_offset, + self.end_lineno.unwrap(), + self.end_col_offset.unwrap() + ) + } +} diff --git a/source/errpy/rust_to_ocaml_config.toml b/source/errpy/rust_to_ocaml_config.toml new file mode 100644 index 00000000000..9776c516298 --- /dev/null +++ b/source/errpy/rust_to_ocaml_config.toml @@ -0,0 +1,11 @@ +[types] +transparent = [ + "Box", "std::boxed::Box", + "Rc", "std::rc::Rc", + "Arc", "std::sync::Arc", +] +rename = [ + ["Vec", "list"], + ["std::vec::Vec", "list"], + ["f64", "float"], +] diff --git a/source/errpy/sitter.rs b/source/errpy/sitter.rs new file mode 100644 index 00000000000..b403ef8f891 --- /dev/null +++ b/source/errpy/sitter.rs @@ -0,0 +1,601 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#![allow(dead_code)] + +/*! + The structs below are used to wrap the CST nodes output by tree-sitter + into something that is a bit easier to reason about... + + Tree sitter seems to have a string representation of tokens with + numerical ids that are known at runtime... + + What we do here is to convert a sitter node to an internal + representation and use that to `match` in Rust for later processing + into an AST by the cst_to_ast.rs lowerer. + + This wrapping could be eliminated at some point or made cheaper. +*/ + +use crate::node_wrapper::Node; + +/// +/// Token supertype after extraction from Tree-sitter CST +#[derive(Debug)] +pub enum NodeType<'a> { + Error, + Keyword(Keyword), + BinaryOperator(BinaryOperator), + AugAssignOperator(AugAssignOperator), + ComparisonOperator(ComparisonOperator), + Delimiter(Delimiter), + Production(Production<'a>), +} + +#[derive(Copy, Clone, Debug)] +#[repr(u8)] +#[allow(non_camel_case_types)] +pub enum Keyword { + AND, + AS, + ASSERT, + ASYNC, + AWAIT, + BREAK, + CONTINUE, + CLASS, + DEF, + ELIF, + ELSE, + EXCEPT, + DEL, + FALSE, + FINALLY, + FOR, + FROM, + GLOBAL, + IF, + IMPORT, + IN, + IS, + IS_NOT, + LAMBDA, + NONE, + NONLOCAL, + NOT, + NOT_IN, + OR, + PASS, + RAISE, + RETURN, + TRUE, + TRY, + YIELD, + WHILE, + WITH, +} + +#[derive(Copy, Clone, Debug)] +#[repr(u8)] +#[allow(non_camel_case_types)] +pub enum BinaryOperator { + ASSIGN_EXPR, + AT, + BITWISE_AND, + BITWISE_OR, + BITWISE_XOR, + DOUBLE_SLASH, + DOUBLE_STAR, + LEFT_SHIFT, + MINUS, + PERCENT, + PLUS, + RIGHT_SHIFT, + SLASH, + STAR, + TILDE, +} + +#[derive(Copy, Clone, Debug)] +#[repr(u8)] +#[allow(non_camel_case_types)] +pub enum AugAssignOperator { + AT_EQUAL, + BITWISE_AND_EQUAL, + BITWISE_OR_EQUAL, + DOUBLE_SLASH_EQUAL, + DOUBLE_STAR_EQUAL, + LEFT_SHIFT_EQUAL, + MINUS_EQUAL, + PERCENT_EQUAL, + PLUS_EQUAL, + RIGHT_SHIFT_EQUAL, + SLASH_EQUAL, + STAR_EQUAL, + BITWISE_XOR_EQUAL, +} + +#[derive(Copy, Clone, Debug)] +#[repr(u8)] +#[allow(non_camel_case_types)] +pub enum ComparisonOperator { + LESS_THAN, + LESS_THAN_EQUAL, + EQUAL, + NOT_EQUAL, + GREATER_THAN_EQUAL, + GREATER_THAN, + IN, + NOT, + IS, +} + +#[derive(Copy, Clone, Debug)] +#[repr(u8)] +#[allow(non_camel_case_types)] +pub enum Delimiter { + ARROW, + ASSIGN, + BACK_SLASH, + COLON, + COMMA, + DUBLE_QUOTE, + HASH, + LEFT_BRACKET, + LEFT_CURLY, + LEFT_PAREN, + PERIOD, + RIGHT_BRACKET, + RIGHT_CURLY, + RIGHT_PAREN, + SEMICOLON, + SINGLE_QUOTE, +} + +/// +/// A production is a node to traverse and it carries a +/// reference to the sitter node +#[derive(Debug)] +pub struct Production<'a> { + pub production_kind: ProductionKind, + pub node: &'a Node<'a>, +} + +/// +/// Various forms of ProductionKind +#[derive(Debug, PartialEq)] +#[allow(non_camel_case_types)] +pub enum ProductionKind { + // statements + FUTURE_IMPORT_STATEMENT, + IMPORT_STATEMENT, + IMPORT_FROM_STATEMENT, + PRINT_STATEMENT, + ASSERT_STATEMENT, + EXPRESSION_STATEMENT, + RETURN_STATEMENT, + DELETE_STATEMENT, + RAISE_STATEMENT, + PASS_STATEMENT, + BREAK_STATEMENT, + CONTINUE_STATEMENT, + GLOBAL_STATEMENT, + NONLOCAL_STATEMENT, + EXEC_STATEMENT, + IF_STATEMENT, + FOR_STATEMENT, + WHILE_STATEMENT, + TRY_STATEMENT, + WITH_STATEMENT, + FUNCTION_DEFINITION, + CLASS_DEFINITION, + DECORATED_DEFINITION, + MATCH_STATEMENT, + + // `expression_statement` + ASSIGNMENT, + AUGMENTED_ASSIGNMENT, + YIELD, + + // `expression` + COMPARISON_OPERATOR, + NOT_OPERATOR, + BOOLEAN_OPERATOR, + AWAIT, + LAMBDA, + CONDITIONAL_EXPRESSION, + NAMED_EXPRESSION, + AS_PATTERN, + EXPRESSION_LIST, + LIST_SPLAT_OR_EXPRESSIONS, + + // `primary_expression` + BINARY_OPERATOR, + IDENTIFIER, + KEYWORD_IDENTIFIER, + STRING, + CONCATENATED_STRING, + INTEGER, + FLOAT, + TRUE, + FALSE, + NONE, + UNARY_OPERATOR, + ATTRIBUTE, + SUBSCRIPT, + CALL, + LIST, + LIST_COMPREHENSION, + DICTIONARY, + DICTIONARY_COMPREHENSION, + SET, + SET_COMPREHENSION, + TUPLE, + PARENTHESIZED_EXPRESSION, + GENERATOR_EXPRESSION, + ELLIPSIS, + + FOR_IN_CLAUSE, + IF_CLAUSE, + + TYPED_PARAMETER, + KEYWORD_ARGUMENT, + DEFAULT_PARAMETER, + TYPED_DEFAULT_PARAMETER, + LIST_SPLAT_PATTERN, + TUPLE_PATTERN, + LIST_PATTERN, + KEYWORD_SEPARATOR, + POSITIONAL_SEPARATOR, + DICTIONARY_SPLAT_PATTERN, + PATTERN_LIST, + + COMMENT, + MODULE, + PARAMETERS, + TYPE, + BLOCK, + + // scaffolding + PAIR, + ARGUMENT_LIST, + DECORATOR, + + // special function arguments + LIST_SPLAT, + DICTIONARY_SPLAT, +} + +impl<'a> Production<'a> { + pub fn new(kind: ProductionKind, node: &'a Node<'a>) -> Self { + Production { + production_kind: kind, + node, + } + } +} + +/// +/// Wrap a sitter `Node` into its structured wrapper (`NodeType`) +pub fn get_node_type<'a>(node: &'a Node<'a>) -> NodeType<'a> { + match node.kind() { + // keywords + "as" => NodeType::Keyword(Keyword::AS), + "assert" => NodeType::Keyword(Keyword::ASSERT), + "async" => NodeType::Keyword(Keyword::ASYNC), + // "await" => NodeType::Keyword(Keyword::AWAIT), + "break" => NodeType::Keyword(Keyword::BREAK), + "class" => NodeType::Keyword(Keyword::CLASS), + "continue" => NodeType::Keyword(Keyword::CONTINUE), + "def" => NodeType::Keyword(Keyword::DEF), + "del" => NodeType::Keyword(Keyword::DEL), + "elif" => NodeType::Keyword(Keyword::ELIF), + "else" => NodeType::Keyword(Keyword::ELSE), + "except" => NodeType::Keyword(Keyword::EXCEPT), + "finally" => NodeType::Keyword(Keyword::FINALLY), + "for" => NodeType::Keyword(Keyword::FOR), + "from" => NodeType::Keyword(Keyword::FROM), + "global" => NodeType::Keyword(Keyword::GLOBAL), + "if" => NodeType::Keyword(Keyword::IF), + "import" => NodeType::Keyword(Keyword::IMPORT), + "in" => NodeType::Keyword(Keyword::IN), + "is" => NodeType::Keyword(Keyword::IS), + "is not" => NodeType::Keyword(Keyword::IS_NOT), + "not in" => NodeType::Keyword(Keyword::NOT_IN), + // "lambda" => NodeType::Keyword(Keyword::LAMBDA), + "None" => NodeType::Keyword(Keyword::NONE), + "nonlocal" => NodeType::Keyword(Keyword::NONLOCAL), + "not" => NodeType::Keyword(Keyword::NOT), + "pass" => NodeType::Keyword(Keyword::PASS), + "raise" => NodeType::Keyword(Keyword::RAISE), + "return" => NodeType::Keyword(Keyword::RETURN), + "try" => NodeType::Keyword(Keyword::TRY), + "while" => NodeType::Keyword(Keyword::WHILE), + "with" => NodeType::Keyword(Keyword::WITH), + + // boolean operator + "and" => NodeType::Keyword(Keyword::AND), + "or" => NodeType::Keyword(Keyword::OR), + + // operator + "==" => NodeType::ComparisonOperator(ComparisonOperator::EQUAL), + ">" => NodeType::ComparisonOperator(ComparisonOperator::GREATER_THAN), + ">=" => NodeType::ComparisonOperator(ComparisonOperator::GREATER_THAN_EQUAL), + "<" => NodeType::ComparisonOperator(ComparisonOperator::LESS_THAN), + "<=" => NodeType::ComparisonOperator(ComparisonOperator::LESS_THAN_EQUAL), + "!=" => NodeType::ComparisonOperator(ComparisonOperator::NOT_EQUAL), + + ":=" => NodeType::BinaryOperator(BinaryOperator::ASSIGN_EXPR), + "@" => NodeType::BinaryOperator(BinaryOperator::AT), + "&" => NodeType::BinaryOperator(BinaryOperator::BITWISE_AND), + "|" => NodeType::BinaryOperator(BinaryOperator::BITWISE_OR), + "^" => NodeType::BinaryOperator(BinaryOperator::BITWISE_XOR), + "//" => NodeType::BinaryOperator(BinaryOperator::DOUBLE_SLASH), + "**" => NodeType::BinaryOperator(BinaryOperator::DOUBLE_STAR), + "<<" => NodeType::BinaryOperator(BinaryOperator::LEFT_SHIFT), + "-" => NodeType::BinaryOperator(BinaryOperator::MINUS), + "%" => NodeType::BinaryOperator(BinaryOperator::PERCENT), + "+" => NodeType::BinaryOperator(BinaryOperator::PLUS), + ">>" => NodeType::BinaryOperator(BinaryOperator::RIGHT_SHIFT), + "/" => NodeType::BinaryOperator(BinaryOperator::SLASH), + "*" => NodeType::BinaryOperator(BinaryOperator::STAR), + "~" => NodeType::BinaryOperator(BinaryOperator::TILDE), + + //aug assignment operators + "@=" => NodeType::AugAssignOperator(AugAssignOperator::AT_EQUAL), + "&=" => NodeType::AugAssignOperator(AugAssignOperator::BITWISE_AND_EQUAL), + "|=" => NodeType::AugAssignOperator(AugAssignOperator::BITWISE_OR_EQUAL), + "//=" => NodeType::AugAssignOperator(AugAssignOperator::DOUBLE_SLASH_EQUAL), + "**=" => NodeType::AugAssignOperator(AugAssignOperator::DOUBLE_STAR_EQUAL), + "<<=" => NodeType::AugAssignOperator(AugAssignOperator::LEFT_SHIFT_EQUAL), + "-=" => NodeType::AugAssignOperator(AugAssignOperator::MINUS_EQUAL), + "%=" => NodeType::AugAssignOperator(AugAssignOperator::PERCENT_EQUAL), + "+=" => NodeType::AugAssignOperator(AugAssignOperator::PLUS_EQUAL), + ">>=" => NodeType::AugAssignOperator(AugAssignOperator::RIGHT_SHIFT_EQUAL), + "/=" => NodeType::AugAssignOperator(AugAssignOperator::SLASH_EQUAL), + "*=" => NodeType::AugAssignOperator(AugAssignOperator::STAR_EQUAL), + "^=" => NodeType::AugAssignOperator(AugAssignOperator::BITWISE_XOR_EQUAL), + + // delimiter + "->" => NodeType::Delimiter(Delimiter::ARROW), + "=" => NodeType::Delimiter(Delimiter::ASSIGN), + "\\" => NodeType::Delimiter(Delimiter::BACK_SLASH), + ":" => NodeType::Delimiter(Delimiter::COLON), + "," => NodeType::Delimiter(Delimiter::COMMA), + "\"" => NodeType::Delimiter(Delimiter::DUBLE_QUOTE), + "#" => NodeType::Delimiter(Delimiter::HASH), + "[" => NodeType::Delimiter(Delimiter::LEFT_BRACKET), + "{" => NodeType::Delimiter(Delimiter::LEFT_CURLY), + "(" => NodeType::Delimiter(Delimiter::LEFT_PAREN), + "." => NodeType::Delimiter(Delimiter::PERIOD), + "]" => NodeType::Delimiter(Delimiter::RIGHT_BRACKET), + "}" => NodeType::Delimiter(Delimiter::RIGHT_CURLY), + ")" => NodeType::Delimiter(Delimiter::RIGHT_PAREN), + ";" => NodeType::Delimiter(Delimiter::SEMICOLON), + "'" => NodeType::Delimiter(Delimiter::SINGLE_QUOTE), + + // grammar productions + "comment" => NodeType::Production(Production::new(ProductionKind::COMMENT, node)), + "block" => NodeType::Production(Production::new(ProductionKind::BLOCK, node)), + + // `_simple_statement` + "future_import_statement" => NodeType::Production(Production::new( + ProductionKind::FUTURE_IMPORT_STATEMENT, + node, + )), + "import_statement" => { + NodeType::Production(Production::new(ProductionKind::IMPORT_STATEMENT, node)) + } + "import_from_statement" => { + NodeType::Production(Production::new(ProductionKind::IMPORT_FROM_STATEMENT, node)) + } + "print_statement" => { + NodeType::Production(Production::new(ProductionKind::PRINT_STATEMENT, node)) + } + "assert_statement" => { + NodeType::Production(Production::new(ProductionKind::ASSERT_STATEMENT, node)) + } + "expression_statement" => { + NodeType::Production(Production::new(ProductionKind::EXPRESSION_STATEMENT, node)) + } + "return_statement" => { + NodeType::Production(Production::new(ProductionKind::RETURN_STATEMENT, node)) + } + "delete_statement" => { + NodeType::Production(Production::new(ProductionKind::DELETE_STATEMENT, node)) + } + "raise_statement" => { + NodeType::Production(Production::new(ProductionKind::RAISE_STATEMENT, node)) + } + "pass_statement" => { + NodeType::Production(Production::new(ProductionKind::PASS_STATEMENT, node)) + } + "break_statement" => { + NodeType::Production(Production::new(ProductionKind::BREAK_STATEMENT, node)) + } + "continue_statement" => { + NodeType::Production(Production::new(ProductionKind::CONTINUE_STATEMENT, node)) + } + "global_statement" => { + NodeType::Production(Production::new(ProductionKind::GLOBAL_STATEMENT, node)) + } + "nonlocal_statement" => { + NodeType::Production(Production::new(ProductionKind::NONLOCAL_STATEMENT, node)) + } + "exec_statement" => { + NodeType::Production(Production::new(ProductionKind::EXEC_STATEMENT, node)) + } + "if_statement" => NodeType::Production(Production::new(ProductionKind::IF_STATEMENT, node)), + "for_statement" => { + NodeType::Production(Production::new(ProductionKind::FOR_STATEMENT, node)) + } + "while_statement" => { + NodeType::Production(Production::new(ProductionKind::WHILE_STATEMENT, node)) + } + "try_statement" => { + NodeType::Production(Production::new(ProductionKind::TRY_STATEMENT, node)) + } + "with_statement" => { + NodeType::Production(Production::new(ProductionKind::WITH_STATEMENT, node)) + } + "function_definition" => { + NodeType::Production(Production::new(ProductionKind::FUNCTION_DEFINITION, node)) + } + "class_definition" => { + NodeType::Production(Production::new(ProductionKind::CLASS_DEFINITION, node)) + } + "decorated_definition" => { + NodeType::Production(Production::new(ProductionKind::DECORATED_DEFINITION, node)) + } + "match_statement" => { + NodeType::Production(Production::new(ProductionKind::MATCH_STATEMENT, node)) + } + + // `expression_statement` + "assignment" => NodeType::Production(Production::new(ProductionKind::ASSIGNMENT, node)), + "augmented_assignment" => { + NodeType::Production(Production::new(ProductionKind::AUGMENTED_ASSIGNMENT, node)) + } + "yield" => NodeType::Production(Production::new(ProductionKind::YIELD, node)), + + // `expression` + "comparison_operator" => { + NodeType::Production(Production::new(ProductionKind::COMPARISON_OPERATOR, node)) + } + "not_operator" => NodeType::Production(Production::new(ProductionKind::NOT_OPERATOR, node)), + "boolean_operator" => { + NodeType::Production(Production::new(ProductionKind::BOOLEAN_OPERATOR, node)) + } + "await" => NodeType::Production(Production::new(ProductionKind::AWAIT, node)), + "lambda" => NodeType::Production(Production::new(ProductionKind::LAMBDA, node)), + "conditional_expression" => NodeType::Production(Production::new( + ProductionKind::CONDITIONAL_EXPRESSION, + node, + )), + "named_expression" => { + NodeType::Production(Production::new(ProductionKind::NAMED_EXPRESSION, node)) + } + "as_pattern" => NodeType::Production(Production::new(ProductionKind::AS_PATTERN, node)), + + // `primary_expression` + "binary_operator" => { + NodeType::Production(Production::new(ProductionKind::BINARY_OPERATOR, node)) + } + "identifier" => NodeType::Production(Production::new(ProductionKind::IDENTIFIER, node)), + "keyword_identifier" => { + NodeType::Production(Production::new(ProductionKind::KEYWORD_IDENTIFIER, node)) + } + "string" => NodeType::Production(Production::new(ProductionKind::STRING, node)), + "concatenated_string" => { + NodeType::Production(Production::new(ProductionKind::CONCATENATED_STRING, node)) + } + "integer" => NodeType::Production(Production::new(ProductionKind::INTEGER, node)), + "float" => NodeType::Production(Production::new(ProductionKind::FLOAT, node)), + "true" => NodeType::Production(Production::new(ProductionKind::TRUE, node)), + "false" => NodeType::Production(Production::new(ProductionKind::FALSE, node)), + "none" => NodeType::Production(Production::new(ProductionKind::NONE, node)), + "unary_operator" => { + NodeType::Production(Production::new(ProductionKind::UNARY_OPERATOR, node)) + } + "attribute" => NodeType::Production(Production::new(ProductionKind::ATTRIBUTE, node)), + "subscript" => NodeType::Production(Production::new(ProductionKind::SUBSCRIPT, node)), + "call" => NodeType::Production(Production::new(ProductionKind::CALL, node)), + "list" => NodeType::Production(Production::new(ProductionKind::LIST, node)), + "list_comprehension" => { + NodeType::Production(Production::new(ProductionKind::LIST_COMPREHENSION, node)) + } + "dictionary" => NodeType::Production(Production::new(ProductionKind::DICTIONARY, node)), + "dictionary_comprehension" => NodeType::Production(Production::new( + ProductionKind::DICTIONARY_COMPREHENSION, + node, + )), + "set" => NodeType::Production(Production::new(ProductionKind::SET, node)), + "set_comprehension" => { + NodeType::Production(Production::new(ProductionKind::SET_COMPREHENSION, node)) + } + + "for_in_clause" => { + NodeType::Production(Production::new(ProductionKind::FOR_IN_CLAUSE, node)) + } + "if_clause" => NodeType::Production(Production::new(ProductionKind::IF_CLAUSE, node)), + + "tuple" => NodeType::Production(Production::new(ProductionKind::TUPLE, node)), + "parenthesized_expression" => NodeType::Production(Production::new( + ProductionKind::PARENTHESIZED_EXPRESSION, + node, + )), + "generator_expression" => { + NodeType::Production(Production::new(ProductionKind::GENERATOR_EXPRESSION, node)) + } + "ellipsis" => NodeType::Production(Production::new(ProductionKind::ELLIPSIS, node)), + + "argument_list" => { + NodeType::Production(Production::new(ProductionKind::ARGUMENT_LIST, node)) + } + "parameters" => NodeType::Production(Production::new(ProductionKind::PARAMETERS, node)), + + "pair" => NodeType::Production(Production::new(ProductionKind::PAIR, node)), + + // special function arguments + "list_splat" => NodeType::Production(Production::new(ProductionKind::LIST_SPLAT, node)), + "dictionary_splat" => { + NodeType::Production(Production::new(ProductionKind::DICTIONARY_SPLAT, node)) + } + + // `parameter` + "typed_parameter" => { + NodeType::Production(Production::new(ProductionKind::TYPED_PARAMETER, node)) + } + "keyword_argument" => { + NodeType::Production(Production::new(ProductionKind::KEYWORD_ARGUMENT, node)) + } + "default_parameter" => { + NodeType::Production(Production::new(ProductionKind::DEFAULT_PARAMETER, node)) + } + "typed_default_parameter" => NodeType::Production(Production::new( + ProductionKind::TYPED_DEFAULT_PARAMETER, + node, + )), + "list_splat_pattern" => { + NodeType::Production(Production::new(ProductionKind::LIST_SPLAT_PATTERN, node)) + } + "tuple_pattern" => { + NodeType::Production(Production::new(ProductionKind::TUPLE_PATTERN, node)) + } + "list_pattern" => NodeType::Production(Production::new(ProductionKind::LIST_PATTERN, node)), + "pattern_list" => NodeType::Production(Production::new(ProductionKind::PATTERN_LIST, node)), + "keyword_separator" => { + NodeType::Production(Production::new(ProductionKind::KEYWORD_SEPARATOR, node)) + } + "positional_separator" => { + NodeType::Production(Production::new(ProductionKind::POSITIONAL_SEPARATOR, node)) + } + "expression_list" => { + NodeType::Production(Production::new(ProductionKind::EXPRESSION_LIST, node)) + } + "list_splat_or_expressions" => NodeType::Production(Production::new( + ProductionKind::LIST_SPLAT_OR_EXPRESSIONS, + node, + )), + "dictionary_splat_pattern" => NodeType::Production(Production::new( + ProductionKind::DICTIONARY_SPLAT_PATTERN, + node, + )), + + // place production below properly + "module" => NodeType::Production(Production::new(ProductionKind::MODULE, node)), + "type" => NodeType::Production(Production::new(ProductionKind::TYPE, node)), + + "decorator" => NodeType::Production(Production::new(ProductionKind::DECORATOR, node)), + + "ERROR" => NodeType::Error, + + _ => panic!( + "unmatched keyword node type: {}[{}]", + node.kind(), + node.is_named() + ), + } +} diff --git a/source/errpy/string_helpers.rs b/source/errpy/string_helpers.rs new file mode 100644 index 00000000000..7ce9a1ddc6f --- /dev/null +++ b/source/errpy/string_helpers.rs @@ -0,0 +1,94 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree + +#[derive(Debug)] +#[derive(PartialEq)] +#[derive(Default)] +pub struct StringCategory { + pub is_byte: bool, + pub is_raw: bool, + pub is_format: bool, + pub is_unicode: bool, +} + +#[derive(Debug)] +#[derive(PartialEq)] +pub struct InvalidStringCategoryError { + pub invalid_prefix: String, +} + +/// Return a string containing all characters prior to the first ' or " +pub fn string_prefix(string_contents: &str) -> String { + let mut prefix: String = String::from(""); + for ch in string_contents.chars() { + if ch == '\'' || ch == '"' { + break; + } + prefix.push(ch); + } + prefix +} + +/// categorize_string will return a StringCategory +/// containing the type of string which has been passed to the function +/// i.e. a byte, format, unicode or raw string as signified by the prefix +/// of the string, e.g. `b"a byte string"` is a byte string etc. +/// If an invalid combination of prefix is provided then this is returned +/// as a InvalidStringCategoryError for processing by the caller +pub fn categorize_string( + to_categorize: &str, +) -> Result { + // Only valid prefixes are: + // "r" | "u" | "f" | "b" + // "fr" | "rf" + // "br"| "rb" + let mut prefix = string_prefix(to_categorize); + + prefix = prefix.to_lowercase(); + match prefix.len() { + 1 => match prefix.as_str() { + "r" => Ok(StringCategory { + is_raw: true, + ..Default::default() + }), + "u" => Ok(StringCategory { + is_unicode: true, + ..Default::default() + }), + "f" => Ok(StringCategory { + is_format: true, + ..Default::default() + }), + "b" => Ok(StringCategory { + is_byte: true, + ..Default::default() + }), + _ => Err(InvalidStringCategoryError { + invalid_prefix: prefix, + }), + }, + 2 => match prefix.as_str() { + "fr" | "rf" => Ok(StringCategory { + is_format: true, + is_raw: true, + ..Default::default() + }), + "br" | "rb" => Ok(StringCategory { + is_byte: true, + is_raw: true, + ..Default::default() + }), + _ => Err(InvalidStringCategoryError { + invalid_prefix: prefix, + }), + }, + 0 => Ok(StringCategory { + ..Default::default() + }), + _ => Err(InvalidStringCategoryError { + invalid_prefix: prefix, + }), + } +} diff --git a/source/errpy/tests/Cargo.toml b/source/errpy/tests/Cargo.toml new file mode 100644 index 00000000000..4486b360952 --- /dev/null +++ b/source/errpy/tests/Cargo.toml @@ -0,0 +1,20 @@ +# @generated by autocargo from //tools/pyre/source/errpy/errpy/tests:[test_parser_post_process,test_parser_pre_process,test_string_helpers] + +[package] +name = "python_errpy_tests" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[[test]] +name = "test_parser_post_process" +path = "test_parser_post_process.rs" + +[[test]] +name = "test_parser_pre_process" +path = "test_parser_pre_process.rs" + +[[test]] +name = "test_string_helpers" +path = "test_string_helpers.rs" diff --git a/source/errpy/tests/dune b/source/errpy/tests/dune new file mode 100644 index 00000000000..89a23f4aa15 --- /dev/null +++ b/source/errpy/tests/dune @@ -0,0 +1,3 @@ +(tests + (names test_ffi_ocaml) + (libraries ounit2 errpy)) diff --git a/source/errpy/tests/test_error_recovery.py b/source/errpy/tests/test_error_recovery.py new file mode 100644 index 00000000000..3ea56f31c2e --- /dev/null +++ b/source/errpy/tests/test_error_recovery.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest + +from tools.pyre.source.errpy.tests.utils.error_recovery_common import ErrorRecoveryCommon + + +class AllLargeInputTests(ErrorRecoveryCommon): + """These tests focus on ERRPY error recovery across a large input + with simulated input source errors""" + + def test_simple_er_char_by_char(self) -> None: + self.check_error_recovery_char_by_char("simple.pytest") + + def test_simple_er_insert_whitespace(self) -> None: + self.check_error_recovery_insert_whitespace("simple.pytest") + + def test_simple_er_nth_removed(self) -> None: + self.check_error_recovery_nth_removed("simple.pytest") + + def test_simple_er_insert_keyword(self) -> None: + self.check_error_recovery_insert_keyword("simple.pytest") + + def test_simple_er_insert_garbage(self) -> None: + self.check_error_recovery_insert_garbage("simple.pytest") + + +class TestSpecificInputs(ErrorRecoveryCommon): + def test_invalid_grammar(self) -> None: + self.compare_recovered_ast_many("invalid_grammar.pytest") + + def test_milestone_tests(self) -> None: + self.compare_recovered_ast_many("milestone_tests.pytest") + + def test_node_dropping_tests(self) -> None: + self.compare_recovered_ast_many("node_dropping.pytest") + + def test_parso_tests(self) -> None: + self.compare_recovered_ast_many("parso_error_recovery_tests.pytest") + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_ffi_ocaml.ml b/source/errpy/tests/test_ffi_ocaml.ml new file mode 100644 index 00000000000..7067a7abe66 --- /dev/null +++ b/source/errpy/tests/test_ffi_ocaml.ml @@ -0,0 +1,314 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +open OUnit2 +module Ast = Errpy.Ast +module Parser = Errpy.Parser + +[@@@ocaml.warning "-42"] + +(* Simple tests to ensure we can invoke ERRPY via the FFI interface from OCaml and marshall the + output ast to an OCaml datastructure and handle comments correctly *) + +let test_parser_ast input_code ?(expected_recoverable_errors = []) expected_ast = + let print_recoverable_errors recoverable_errors = + recoverable_errors + |> List.map Ast.show_recoverableerrorwithlocation + |> String.concat ", " + |> Format.asprintf "[%s]" + in + match Parser.parse_module input_code with + | Ok (mod_, recoverable_errors) -> + assert_equal expected_ast mod_ ~printer:Ast.show_mod_; + assert_equal expected_recoverable_errors recoverable_errors ~printer:print_recoverable_errors + | Error err -> assert_failure err + + +let expected_output_simple = + Ast.Module + { + body = + [ + { + Ast.desc = + Ast.Assign + { + targets = + [ + { + Ast.desc = Ast.Name { id = "a"; ctx = Ast.Store }; + lineno = 1; + col_offset = 0; + end_lineno = Some 1; + end_col_offset = Some 1; + }; + ]; + value = + { + Ast.desc = Ast.Constant { value = Some (Ast.Num (Ast.Int 8)); kind = None }; + lineno = 1; + col_offset = 2; + end_lineno = Some 1; + end_col_offset = Some 3; + }; + type_comment = None; + }; + lineno = 1; + col_offset = 0; + end_lineno = Some 1; + end_col_offset = Some 3; + }; + ]; + type_ignores = []; + } + + +let () = test_parser_ast "a=8" expected_output_simple + +let expected_output_comments = + Ast.Module + { + body = + [ + { + Ast.desc = + Ast.FunctionDef + { + name = "foo"; + args = + { + Ast.posonlyargs = []; + args = + [ + { + Ast.arg = "a"; + annotation = None; + type_comment = None; + lineno = 2; + col_offset = 4; + end_lineno = Some 2; + end_col_offset = Some 5; + }; + { + Ast.arg = "skip_loads"; + annotation = None; + type_comment = None; + lineno = 4; + col_offset = 4; + end_lineno = Some 4; + end_col_offset = Some 14; + }; + ]; + vararg = None; + kwonlyargs = []; + kw_defaults = []; + kwarg = None; + defaults = + [ + { + Ast.desc = + Ast.Constant { value = Some (Ast.Num (Ast.Int 34)); kind = None }; + lineno = 2; + col_offset = 6; + end_lineno = Some 2; + end_col_offset = Some 8; + }; + { + Ast.desc = Ast.Constant { value = Some (Ast.Bool true); kind = None }; + lineno = 4; + col_offset = 15; + end_lineno = Some 4; + end_col_offset = Some 19; + }; + ]; + }; + body = + [ + { + Ast.desc = Ast.Pass; + lineno = 6; + col_offset = 4; + end_lineno = Some 6; + end_col_offset = Some 8; + }; + ]; + decorator_list = []; + type_params = []; + returns = None; + type_comment = None; + }; + lineno = 1; + col_offset = 0; + end_lineno = Some 6; + end_col_offset = Some 8; + }; + ]; + type_ignores = []; + } + + +let () = + test_parser_ast + "def foo(\n a=34,\n # a comment here\n skip_loads=True,\n):\n pass" + expected_output_comments + + +let expected_output_resolvable_error = + Ast.Module + { + body = + [ + { + Ast.desc = + Ast.Expr + { + Ast.desc = + Ast.Tuple + { + elts = + [ + { + Ast.desc = Ast.Name { id = "garbage"; ctx = Ast.Load }; + lineno = 1; + col_offset = 2; + end_lineno = Some 1; + end_col_offset = Some 9; + }; + { + Ast.desc = Ast.Name { id = "a"; ctx = Ast.Load }; + lineno = 1; + col_offset = 13; + end_lineno = Some 1; + end_col_offset = Some 14; + }; + ]; + ctx = Ast.Load; + }; + lineno = 1; + col_offset = 0; + end_lineno = Some 1; + end_col_offset = Some 15; + }; + lineno = 1; + col_offset = 0; + end_lineno = Some 1; + end_col_offset = Some 15; + }; + ]; + type_ignores = []; + } + + +let expected_errors_resolvable_error = + [ + { + Ast.error = "SyntaxError: invalid syntax"; + lineno = 1; + col_offset = 11; + end_lineno = 1; + end_col_offset = 12; + }; + ] + + +let () = + test_parser_ast + "( garbage a, a)" + ~expected_recoverable_errors:expected_errors_resolvable_error + expected_output_resolvable_error + + +let expected_ast_nullable_kw_defaults = + Ast.Module + { + body = + [ + { + Ast.desc = + Ast.FunctionDef + { + name = "foo"; + args = + { + Ast.posonlyargs = []; + args = []; + vararg = + Some + { + Ast.arg = "d"; + annotation = None; + type_comment = None; + lineno = 1; + col_offset = 9; + end_lineno = Some 1; + end_col_offset = Some 10; + }; + kwonlyargs = + [ + { + Ast.arg = "e"; + annotation = None; + type_comment = None; + lineno = 1; + col_offset = 12; + end_lineno = Some 1; + end_col_offset = Some 13; + }; + { + Ast.arg = "f"; + annotation = None; + type_comment = None; + lineno = 1; + col_offset = 15; + end_lineno = Some 1; + end_col_offset = Some 16; + }; + ]; + kw_defaults = + (* kw_defaults is defined as: expr option list; *) + [ + None; + Some + { + Ast.desc = + Ast.Constant { value = Some (Ast.Num (Ast.Int 3)); kind = None }; + lineno = 1; + col_offset = 17; + end_lineno = Some 1; + end_col_offset = Some 18; + }; + ]; + kwarg = None; + defaults = []; + }; + body = + [ + { + Ast.desc = Ast.Pass; + lineno = 1; + col_offset = 21; + end_lineno = Some 1; + end_col_offset = Some 25; + }; + ]; + decorator_list = []; + type_params = []; + returns = None; + type_comment = None; + }; + lineno = 1; + col_offset = 0; + end_lineno = Some 1; + end_col_offset = Some 25; + }; + ]; + type_ignores = []; + } + + +(* kw_defaults is defined as: expr option list; in the rust and ocaml ast files *) +let () = test_parser_ast "def foo(*d, e, f=3): pass" expected_ast_nullable_kw_defaults diff --git a/source/errpy/tests/test_grammar_support.py b/source/errpy/tests/test_grammar_support.py new file mode 100644 index 00000000000..1d9cbbe0723 --- /dev/null +++ b/source/errpy/tests/test_grammar_support.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest + +from tools.pyre.source.errpy.tests.utils.test_common import ASTTestCommon + + +class AllGrammarTests(ASTTestCommon): + """These tests focus on individual aspects of Python syntax""" + + def test_ast_expressions(self) -> None: + self.check_many_cases_in_file("ast_expressions.pytest") + + def test_ast_async_and_await(self) -> None: + self.check_many_cases_in_file("ast_async_and_await.pytest") + + def test_ast_control_flow(self) -> None: + self.check_many_cases_in_file("ast_control_flow.pytest") + + def test_ast_variables(self) -> None: + self.check_many_cases_in_file("ast_variables.pytest") + + def test_ast_functions_and_classes(self) -> None: + self.check_many_cases_in_file("ast_functions_and_classes.pytest") + + def test_ast_literals(self) -> None: + self.check_many_cases_in_file("ast_literals.pytest") + + def test_ast_pattern_matching(self) -> None: + self.check_many_cases_in_file("ast_pattern_matching.pytest") + + def test_ast_statements(self) -> None: + self.check_many_cases_in_file("ast_statements.pytest") + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_invalid_syntax.py b/source/errpy/tests/test_invalid_syntax.py new file mode 100644 index 00000000000..42ed878e250 --- /dev/null +++ b/source/errpy/tests/test_invalid_syntax.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest + +from tools.pyre.source.errpy.tests.utils.error_recovery_common import ErrorRecoveryCommon +from tools.pyre.source.errpy.tests.utils.test_common import INVALID_SYNTAX_TESTS_DIR + + +class ExpectedFailureTests(ErrorRecoveryCommon): + """These tests focus aspects of invalid syntax we wish to explicitly fail on""" + + def test_invalid_keywords(self) -> None: + self.compare_recovered_ast_many( + "invalid_identifiers.pytest", test_dir=INVALID_SYNTAX_TESTS_DIR + ) + + def test_invalid_types(self) -> None: + self.compare_recovered_ast_many( + "invalid_types.pytest", test_dir=INVALID_SYNTAX_TESTS_DIR + ) + + def test_invalid_match_case(self) -> None: + self.compare_recovered_ast_many( + "invalid_match_case.pytest", test_dir=INVALID_SYNTAX_TESTS_DIR + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_more_match.py b/source/errpy/tests/test_more_match.py new file mode 100644 index 00000000000..ba7787af370 --- /dev/null +++ b/source/errpy/tests/test_more_match.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest + +from tools.pyre.source.errpy.tests.utils.test_common import ASTTestCommon + + +class AllGrammarTests(ASTTestCommon): + """These tests focus on individual aspects of Python syntax""" + + def more_match_test(self, to_test: str) -> None: + self.check_many_cases_in_file(f"more_match/{to_test}") + + def test_more_match_1(self) -> None: + self.more_match_test("match1.pytest") + + def test_more_match_2(self) -> None: + self.more_match_test("match2.pytest") + + def test_more_match_3(self) -> None: + self.more_match_test("match3.pytest") + + def test_more_match_4(self) -> None: + self.more_match_test("match4.pytest") + + def test_more_match_5(self) -> None: + self.more_match_test("match5.pytest") + + def test_more_match_6(self) -> None: + self.more_match_test("match6.pytest") + + def test_more_match_7(self) -> None: + self.more_match_test("match7.pytest") + + def test_more_match_8(self) -> None: + self.more_match_test("match8.pytest") + + def test_more_match_9(self) -> None: + self.more_match_test("match9.pytest") + + def test_more_match_10(self) -> None: + self.more_match_test("match10.pytest") + + def test_more_match_11(self) -> None: + self.more_match_test("match11.pytest") + + def test_more_match_12(self) -> None: + self.more_match_test("match12.pytest") + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_parser_post_process.rs b/source/errpy/tests/test_parser_post_process.rs new file mode 100644 index 00000000000..2632fc85b40 --- /dev/null +++ b/source/errpy/tests/test_parser_post_process.rs @@ -0,0 +1,83 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/// +/// Tests the process_trailing_dots method of the `parser_post_process` module. + +#[cfg(test)] +mod process_trailing_dots_tests { + use std::collections::HashSet; + + use parser_post_process::ParserPostprocessor; + use parser_post_process::AUTOCOMPLETE_TOKEN; + + fn test_harness(input_code: &str, expected: &str, error_segments: Option>) { + let parser_post_processor = ParserPostprocessor::new(); + // Use specified error_segments or default to all lines + let err_lines = error_segments.unwrap_or(HashSet::from_iter(0..input_code.lines().count())); + let actual = parser_post_processor.postprocess(input_code, err_lines); + println!("INPUT:\n{}", input_code.to_string().replace('\n', "\\n")); + println!("EXPECTED:\n{}", expected.to_string().replace('\n', "\\n")); + println!("ACTUAL:\n{}\n\n", actual.replace('\n', "\\n")); + assert_eq!(expected.to_string(), actual); + } + + #[test] + fn test_simple() { + test_harness("x = a.\n", &format!("x = a.{}\n", AUTOCOMPLETE_TOKEN), None); + test_harness("x = a\n", "x = a\n", None); + } + + #[test] + fn test_dots_complex() { + test_harness( + "x = a.b.\n", + &format!("x = a.b.{}\n", AUTOCOMPLETE_TOKEN), + None, + ); + test_harness("x = .\n", "x = .\n", None); + test_harness("x = . ", "x = .", None); + test_harness("x '\n.'", "x '\n.'", None); + } + + #[test] + fn test_lambda_ellipsis() { + test_harness( + "lambda x,y: ...\nx = lambda x,y: ...", + "lambda x,y: ...\nx = lambda x,y: ...", + None, + ); + } + + #[test] + fn test_long_floats() { + test_harness( + "timestamp3 = 9223372036854775810.\n", + "timestamp3 = 9223372036854775810.\n", + None, + ); + test_harness( + "not_scientific = 1111111111111111.\n", + "not_scientific = 1111111111111111.\n", + None, + ); + } + + #[test] + fn test_alphanumeral_vars() { + test_harness("a123.\n", &format!("a123.{}\n", AUTOCOMPLETE_TOKEN), None); + } + + #[test] + fn test_internal_trailing_dot() { + test_harness( + "x. = 123\n", + &format!("x.{}= 123\n", AUTOCOMPLETE_TOKEN), + None, + ); + } +} diff --git a/source/errpy/tests/test_parser_pre_process.rs b/source/errpy/tests/test_parser_pre_process.rs new file mode 100644 index 00000000000..68ab2eaa213 --- /dev/null +++ b/source/errpy/tests/test_parser_pre_process.rs @@ -0,0 +1,87 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +use parser_pre_process::remove_comments; + +fn test_harness(input_code: &str, expected: &str) { + let actual = remove_comments(input_code.to_string()); + assert_eq!(expected.to_string(), actual); +} + +#[test] +fn test_simple() { + test_harness("a = 8", "a = 8\n"); + test_harness("a = 8 # a comment", "a = 8 \n"); +} + +#[test] +fn test_strings_simple() { + test_harness("'#a'", "'#a'\n"); + test_harness("\"#a\"", "\"#a\"\n"); + test_harness("\"a\" #a", "\"a\" \n"); + test_harness("'a' #a", "'a' \n"); +} + +#[test] +fn test_strings_complex() { + test_harness("'#a' #b", "'#a' \n"); + test_harness("'''\n#a\n'''", "'''\n#a\n'''\n"); + test_harness("\"\"\"\n#a\n\"\"\"", "\"\"\"\n#a\n\"\"\"\n"); +} + +#[test] +fn test_strings_escaping() { + test_harness("'#a\\' #b'", "'#a\\' #b'\n"); + test_harness("\"#a\\\" #b\"", "\"#a\\\" #b\"\n"); + test_harness("'#a\\\n#b'", "'#a\\\n#b'\n"); + test_harness("\"#a\\\n#b\"", "\"#a\\\n#b\"\n"); +} + +#[test] +fn test_pre_comments() { + // we expect just newlines in place of comments + // to preserve line and column information + test_harness( + "# comment before +# the main body of code +a = 8", + "\n\na = 8\n", + ); +} + +#[test] +fn test_remove_comments_middle_of_def() { + // comments can appear in weird places, like this which are stripped out... + // such as in a tuple definition + test_harness( + "a = (# comment in strange place +1 , 2, 3)", + "a = (\n1 , 2, 3)\n", + ); + + // or in a function definition + test_harness( + "def foo( + a=34, + # a comment here + skip_loads=True, +): + pass +", + "def foo(\n a=34,\n \n skip_loads=True,\n):\n pass\n\n", + ); +} + +#[test] +fn test_remove_post_plus() { + test_harness( + "verification_report += '\\n #' + '#' +if not self.partition_fbig_col_wipeout_map: + pass", + "verification_report += '\\n #' + '#'\nif not self.partition_fbig_col_wipeout_map:\n pass\n", + ); +} diff --git a/source/errpy/tests/test_pretty_printer.py b/source/errpy/tests/test_pretty_printer.py new file mode 100644 index 00000000000..2e17e897489 --- /dev/null +++ b/source/errpy/tests/test_pretty_printer.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest + +from tools.pyre.source.errpy.tests.utils.test_common import ASTTestCommon, PRETTY_PRINTER_TESTS_DIR + + +class AllGrammarTests(ASTTestCommon): + """These tests focus on individual types of bugs found in errpy which have been fixed""" + + def test_pretty_printer_bugs(self) -> None: + self.check_many_cases_in_file( + "pretty_printer_bugs.pytest", flavour=PRETTY_PRINTER_TESTS_DIR + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest b/source/errpy/tests/test_resources/error_recovery/simple.pytest new file mode 100644 index 00000000000..039eee06ba7 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest @@ -0,0 +1,36 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +## Simple broad case + +# a simple program using a subset of python grammar, functions, expressions and some control flow + +def fib(a: int) -> int: + # just does some nonsense assignment + tmp = a, a + ba, bb = tmp + inset = a in {0,1} + if a <= 2 or a ==1: + return 1 + elif inset: + return 1 + else: + return fib(a-1) + fib(a-2) + +def somethingelse(): + pass + +def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + +if __name__ == "__main__": + main() diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.expect_fails b/source/errpy/tests/test_resources/error_recovery/simple.pytest.expect_fails new file mode 100644 index 00000000000..e69de29bb2d diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_garbage._expected_results/Simple-broad-case_expected_results b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_garbage._expected_results/Simple-broad-case_expected_results new file mode 100644 index 00000000000..caf0a9cf3e0 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_garbage._expected_results/Simple-broad-case_expected_results @@ -0,0 +1,20525 @@ +@generated + +Errpy makes empty AST (weird) with input prior to and including: +1.->de<- + +2.->def<- + +17.->def fib(a: int) -><- + +86.-> + inset = a in {0, 1} + i<- + +87.-> inset = a in {0, 1} + if<- + +130.->== 1: + return 1 + eli<- + +208.->rn fib(a - 1) + fib(a - 2) + +de<- + +209.->n fib(a - 1) + fib(a - 2) + +def<- + +239.-> somethingelse(): + pass + +de<- + +240.->somethingelse(): + pass + +def<- + +273.->rmat_a_string(astring: str) -><- + +324.->join([x for x in astring]) + +de<- + +325.->oin([x for x in astring]) + +def<- + +335.-> x in astring]) + +def main() -><- + +441.->mat_a_string() + return 0 +if<- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Input. char of interest: ' garbage d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- + garbage def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:8] +CST Stack: + {Node ERROR (0, 0) - (0, 7)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++ garbage def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +1. Input. char of interest: 'd garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +d garbage ef fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++d garbage ef fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +2. Input. char of interest: 'de garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +de garbage f fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++de garbage f fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +4. Input. char of interest: 'def garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def garbage fib(a: int) -> int: | def garbage(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:14 - 1:17] +CST Stack: + {Node ERROR (0, 13) - (0, 16)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def garbage(a: int) -> int: ++def garbage fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +5. Input. char of interest: 'def f garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def f garbage ib(a: int) -> int: | def ib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:5 - 1:14] +CST Stack: + {Node ERROR (0, 4) - (0, 13)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def ib(a: int) -> int: ++def f garbage ib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +6. Input. char of interest: 'def fi garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fi garbage b(a: int) -> int: | def fi(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:8 - 1:17] +CST Stack: + {Node ERROR (0, 7) - (0, 16)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fi(a: int) -> int: ++def fi garbage b(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +7. Input. char of interest: 'def fib garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib garbage (a: int) -> int: | def garbage(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:5 - 1:8] +CST Stack: + {Node ERROR (0, 4) - (0, 7)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def garbage(a: int) -> int: ++def fib garbage (a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +8. Input. char of interest: 'def fib( garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib( garbage a: int) -> int: | def fib(garbage: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:18 - 1:19] +CST Stack: + {Node ERROR (0, 17) - (0, 18)} + {Node typed_parameter (0, 9) - (0, 23)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(garbage: int) -> int: ++def fib( garbage a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +9. Input. char of interest: 'def fib(a garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a garbage : int) -> int: | def fib(garbage: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:9 - 1:10] +CST Stack: + {Node ERROR (0, 8) - (0, 9)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(garbage: int) -> int: ++def fib(a garbage : int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +11. Input. char of interest: 'ef fib(a: garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: garbage int) -> int: | def fib(a: garbage) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:21 - 1:24] +CST Stack: + {Node ERROR (0, 20) - (0, 23)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: garbage) -> int: ++def fib(a: garbage int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +12. Input. char of interest: 'f fib(a: i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: i garbage nt) -> int: | def fib(a: nt) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:12 - 1:21] +CST Stack: + {Node ERROR (0, 11) - (0, 20)} + {Node typed_parameter (0, 8) - (0, 23)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: nt) -> int: ++def fib(a: i garbage nt) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +13. Input. char of interest: ' fib(a: in garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: in garbage t) -> int: | def fib(a: in) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:15 - 1:24] +CST Stack: + {Node ERROR (0, 14) - (0, 23)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:12 - 1:14] +CST Stack: + {Node identifier (0, 11) - (0, 13)} + {Node type (0, 11) - (0, 13)} + {Node typed_parameter (0, 8) - (0, 13)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: in) -> int: ++def fib(a: in garbage t) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +14. Input. char of interest: 'fib(a: int garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int garbage ) -> int: | def fib(a: garbage) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:12 - 1:15] +CST Stack: + {Node ERROR (0, 11) - (0, 14)} + {Node typed_parameter (0, 8) - (0, 22)} + {Node parameters (0, 7) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: garbage) -> int: ++def fib(a: int garbage ) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +16. Input. char of interest: 'b(a: int) garbage -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) garbage -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:18 - 1:25] +CST Stack: + {Node ERROR (0, 17) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) garbage -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +17. Input. char of interest: '(a: int) - garbage >': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) - garbage > int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) - garbage > int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +19. Input. char of interest: ': int) -> garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> garbage int: | def fib(a: int) -> garbage: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:29 - 1:32] +CST Stack: + {Node ERROR (0, 28) - (0, 31)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> garbage: ++def fib(a: int) -> garbage int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +20. Input. char of interest: ' int) -> i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> i garbage nt: | def fib(a: int) -> nt: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:20 - 1:29] +CST Stack: + {Node ERROR (0, 19) - (0, 28)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> nt: ++def fib(a: int) -> i garbage nt: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +21. Input. char of interest: 'int) -> in garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> in garbage t: | def fib(a: int) -> in: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:23 - 1:32] +CST Stack: + {Node ERROR (0, 22) - (0, 31)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:20 - 1:22] +CST Stack: + {Node identifier (0, 19) - (0, 21)} + {Node type (0, 19) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> in: ++def fib(a: int) -> in garbage t: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +22. Input. char of interest: 'nt) -> int garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int garbage : | def fib(a: int) -> garbage: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:20 - 1:23] +CST Stack: + {Node ERROR (0, 19) - (0, 22)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> garbage: ++def fib(a: int) -> int garbage : + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +23. Input. char of interest: 't) -> int: garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: garbage | def fib(a: int) -> int: + tmp = (a, a) | garbage + ba, bb = tmp | tmp = (a, a) + inset = a in {0, 1} | ba, bb = tmp + if a <= 2 or a == 1: | inset = a in {0, 1} + return 1 | if a <= 2 or a == 1: + elif inset: | return 1 + return 1 | elif inset: + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,14 +1,13 @@ +-def fib(a: int) -> int: +- garbage +-tmp = (a, a) +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++def fib(a: int) -> int: garbage ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +28. Input. char of interest: ' int: + garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + garbage tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:6 - 2:13] +CST Stack: + {Node ERROR (1, 5) - (1, 12)} + {Node function_definition (0, 0) - (1, 25)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,13 +1,13 @@ + def fib(a: int) -> int: +- tmp = (a, a) +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++ garbage tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +29. Input. char of interest: 'int: + t garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + t garbage mp = (a, a) | mp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:14] +CST Stack: + {Node ERROR (1, 4) - (1, 13)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- mp = (a, a) ++ t garbage mp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +30. Input. char of interest: 'nt: + tm garbage p': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tm garbage p = (a, a) | p = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:15] +CST Stack: + {Node ERROR (1, 4) - (1, 14)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- p = (a, a) ++ tm garbage p = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +32. Input. char of interest: ': + tmp garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp garbage = (a, a) | garbage = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:8] +CST Stack: + {Node ERROR (1, 4) - (1, 7)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- garbage = (a, a) ++ tmp garbage = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +34. Input. char of interest: ' tmp = garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = garbage (a, a) | tmp = garbage(a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = garbage(a, a) ++ tmp = garbage (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +35. Input. char of interest: ' tmp = ( garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = ( garbage a, a) | tmp = (garbage, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:21 - 2:22] +CST Stack: + {Node ERROR (1, 20) - (1, 21)} + {Node tuple (1, 10) - (1, 25)} + {Node assignment (1, 4) - (1, 25)} + {Node expression_statement (1, 4) - (1, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (garbage, a) ++ tmp = ( garbage a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +36. Input. char of interest: ' tmp = (a garbage ,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a garbage , a) | tmp = (garbage, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:12 - 2:13] +CST Stack: + {Node ERROR (1, 11) - (1, 12)} + {Node tuple (1, 10) - (1, 25)} + {Node assignment (1, 4) - (1, 25)} + {Node expression_statement (1, 4) - (1, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (garbage, a) ++ tmp = (a garbage , a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +38. Input. char of interest: 'tmp = (a, garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, garbage a) | tmp = (a, garbage) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:24 - 2:25] +CST Stack: + {Node ERROR (1, 23) - (1, 24)} + {Node tuple (1, 10) - (1, 25)} + {Node assignment (1, 4) - (1, 25)} + {Node expression_statement (1, 4) - (1, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, garbage) ++ tmp = (a, garbage a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +39. Input. char of interest: 'mp = (a, a garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a garbage ) | tmp = (a, garbage) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:15 - 2:16] +CST Stack: + {Node ERROR (1, 14) - (1, 15)} + {Node tuple (1, 10) - (1, 25)} + {Node assignment (1, 4) - (1, 25)} + {Node expression_statement (1, 4) - (1, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, garbage) ++ tmp = (a, a garbage ) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +40. Input. char of interest: 'p = (a, a) garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) garbage | tmp = garbage + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:11 - 2:17] +CST Stack: + {Node ERROR (1, 10) - (1, 16)} + {Node assignment (1, 4) - (1, 24)} + {Node expression_statement (1, 4) - (1, 24)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = garbage ++ tmp = (a, a) garbage + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +45. Input. char of interest: 'a, a) + garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + garbage ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:6 - 3:13] +CST Stack: + {Node ERROR (2, 5) - (2, 12)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ garbage ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +46. Input. char of interest: ', a) + b garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + b garbage a, bb = tmp | a, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:14] +CST Stack: + {Node ERROR (2, 4) - (2, 13)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- a, bb = tmp ++ b garbage a, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +47. Input. char of interest: ' a) + ba garbage ,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba garbage , bb = tmp | garbage, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:7] +CST Stack: + {Node ERROR (2, 4) - (2, 6)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- garbage, bb = tmp ++ ba garbage , bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +49. Input. char of interest: ') + ba, garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, garbage bb = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:10 - 3:22] +CST Stack: + {Node ERROR (2, 9) - (2, 21)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, garbage bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +50. Input. char of interest: ' + ba, b garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b garbage b = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:22] +CST Stack: + {Node ERROR (2, 8) - (2, 21)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, b garbage b = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +52. Input. char of interest: ' ba, bb garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb garbage = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:22] +CST Stack: + {Node ERROR (2, 8) - (2, 21)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, bb garbage = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +54. Input. char of interest: ' ba, bb = garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = garbage tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:15 - 3:22] +CST Stack: + {Node ERROR (2, 14) - (2, 21)} + {Node assignment (2, 4) - (2, 25)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = garbage tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +55. Input. char of interest: 'ba, bb = t garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = t garbage mp | ba, bb = mp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:23] +CST Stack: + {Node ERROR (2, 13) - (2, 22)} + {Node assignment (2, 4) - (2, 25)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = mp ++ ba, bb = t garbage mp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +56. Input. char of interest: 'a, bb = tm garbage p': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tm garbage p | ba, bb = p + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:24] +CST Stack: + {Node ERROR (2, 13) - (2, 23)} + {Node assignment (2, 4) - (2, 25)} + {Node expression_statement (2, 4) - (2, 25)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = p ++ ba, bb = tm garbage p + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +57. Input. char of interest: ', bb = tmp garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp garbage | ba, bb = garbage + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:17] +CST Stack: + {Node ERROR (2, 13) - (2, 16)} + {Node assignment (2, 4) - (2, 24)} + {Node expression_statement (2, 4) - (2, 24)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = garbage ++ ba, bb = tmp garbage + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +62. Input. char of interest: '= tmp + garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + garbage inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:6 - 4:13] +CST Stack: + {Node ERROR (3, 5) - (3, 12)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ garbage inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +63. Input. char of interest: ' tmp + i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + i garbage nset = a in {0, 1} | nset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:14] +CST Stack: + {Node ERROR (3, 4) - (3, 13)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- nset = a in {0, 1} ++ i garbage nset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +64. Input. char of interest: 'tmp + in garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + in garbage set = a in {0, 1} | set = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:15] +CST Stack: + {Node ERROR (3, 4) - (3, 14)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- set = a in {0, 1} ++ in garbage set = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +65. Input. char of interest: 'mp + ins garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + ins garbage et = a in {0, 1} | et = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:16] +CST Stack: + {Node ERROR (3, 4) - (3, 15)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- et = a in {0, 1} ++ ins garbage et = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +66. Input. char of interest: 'p + inse garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inse garbage t = a in {0, 1} | t = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:17] +CST Stack: + {Node ERROR (3, 4) - (3, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- t = a in {0, 1} ++ inse garbage t = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +68. Input. char of interest: ' inset garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset garbage = a in {0, 1} | garbage = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:10] +CST Stack: + {Node ERROR (3, 4) - (3, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- garbage = a in {0, 1} ++ inset garbage = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +70. Input. char of interest: ' inset = garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = garbage a in {0, 1} | inset = garbage in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:22 - 4:23] +CST Stack: + {Node ERROR (3, 21) - (3, 22)} + {Node comparison_operator (3, 13) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = garbage in {0, 1} ++ inset = garbage a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +72. Input. char of interest: 'inset = a garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a garbage in {0, 1} | inset = garbage in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:14] +CST Stack: + {Node ERROR (3, 12) - (3, 13)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = garbage in {0, 1} ++ inset = a garbage in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +73. Input. char of interest: 'nset = a i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a i garbage n {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:26] +CST Stack: + {Node ERROR (3, 12) - (3, 25)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = a i garbage n {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +75. Input. char of interest: 'et = a in garbage {': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in garbage {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:19 - 4:26] +CST Stack: + {Node ERROR (3, 18) - (3, 25)} + {Node comparison_operator (3, 12) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in garbage {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +76. Input. char of interest: 't = a in { garbage 0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in { garbage 0, 1} | inset = a in {garbage, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:28 - 4:29] +CST Stack: + {Node ERROR (3, 27) - (3, 28)} + {Node set (3, 17) - (3, 32)} + {Node comparison_operator (3, 12) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {garbage, 1} ++ inset = a in { garbage 0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +77. Input. char of interest: ' = a in {0 garbage ,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0 garbage , 1} | inset = a in {garbage, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:19 - 4:20] +CST Stack: + {Node ERROR (3, 18) - (3, 19)} + {Node set (3, 17) - (3, 32)} + {Node comparison_operator (3, 12) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {garbage, 1} ++ inset = a in {0 garbage , 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +79. Input. char of interest: ' a in {0, garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, garbage 1} | inset = a in {0, garbage} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:31 - 4:32] +CST Stack: + {Node ERROR (3, 30) - (3, 31)} + {Node set (3, 17) - (3, 32)} + {Node comparison_operator (3, 12) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, garbage} ++ inset = a in {0, garbage 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +80. Input. char of interest: 'a in {0, 1 garbage }': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1 garbage } | inset = a in {0, garbage} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:22 - 4:23] +CST Stack: + {Node ERROR (3, 21) - (3, 22)} + {Node set (3, 17) - (3, 32)} + {Node comparison_operator (3, 12) - (3, 32)} + {Node assignment (3, 4) - (3, 32)} + {Node expression_statement (3, 4) - (3, 32)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, garbage} ++ inset = a in {0, 1 garbage } + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +81. Input. char of interest: ' in {0, 1} garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} garbage | inset = a in garbage + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:18 - 4:24] +CST Stack: + {Node ERROR (3, 17) - (3, 23)} + {Node comparison_operator (3, 12) - (3, 31)} + {Node assignment (3, 4) - (3, 31)} + {Node expression_statement (3, 4) - (3, 31)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in garbage ++ inset = a in {0, 1} garbage + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +86. Input. char of interest: '0, 1} + garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + garbage if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ garbage if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +87. Input. char of interest: ', 1} + i garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + i garbage f a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ i garbage f a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +89. Input. char of interest: '1} + if garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if garbage a <= 2 or a == 1: | if garbage <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:17 - 5:18] +CST Stack: + {Node ERROR (4, 16) - (4, 17)} + {Node comparison_operator (4, 8) - (4, 22)} + {Node boolean_operator (4, 8) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if garbage <= 2 or a == 1: ++ if garbage a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +91. Input. char of interest: ' + if a garbage <': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a garbage <= 2 or a == 1: | if garbage <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:8 - 5:9] +CST Stack: + {Node ERROR (4, 7) - (4, 8)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if garbage <= 2 or a == 1: ++ if a garbage <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +92. Input. char of interest: ' if a < garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a < garbage = 2 or a == 1: | if a < garbage or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:23] +CST Stack: + {Node ERROR (4, 19) - (4, 22)} + {Node boolean_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a < garbage or a == 1: ++ if a < garbage = 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +94. Input. char of interest: ' if a <= garbage 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= garbage 2 or a == 1: | if a <= garbage or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:22 - 5:23] +CST Stack: + {Node ERROR (4, 21) - (4, 22)} + {Node boolean_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= garbage or a == 1: ++ if a <= garbage 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +96. Input. char of interest: 'if a <= 2 garbage o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 garbage or a == 1: | if a <= garbage or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:13 - 5:14] +CST Stack: + {Node ERROR (4, 12) - (4, 13)} + {Node comparison_operator (4, 7) - (4, 22)} + {Node boolean_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= garbage or a == 1: ++ if a <= 2 garbage or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +97. Input. char of interest: 'f a <= 2 o garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 o garbage r a == 1: | if a <= a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:13 - 5:26] +CST Stack: + {Node ERROR (4, 12) - (4, 25)} + {Node comparison_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= a == 1: ++ if a <= 2 o garbage r a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +99. Input. char of interest: 'a <= 2 or garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or garbage a == 1: | if a <= 2 or garbage == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:27 - 5:28] +CST Stack: + {Node ERROR (4, 26) - (4, 27)} + {Node comparison_operator (4, 18) - (4, 32)} + {Node boolean_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or garbage == 1: ++ if a <= 2 or garbage a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +101. Input. char of interest: '<= 2 or a garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a garbage == 1: | if a <= 2 or garbage == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:18 - 5:19] +CST Stack: + {Node ERROR (4, 17) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or garbage == 1: ++ if a <= 2 or a garbage == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +102. Input. char of interest: '= 2 or a = garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = garbage = 1: | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:33] +CST Stack: + {Node ERROR (4, 19) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a = garbage = 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +104. Input. char of interest: '2 or a == garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == garbage 1: | if a <= 2 or a == garbage: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:32 - 5:33] +CST Stack: + {Node ERROR (4, 31) - (4, 32)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == garbage: ++ if a <= 2 or a == garbage 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +105. Input. char of interest: ' or a == 1 garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1 garbage : | if a <= 2 or a == garbage: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:23 - 5:24] +CST Stack: + {Node ERROR (4, 22) - (4, 23)} + {Node comparison_operator (4, 17) - (4, 31)} + {Node boolean_operator (4, 7) - (4, 31)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == garbage: ++ if a <= 2 or a == 1 garbage : + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +106. Input. char of interest: 'or a == 1: garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: garbage | if a <= 2 or a == 1: + return 1 | garbage + elif inset: | return 1 + return 1 | inset: 1 + else: | else: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:9] +CST Stack: + {Node ERROR (6, 4) - (6, 8)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 9) - (7, 16)} + {Node expression_statement (6, 9) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,11 +2,12 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: +- garbage +- return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ if a <= 2 or a == 1: garbage ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +115. Input. char of interest: ': + garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + garbage return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:10 - 6:17] +CST Stack: + {Node ERROR (5, 9) - (5, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ garbage return 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +116. Input. char of interest: ' + r garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + r garbage eturn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:24] +CST Stack: + {Node ERROR (5, 8) - (5, 23)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ r garbage eturn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +117. Input. char of interest: ' re garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + re garbage turn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:24] +CST Stack: + {Node ERROR (5, 8) - (5, 23)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ re garbage turn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +118. Input. char of interest: ' ret garbage u': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + ret garbage urn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:24] +CST Stack: + {Node ERROR (5, 8) - (5, 23)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ ret garbage urn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +119. Input. char of interest: ' retu garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retu garbage rn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:24] +CST Stack: + {Node ERROR (5, 8) - (5, 23)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retu garbage rn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +120. Input. char of interest: ' retur garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retur garbage n 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:24] +CST Stack: + {Node ERROR (5, 8) - (5, 23)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retur garbage n 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +122. Input. char of interest: ' return garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return garbage 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:17 - 6:24] +CST Stack: + {Node ERROR (5, 16) - (5, 23)} + {Node return_statement (5, 8) - (5, 25)} + {Node block (5, 8) - (5, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ return garbage 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +123. Input. char of interest: ' return 1 garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 garbage | return garbage + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:16 - 6:17] +CST Stack: + {Node ERROR (5, 15) - (5, 16)} + {Node return_statement (5, 8) - (5, 24)} + {Node block (5, 8) - (5, 24)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return garbage ++ return 1 garbage + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +128. Input. char of interest: 'urn 1 + garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + garbage elif inset: | garbage: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:14 - 7:24] +CST Stack: + {Node ERROR (6, 13) - (6, 23)} + {Node assignment (6, 5) - (7, 16)} + {Node expression_statement (6, 5) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 5) - (7, 16)} + {Node expression_statement (6, 5) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- garbage: 1 +- else: return(a - 1) + fib(a - 2) ++ garbage elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +129. Input. char of interest: 'rn 1 + e garbage l': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + e garbage lif inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:18] +CST Stack: + {Node ERROR (6, 4) - (6, 17)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 18) - (7, 16)} + {Node expression_statement (6, 18) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ e garbage lif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +130. Input. char of interest: 'n 1 + el garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + el garbage if inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ el garbage if inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +131. Input. char of interest: ' 1 + eli garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + eli garbage f inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:18] +CST Stack: + {Node ERROR (6, 4) - (6, 17)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 18) - (7, 16)} + {Node expression_statement (6, 18) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ eli garbage f inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +133. Input. char of interest: ' + elif garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif garbage inset: | elif garbage: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:19 - 7:24] +CST Stack: + {Node ERROR (6, 18) - (6, 23)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif garbage: ++ elif garbage inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +134. Input. char of interest: ' elif i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif i garbage nset: | elif nset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:19] +CST Stack: + {Node ERROR (6, 9) - (6, 18)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif nset: ++ elif i garbage nset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +135. Input. char of interest: ' elif in garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif in garbage set: | elif set: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:20] +CST Stack: + {Node ERROR (6, 9) - (6, 19)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif set: ++ elif in garbage set: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +136. Input. char of interest: ' elif ins garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif ins garbage et: | elif ins: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:14 - 7:24] +CST Stack: + {Node ERROR (6, 13) - (6, 23)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif ins: ++ elif ins garbage et: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +137. Input. char of interest: ' elif inse garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inse garbage t: | elif inse: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:15 - 7:24] +CST Stack: + {Node ERROR (6, 14) - (6, 23)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inse: ++ elif inse garbage t: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +138. Input. char of interest: 'elif inset garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset garbage : | elif garbage: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:15] +CST Stack: + {Node ERROR (6, 9) - (6, 14)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif garbage: ++ elif inset garbage : + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +139. Input. char of interest: 'lif inset: garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: garbage | elif inset: + return 1 | garbage + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: return(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,10 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: +- garbage +- return 1 +- else: return(a - 1) + fib(a - 2) ++ elif inset: garbage ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +148. Input. char of interest: ': + garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + garbage return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:10 - 8:17] +CST Stack: + {Node ERROR (7, 9) - (7, 16)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ garbage return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +149. Input. char of interest: ' + r garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + r garbage eturn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:24] +CST Stack: + {Node ERROR (7, 8) - (7, 23)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ r garbage eturn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +150. Input. char of interest: ' re garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + re garbage turn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:24] +CST Stack: + {Node ERROR (7, 8) - (7, 23)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ re garbage turn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +151. Input. char of interest: ' ret garbage u': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + ret garbage urn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:24] +CST Stack: + {Node ERROR (7, 8) - (7, 23)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ ret garbage urn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +152. Input. char of interest: ' retu garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retu garbage rn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:24] +CST Stack: + {Node ERROR (7, 8) - (7, 23)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retu garbage rn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +153. Input. char of interest: ' retur garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retur garbage n 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:24] +CST Stack: + {Node ERROR (7, 8) - (7, 23)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retur garbage n 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +155. Input. char of interest: ' return garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return garbage 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:17 - 8:24] +CST Stack: + {Node ERROR (7, 16) - (7, 23)} + {Node return_statement (7, 8) - (7, 25)} + {Node block (7, 8) - (7, 25)} + {Node elif_clause (6, 4) - (7, 25)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ return garbage 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +156. Input. char of interest: ' return 1 garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 garbage | return garbage + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:16 - 8:17] +CST Stack: + {Node ERROR (7, 15) - (7, 16)} + {Node return_statement (7, 8) - (7, 24)} + {Node block (7, 8) - (7, 24)} + {Node elif_clause (6, 4) - (7, 24)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return garbage ++ return 1 garbage + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +161. Input. char of interest: 'urn 1 + garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + garbage else: | garbage: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:14 - 9:18] +CST Stack: + {Node ERROR (8, 13) - (8, 17)} + {Node assignment (8, 5) - (9, 38)} + {Node expression_statement (8, 5) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 5) - (9, 38)} + {Node expression_statement (8, 5) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 5) - (9, 38)} + {Node expression_statement (8, 5) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- garbage: return(a - 1) + fib(a - 2) ++ garbage else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +162. Input. char of interest: 'rn 1 + e garbage l': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + e garbage lse: | lse: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:14] +CST Stack: + {Node ERROR (8, 4) - (8, 13)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 14) - (9, 38)} + {Node expression_statement (8, 14) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 14) - (9, 38)} + {Node expression_statement (8, 14) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- lse: return(a - 1) + fib(a - 2) ++ e garbage lse: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +163. Input. char of interest: 'n 1 + el garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + el garbage se: | se: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:15] +CST Stack: + {Node ERROR (8, 4) - (8, 14)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 15) - (9, 38)} + {Node expression_statement (8, 15) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 15) - (9, 38)} + {Node expression_statement (8, 15) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- se: return(a - 1) + fib(a - 2) ++ el garbage se: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +164. Input. char of interest: ' 1 + els garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + els garbage e: | els: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:9 - 9:18] +CST Stack: + {Node ERROR (8, 8) - (8, 17)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- els: return(a - 1) + fib(a - 2) ++ els garbage e: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +165. Input. char of interest: '1 + else garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else garbage : | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [9:10 - 9:17] +CST Stack: + {Node ERROR (8, 9) - (8, 16)} + {Node else_clause (8, 4) - (9, 38)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,7 @@ + return 1 + elif inset: + return 1 +- else: ++ else garbage : + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +166. Input. char of interest: ' + else: garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: garbage | else: + return fib(a - 1) + fib(a - 2) | garbage + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,9 +6,8 @@ + return 1 + elif inset: + return 1 +- else: +- garbage +- return fib(a - 1) + fib(a - 2) ++ else: garbage ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +175. Input. char of interest: ': + garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + garbage return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:10 - 10:17] +CST Stack: + {Node ERROR (9, 9) - (9, 16)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ garbage return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +176. Input. char of interest: ' + r garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + r garbage eturn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:24] +CST Stack: + {Node ERROR (9, 8) - (9, 23)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ r garbage eturn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +177. Input. char of interest: ' re garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + re garbage turn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:24] +CST Stack: + {Node ERROR (9, 8) - (9, 23)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ re garbage turn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +178. Input. char of interest: ' ret garbage u': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + ret garbage urn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:24] +CST Stack: + {Node ERROR (9, 8) - (9, 23)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ ret garbage urn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +179. Input. char of interest: ' retu garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retu garbage rn fib(a - 1) + fib(a - 2) | retu(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:14 - 10:28] +CST Stack: + {Node ERROR (9, 13) - (9, 27)} + {Node call (9, 8) - (9, 34)} + {Node binary_operator (9, 8) - (9, 47)} + {Node expression_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retu(a - 1) + fib(a - 2) ++ retu garbage rn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +180. Input. char of interest: ' retur garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retur garbage n fib(a - 1) + fib(a - 2) | retur(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:28] +CST Stack: + {Node ERROR (9, 14) - (9, 27)} + {Node call (9, 8) - (9, 34)} + {Node binary_operator (9, 8) - (9, 47)} + {Node expression_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retur(a - 1) + fib(a - 2) ++ retur garbage n fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +182. Input. char of interest: ' return garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return garbage fib(a - 1) + fib(a - 2) | return garbage(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:25 - 10:28] +CST Stack: + {Node ERROR (9, 24) - (9, 27)} + {Node call (9, 16) - (9, 34)} + {Node binary_operator (9, 16) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return garbage(a - 1) + fib(a - 2) ++ return garbage fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +183. Input. char of interest: ' return f garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return f garbage ib(a - 1) + fib(a - 2) | return ib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:16 - 10:25] +CST Stack: + {Node ERROR (9, 15) - (9, 24)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return ib(a - 1) + fib(a - 2) ++ return f garbage ib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +184. Input. char of interest: ' return fi garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fi garbage b(a - 1) + fib(a - 2) | return fi(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:19 - 10:28] +CST Stack: + {Node ERROR (9, 18) - (9, 27)} + {Node call (9, 15) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fi(a - 1) + fib(a - 2) ++ return fi garbage b(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +185. Input. char of interest: 'return fib garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib garbage (a - 1) + fib(a - 2) | return garbage(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return garbage(a - 1) + fib(a - 2) ++ return fib garbage (a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +186. Input. char of interest: 'eturn fib( garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib( garbage a - 1) + fib(a - 2) | return fib(garbage - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:30] +CST Stack: + {Node ERROR (9, 28) - (9, 29)} + {Node binary_operator (9, 20) - (9, 33)} + {Node argument_list (9, 18) - (9, 34)} + {Node call (9, 15) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(garbage - 1) + fib(a - 2) ++ return fib( garbage a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +188. Input. char of interest: 'urn fib(a garbage -': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a garbage - 1) + fib(a - 2) | return fib(garbage - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:20 - 10:21] +CST Stack: + {Node ERROR (9, 19) - (9, 20)} + {Node argument_list (9, 18) - (9, 34)} + {Node call (9, 15) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(garbage - 1) + fib(a - 2) ++ return fib(a garbage - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +190. Input. char of interest: 'n fib(a - garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - garbage 1) + fib(a - 2) | return fib(a - garbage) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:33 - 10:34] +CST Stack: + {Node ERROR (9, 32) - (9, 33)} + {Node argument_list (9, 18) - (9, 34)} + {Node call (9, 15) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - garbage) + fib(a - 2) ++ return fib(a - garbage 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +191. Input. char of interest: ' fib(a - 1 garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1 garbage ) + fib(a - 2) | return fib(a - garbage) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:24 - 10:25] +CST Stack: + {Node ERROR (9, 23) - (9, 24)} + {Node binary_operator (9, 19) - (9, 32)} + {Node argument_list (9, 18) - (9, 34)} + {Node call (9, 15) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - garbage) + fib(a - 2) ++ return fib(a - 1 garbage ) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +193. Input. char of interest: 'ib(a - 1) garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) garbage + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:28 - 10:35] +CST Stack: + {Node ERROR (9, 27) - (9, 34)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) garbage + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +195. Input. char of interest: '(a - 1) + garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + garbage fib(a - 2) | return fib(a - 1) + garbage(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:38 - 10:41] +CST Stack: + {Node ERROR (9, 37) - (9, 40)} + {Node call (9, 29) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + garbage(a - 2) ++ return fib(a - 1) + garbage fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +196. Input. char of interest: 'a - 1) + f garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + f garbage ib(a - 2) | return fib(a - 1) + ib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:38] +CST Stack: + {Node ERROR (9, 28) - (9, 37)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + ib(a - 2) ++ return fib(a - 1) + f garbage ib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +197. Input. char of interest: ' - 1) + fi garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fi garbage b(a - 2) | return fib(a - 1) + fi(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:32 - 10:41] +CST Stack: + {Node ERROR (9, 31) - (9, 40)} + {Node call (9, 28) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fi(a - 2) ++ return fib(a - 1) + fi garbage b(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +198. Input. char of interest: '- 1) + fib garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib garbage (a - 2) | return fib(a - 1) + garbage(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:32] +CST Stack: + {Node ERROR (9, 28) - (9, 31)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + garbage(a - 2) ++ return fib(a - 1) + fib garbage (a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +199. Input. char of interest: ' 1) + fib( garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib( garbage a - 2) | return fib(a - 1) + fib(garbage - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:42 - 10:43] +CST Stack: + {Node ERROR (9, 41) - (9, 42)} + {Node binary_operator (9, 33) - (9, 46)} + {Node argument_list (9, 31) - (9, 47)} + {Node call (9, 28) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(garbage - 2) ++ return fib(a - 1) + fib( garbage a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +201. Input. char of interest: ') + fib(a garbage -': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a garbage - 2) | return fib(a - 1) + fib(garbage - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:33 - 10:34] +CST Stack: + {Node ERROR (9, 32) - (9, 33)} + {Node argument_list (9, 31) - (9, 47)} + {Node call (9, 28) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(garbage - 2) ++ return fib(a - 1) + fib(a garbage - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +203. Input. char of interest: '+ fib(a - garbage 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - garbage 2) | return fib(a - 1) + fib(a - garbage) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:46 - 10:47] +CST Stack: + {Node ERROR (9, 45) - (9, 46)} + {Node argument_list (9, 31) - (9, 47)} + {Node call (9, 28) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - garbage) ++ return fib(a - 1) + fib(a - garbage 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +204. Input. char of interest: ' fib(a - 2 garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2 garbage ) | return fib(a - 1) + fib(a - garbage) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:37 - 10:38] +CST Stack: + {Node ERROR (9, 36) - (9, 37)} + {Node binary_operator (9, 32) - (9, 45)} + {Node argument_list (9, 31) - (9, 47)} + {Node call (9, 28) - (9, 47)} + {Node binary_operator (9, 15) - (9, 47)} + {Node return_statement (9, 8) - (9, 47)} + {Node block (9, 8) - (9, 47)} + {Node else_clause (8, 4) - (9, 47)} + {Node if_statement (4, 4) - (9, 47)} + {Node block (1, 4) - (9, 47)} + {Node function_definition (0, 0) - (9, 47)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - garbage) ++ return fib(a - 1) + fib(a - 2 garbage ) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +205. Input. char of interest: 'fib(a - 2) garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) garbage | return fib(a - 1) + fib(a - 2) + | garbage +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,8 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) +- garbage ++ return fib(a - 1) + fib(a - 2) garbage + + def somethingelse(): + pass +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +206. Input. char of interest: 'ib(a - 2) + garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + garbage | garbage +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,8 +8,7 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) +-garbage +- ++ garbage + def somethingelse(): + pass + +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +207. Input. char of interest: 'b(a - 2) + + garbage d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | + garbage def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:2 - 12:9] +CST Stack: + {Node ERROR (11, 1) - (11, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++ garbage def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +208. Input. char of interest: '(a - 2) + +d garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +d garbage ef somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++d garbage ef somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +209. Input. char of interest: 'a - 2) + +de garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +de garbage f somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++de garbage f somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +211. Input. char of interest: '- 2) + +def garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def garbage somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:6 - 12:13] +CST Stack: + {Node ERROR (11, 5) - (11, 12)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def garbage somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +212. Input. char of interest: ' 2) + +def s garbage o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def s garbage omethingelse(): | def omethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:14] +CST Stack: + {Node ERROR (11, 4) - (11, 13)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def omethingelse(): ++def s garbage omethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +213. Input. char of interest: '2) + +def so garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def so garbage methingelse(): | def methingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:15] +CST Stack: + {Node ERROR (11, 4) - (11, 14)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def methingelse(): ++def so garbage methingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +214. Input. char of interest: ') + +def som garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def som garbage ethingelse(): | def ethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:16] +CST Stack: + {Node ERROR (11, 4) - (11, 15)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ethingelse(): ++def som garbage ethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +215. Input. char of interest: ' + +def some garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def some garbage thingelse(): | def thingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:17] +CST Stack: + {Node ERROR (11, 4) - (11, 16)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def thingelse(): ++def some garbage thingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +216. Input. char of interest: ' +def somet garbage h': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somet garbage hingelse(): | def hingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:18] +CST Stack: + {Node ERROR (11, 4) - (11, 17)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def hingelse(): ++def somet garbage hingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +217. Input. char of interest: 'def someth garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def someth garbage ingelse(): | def ingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:19] +CST Stack: + {Node ERROR (11, 4) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ingelse(): ++def someth garbage ingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +218. Input. char of interest: 'ef somethi garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethi garbage ngelse(): | def somethi(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:13 - 12:27] +CST Stack: + {Node ERROR (11, 12) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethi(): ++def somethi garbage ngelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +219. Input. char of interest: 'f somethin garbage g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethin garbage gelse(): | def somethin(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:14 - 12:27] +CST Stack: + {Node ERROR (11, 13) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethin(): ++def somethin garbage gelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +220. Input. char of interest: ' something garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def something garbage else(): | def something(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:15 - 12:27] +CST Stack: + {Node ERROR (11, 14) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def something(): ++def something garbage else(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +221. Input. char of interest: 'somethinge garbage l': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinge garbage lse(): | def somethinge(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:16 - 12:27] +CST Stack: + {Node ERROR (11, 15) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethinge(): ++def somethinge garbage lse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +222. Input. char of interest: 'omethingel garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingel garbage se(): | def somethingel(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:17 - 12:27] +CST Stack: + {Node ERROR (11, 16) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingel(): ++def somethingel garbage se(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +223. Input. char of interest: 'methingels garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingels garbage e(): | def somethingels(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:18 - 12:27] +CST Stack: + {Node ERROR (11, 17) - (11, 26)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingels(): ++def somethingels garbage e(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +224. Input. char of interest: 'ethingelse garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse garbage (): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:19 - 12:26] +CST Stack: + {Node ERROR (11, 18) - (11, 25)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse garbage (): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +225. Input. char of interest: 'thingelse( garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse( garbage ): | def somethingelse(garbage): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(garbage): ++def somethingelse( garbage ): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +226. Input. char of interest: 'hingelse() garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse() garbage : | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:21 - 12:28] +CST Stack: + {Node ERROR (11, 20) - (11, 27)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse() garbage : + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +227. Input. char of interest: 'ingelse(): garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): garbage | def somethingelse(): + pass | garbage + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,9 +9,8 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): +- garbage +-pass ++def somethingelse(): garbage ++ pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +232. Input. char of interest: 'se(): + garbage p': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + garbage pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:6 - 13:13] +CST Stack: + {Node ERROR (12, 5) - (12, 12)} + {Node function_definition (11, 0) - (12, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass ++ garbage pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +233. Input. char of interest: 'e(): + p garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + p garbage ass | ass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:14] +CST Stack: + {Node ERROR (12, 4) - (12, 13)} + {Node function_definition (11, 0) - (12, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ass ++ p garbage ass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +234. Input. char of interest: '(): + pa garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pa garbage ss | ss + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:15] +CST Stack: + {Node ERROR (12, 4) - (12, 14)} + {Node function_definition (11, 0) - (12, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ss ++ pa garbage ss + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +235. Input. char of interest: '): + pas garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas garbage s | s + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:16] +CST Stack: + {Node ERROR (12, 4) - (12, 15)} + {Node function_definition (11, 0) - (12, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- s ++ pas garbage s + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +236. Input. char of interest: ': + pass garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass garbage | garbage + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:9] +CST Stack: + {Node ERROR (12, 4) - (12, 8)} + {Node function_definition (11, 0) - (12, 16)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- garbage ++ pass garbage + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +237. Input. char of interest: ' + pass + garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + garbage | garbage +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,8 +11,7 @@ + + def somethingelse(): + pass +-garbage +- ++ garbage + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +238. Input. char of interest: ' pass + + garbage d': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | + garbage def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:2 - 15:9] +CST Stack: + {Node ERROR (14, 1) - (14, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++ garbage def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +239. Input. char of interest: ' pass + +d garbage e': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +d garbage ef format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++d garbage ef format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +240. Input. char of interest: ' pass + +de garbage f': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +de garbage f format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++de garbage f format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +242. Input. char of interest: 'pass + +def garbage f': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def garbage format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:6 - 15:13] +CST Stack: + {Node ERROR (14, 5) - (14, 12)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def garbage format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +243. Input. char of interest: 'ass + +def f garbage o': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def f garbage ormat_a_string(astring: str) -> str: | def ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:14] +CST Stack: + {Node ERROR (14, 4) - (14, 13)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def ormat_a_string(astring: str) -> str: ++def f garbage ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +244. Input. char of interest: 'ss + +def fo garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def fo garbage rmat_a_string(astring: str) -> str: | def rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:15] +CST Stack: + {Node ERROR (14, 4) - (14, 14)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def rmat_a_string(astring: str) -> str: ++def fo garbage rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +245. Input. char of interest: 's + +def for garbage m': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def for garbage mat_a_string(astring: str) -> str: | def mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:16] +CST Stack: + {Node ERROR (14, 4) - (14, 15)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def mat_a_string(astring: str) -> str: ++def for garbage mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +246. Input. char of interest: ' + +def form garbage a': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def form garbage at_a_string(astring: str) -> str: | def at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:17] +CST Stack: + {Node ERROR (14, 4) - (14, 16)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def at_a_string(astring: str) -> str: ++def form garbage at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +247. Input. char of interest: ' +def forma garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forma garbage t_a_string(astring: str) -> str: | def t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:18] +CST Stack: + {Node ERROR (14, 4) - (14, 17)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def t_a_string(astring: str) -> str: ++def forma garbage t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +248. Input. char of interest: 'def format garbage _': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format garbage _a_string(astring: str) -> str: | def _a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:19] +CST Stack: + {Node ERROR (14, 4) - (14, 18)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def _a_string(astring: str) -> str: ++def format garbage _a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +249. Input. char of interest: 'ef format_ garbage a': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_ garbage a_string(astring: str) -> str: | def a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:20] +CST Stack: + {Node ERROR (14, 4) - (14, 19)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def a_string(astring: str) -> str: ++def format_ garbage a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +250. Input. char of interest: 'f format_a garbage _': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a garbage _string(astring: str) -> str: | def format_a(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:14 - 15:29] +CST Stack: + {Node ERROR (14, 13) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a(astring: str) -> str: ++def format_a garbage _string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +251. Input. char of interest: ' format_a_ garbage s': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_ garbage string(astring: str) -> str: | def format_a_(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:15 - 15:29] +CST Stack: + {Node ERROR (14, 14) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_(astring: str) -> str: ++def format_a_ garbage string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +252. Input. char of interest: 'format_a_s garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_s garbage tring(astring: str) -> str: | def format_a_s(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:16 - 15:29] +CST Stack: + {Node ERROR (14, 15) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_s(astring: str) -> str: ++def format_a_s garbage tring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +253. Input. char of interest: 'ormat_a_st garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_st garbage ring(astring: str) -> str: | def format_a_st(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:17 - 15:29] +CST Stack: + {Node ERROR (14, 16) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_st(astring: str) -> str: ++def format_a_st garbage ring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +254. Input. char of interest: 'rmat_a_str garbage i': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_str garbage ing(astring: str) -> str: | def format_a_str(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:18 - 15:29] +CST Stack: + {Node ERROR (14, 17) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_str(astring: str) -> str: ++def format_a_str garbage ing(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +255. Input. char of interest: 'mat_a_stri garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_stri garbage ng(astring: str) -> str: | def format_a_stri(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:19 - 15:29] +CST Stack: + {Node ERROR (14, 18) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_stri(astring: str) -> str: ++def format_a_stri garbage ng(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +256. Input. char of interest: 'at_a_strin garbage g': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strin garbage g(astring: str) -> str: | def format_a_strin(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:20 - 15:29] +CST Stack: + {Node ERROR (14, 19) - (14, 28)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_strin(astring: str) -> str: ++def format_a_strin garbage g(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +257. Input. char of interest: 't_a_string garbage (': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string garbage (astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:28] +CST Stack: + {Node ERROR (14, 20) - (14, 27)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string garbage (astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +258. Input. char of interest: '_a_string( garbage a': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string( garbage astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:22 - 15:29] +CST Stack: + {Node ERROR (14, 21) - (14, 28)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string( garbage astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +259. Input. char of interest: 'a_string(a garbage s': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(a garbage string: str) -> str: | def format_a_string(string: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:30] +CST Stack: + {Node ERROR (14, 20) - (14, 29)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(string: str) -> str: ++def format_a_string(a garbage string: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +260. Input. char of interest: '_string(as garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(as garbage tring: str) -> str: | def format_a_string(tring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:31] +CST Stack: + {Node ERROR (14, 20) - (14, 30)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(tring: str) -> str: ++def format_a_string(as garbage tring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +261. Input. char of interest: 'string(ast garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(ast garbage ring: str) -> str: | def format_a_string(ring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:32] +CST Stack: + {Node ERROR (14, 20) - (14, 31)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(ring: str) -> str: ++def format_a_string(ast garbage ring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +262. Input. char of interest: 'tring(astr garbage i': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astr garbage ing: str) -> str: | def format_a_string(astr: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:26 - 15:37] +CST Stack: + {Node ERROR (14, 25) - (14, 36)} + {Node typed_parameter (14, 20) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astr: str) -> str: ++def format_a_string(astr garbage ing: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +263. Input. char of interest: 'ring(astri garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astri garbage ng: str) -> str: | def format_a_string(astri: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:27 - 15:37] +CST Stack: + {Node ERROR (14, 26) - (14, 36)} + {Node typed_parameter (14, 20) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astri: str) -> str: ++def format_a_string(astri garbage ng: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +264. Input. char of interest: 'ing(astrin garbage g': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrin garbage g: str) -> str: | def format_a_string(astrin: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:28 - 15:37] +CST Stack: + {Node ERROR (14, 27) - (14, 36)} + {Node typed_parameter (14, 20) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astrin: str) -> str: ++def format_a_string(astrin garbage g: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +265. Input. char of interest: 'ng(astring garbage :': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring garbage : str) -> str: | def format_a_string(garbage: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:28] +CST Stack: + {Node ERROR (14, 20) - (14, 27)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(garbage: str) -> str: ++def format_a_string(astring garbage : str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +267. Input. char of interest: '(astring: garbage s': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: garbage str) -> str: | def format_a_string(astring: garbage) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:39 - 15:42] +CST Stack: + {Node ERROR (14, 38) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: garbage) -> str: ++def format_a_string(astring: garbage str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +268. Input. char of interest: 'astring: s garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: s garbage tr) -> str: | def format_a_string(astring: tr) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:30 - 15:39] +CST Stack: + {Node ERROR (14, 29) - (14, 38)} + {Node typed_parameter (14, 20) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: tr) -> str: ++def format_a_string(astring: s garbage tr) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +269. Input. char of interest: 'string: st garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: st garbage r) -> str: | def format_a_string(astring: st) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:33 - 15:42] +CST Stack: + {Node ERROR (14, 32) - (14, 41)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: st) -> str: ++def format_a_string(astring: st garbage r) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +270. Input. char of interest: 'tring: str garbage )': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str garbage ) -> str: | def format_a_string(astring: garbage) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:30 - 15:33] +CST Stack: + {Node ERROR (14, 29) - (14, 32)} + {Node typed_parameter (14, 20) - (14, 40)} + {Node parameters (14, 19) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: garbage) -> str: ++def format_a_string(astring: str garbage ) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +272. Input. char of interest: 'ing: str) garbage -': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) garbage -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:36 - 15:43] +CST Stack: + {Node ERROR (14, 35) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) garbage -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +273. Input. char of interest: 'ng: str) - garbage >': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) - garbage > str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) - garbage > str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +275. Input. char of interest: ': str) -> garbage s': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> garbage str: | def format_a_string(astring: str) -> garbage: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:47 - 15:50] +CST Stack: + {Node ERROR (14, 46) - (14, 49)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> garbage: ++def format_a_string(astring: str) -> garbage str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +276. Input. char of interest: ' str) -> s garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> s garbage tr: | def format_a_string(astring: str) -> tr: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:38 - 15:47] +CST Stack: + {Node ERROR (14, 37) - (14, 46)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> tr: ++def format_a_string(astring: str) -> s garbage tr: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +277. Input. char of interest: 'str) -> st garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> st garbage r: | def format_a_string(astring: str) -> st: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:41 - 15:50] +CST Stack: + {Node ERROR (14, 40) - (14, 49)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> st: ++def format_a_string(astring: str) -> st garbage r: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +278. Input. char of interest: 'tr) -> str garbage :': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str garbage : | def format_a_string(astring: str) -> garbage: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:38 - 15:41] +CST Stack: + {Node ERROR (14, 37) - (14, 40)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> garbage: ++def format_a_string(astring: str) -> str garbage : + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +279. Input. char of interest: 'r) -> str: garbage +': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: garbage | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | garbage + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,9 +12,8 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: +- garbage +-return ','.join([x for x in astring]) ++def format_a_string(astring: str) -> str: garbage ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +284. Input. char of interest: ' str: + garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + garbage return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:6 - 16:13] +CST Stack: + {Node ERROR (15, 5) - (15, 12)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ garbage return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +285. Input. char of interest: 'str: + r garbage e': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + r garbage eturn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:20] +CST Stack: + {Node ERROR (15, 4) - (15, 19)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ r garbage eturn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +286. Input. char of interest: 'tr: + re garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + re garbage turn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:20] +CST Stack: + {Node ERROR (15, 4) - (15, 19)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ re garbage turn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +287. Input. char of interest: 'r: + ret garbage u': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + ret garbage urn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:20] +CST Stack: + {Node ERROR (15, 4) - (15, 19)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ ret garbage urn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +288. Input. char of interest: ': + retu garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retu garbage rn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:20] +CST Stack: + {Node ERROR (15, 4) - (15, 19)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retu garbage rn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +289. Input. char of interest: ' + retur garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retur garbage n ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:20] +CST Stack: + {Node ERROR (15, 4) - (15, 19)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retur garbage n ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +291. Input. char of interest: ' return garbage '': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return garbage ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:13 - 16:20] +CST Stack: + {Node ERROR (15, 12) - (15, 19)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return garbage ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +292. Input. char of interest: ' return ' garbage ,': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ' garbage ,'.join([x for x in astring]) | return ' garbage ,'.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +293. Input. char of interest: ' return ', garbage '': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ', garbage '.join([x for x in astring]) | return ', garbage '.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +294. Input. char of interest: 'return ',' garbage .': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ',' garbage .join([x for x in astring]) | return garbage.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:15] +CST Stack: + {Node ERROR (15, 11) - (15, 14)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return garbage.join([x for x in astring]) ++ return ',' garbage .join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +295. Input. char of interest: 'eturn ','. garbage j': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','. garbage join([x for x in astring]) | return ','.garbage([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:25 - 16:29] +CST Stack: + {Node ERROR (15, 24) - (15, 28)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.garbage([x for x in astring]) ++ return ','. garbage join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +296. Input. char of interest: 'turn ','.j garbage o': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.j garbage oin([x for x in astring]) | return ','.j([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:18 - 16:29] +CST Stack: + {Node ERROR (15, 17) - (15, 28)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.j([x for x in astring]) ++ return ','.j garbage oin([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +297. Input. char of interest: 'urn ','.jo garbage i': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jo garbage in([x for x in astring]) | return garbage in [x for x in astring] + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:18] +CST Stack: + {Node ERROR (15, 11) - (15, 17)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return garbage in [x for x in astring] ++ return ','.jo garbage in([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +298. Input. char of interest: 'rn ','.joi garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.joi garbage n([x for x in astring]) | return ','.joi([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:20 - 16:29] +CST Stack: + {Node ERROR (15, 19) - (15, 28)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.joi([x for x in astring]) ++ return ','.joi garbage n([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +299. Input. char of interest: 'n ','.join garbage (': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join garbage ([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:21 - 16:28] +CST Stack: + {Node ERROR (15, 20) - (15, 27)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join garbage ([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +300. Input. char of interest: ' ','.join( garbage [': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join( garbage [x for x in astring]) | return ','.join(garbage[x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:31 - 16:36] +CST Stack: + {Node ERROR (15, 30) - (15, 35)} + {Node subscript (15, 21) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join(garbage[x in astring]) ++ return ','.join( garbage [x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +301. Input. char of interest: '','.join([ garbage x': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([ garbage x for x in astring]) | return ','.join([garbage for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:31 - 16:32] +CST Stack: + {Node ERROR (15, 30) - (15, 31)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([garbage for x in astring]) ++ return ','.join([ garbage x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +303. Input. char of interest: ''.join([x garbage f': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x garbage for x in astring]) | return ','.join([garbage for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:23] +CST Stack: + {Node ERROR (15, 21) - (15, 22)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([garbage for x in astring]) ++ return ','.join([x garbage for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +304. Input. char of interest: '.join([x f garbage o': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x f garbage or x in astring]) | return ','.join([garbage or x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:25] +CST Stack: + {Node ERROR (15, 21) - (15, 24)} + {Node list (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([garbage or x in astring]) ++ return ','.join([x f garbage or x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +305. Input. char of interest: 'join([x fo garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fo garbage r x in astring]) | return ','.join([x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:36] +CST Stack: + {Node ERROR (15, 21) - (15, 35)} + {Node list (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x in astring]) ++ return ','.join([x fo garbage r x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +307. Input. char of interest: 'in([x for garbage x': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for garbage x in astring]) | return ','.join([x for garbage in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:37 - 16:38] +CST Stack: + {Node ERROR (15, 36) - (15, 37)} + {Node for_in_clause (15, 23) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for garbage in astring]) ++ return ','.join([x for garbage x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +309. Input. char of interest: '([x for x garbage i': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x garbage in astring]) | return ','.join([x for garbage in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:28 - 16:29] +CST Stack: + {Node ERROR (15, 27) - (15, 28)} + {Node for_in_clause (15, 23) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for garbage in astring]) ++ return ','.join([x for x garbage in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +310. Input. char of interest: '[x for x i garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x i garbage n astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:49] +CST Stack: + {Node ERROR (15, 23) - (15, 48)} + {Node list (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for x i garbage n astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +312. Input. char of interest: ' for x in garbage a': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in garbage astring]) | return ','.join([x for x in garbage]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:42 - 16:49] +CST Stack: + {Node ERROR (15, 41) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in garbage]) ++ return ','.join([x for x in garbage astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +313. Input. char of interest: 'for x in a garbage s': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in a garbage string]) | return ','.join([x for x in string]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:42] +CST Stack: + {Node ERROR (15, 32) - (15, 41)} + {Node for_in_clause (15, 23) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in string]) ++ return ','.join([x for x in a garbage string]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +314. Input. char of interest: 'or x in as garbage t': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in as garbage tring]) | return ','.join([x for x in tring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:43] +CST Stack: + {Node ERROR (15, 32) - (15, 42)} + {Node for_in_clause (15, 23) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in tring]) ++ return ','.join([x for x in as garbage tring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +315. Input. char of interest: 'r x in ast garbage r': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in ast garbage ring]) | return ','.join([x for x in ring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:44] +CST Stack: + {Node ERROR (15, 32) - (15, 43)} + {Node for_in_clause (15, 23) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in ring]) ++ return ','.join([x for x in ast garbage ring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +316. Input. char of interest: ' x in astr garbage i': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astr garbage ing]) | return ','.join([x for x in astr]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:38 - 16:49] +CST Stack: + {Node ERROR (15, 37) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astr]) ++ return ','.join([x for x in astr garbage ing]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +317. Input. char of interest: 'x in astri garbage n': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astri garbage ng]) | return ','.join([x for x in astri]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:39 - 16:49] +CST Stack: + {Node ERROR (15, 38) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astri]) ++ return ','.join([x for x in astri garbage ng]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +318. Input. char of interest: ' in astrin garbage g': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrin garbage g]) | return ','.join([x for x in astrin]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:40 - 16:49] +CST Stack: + {Node ERROR (15, 39) - (15, 48)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astrin]) ++ return ','.join([x for x in astrin garbage g]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +319. Input. char of interest: 'in astring garbage ]': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring garbage ]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:41 - 16:48] +CST Stack: + {Node ERROR (15, 40) - (15, 47)} + {Node list_comprehension (15, 20) - (15, 49)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring garbage ]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +320. Input. char of interest: 'n astring] garbage )': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring] garbage ) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:42 - 16:49] +CST Stack: + {Node ERROR (15, 41) - (15, 48)} + {Node argument_list (15, 19) - (15, 50)} + {Node call (15, 11) - (15, 50)} + {Node return_statement (15, 4) - (15, 50)} + {Node block (15, 4) - (15, 50)} + {Node function_definition (14, 0) - (15, 50)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring] garbage ) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +321. Input. char of interest: ' astring]) garbage +': + +Input: | ERRPY Recovered AST: +-------------------------------------------------------| ------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) garbage | return ','.join([x for x in astring]) + | garbage +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,8 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) +- garbage ++ return ','.join([x for x in astring]) garbage + + def main() -> int: + """DOC_STRING""" +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +322. Input. char of interest: 'astring]) + garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + garbage | garbage +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,8 +14,7 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +-garbage +- ++ garbage + def main() -> int: + """DOC_STRING""" + somethingelse() +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +323. Input. char of interest: 'string]) + + garbage d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | + garbage def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:2 - 18:9] +CST Stack: + {Node ERROR (17, 1) - (17, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++ garbage def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +324. Input. char of interest: 'tring]) + +d garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +d garbage ef main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++d garbage ef main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +325. Input. char of interest: 'ring]) + +de garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +de garbage f main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++de garbage f main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +327. Input. char of interest: 'ng]) + +def garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def garbage main() -> int: | def garbage() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:14 - 18:18] +CST Stack: + {Node ERROR (17, 13) - (17, 17)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def garbage() -> int: ++def garbage main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +328. Input. char of interest: 'g]) + +def m garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def m garbage ain() -> int: | def ain() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:5 - 18:14] +CST Stack: + {Node ERROR (17, 4) - (17, 13)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ain() -> int: ++def m garbage ain() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +329. Input. char of interest: ']) + +def ma garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def ma garbage in() -> int: | def ma() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:8 - 18:18] +CST Stack: + {Node ERROR (17, 7) - (17, 17)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ma() -> int: ++def ma garbage in() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +330. Input. char of interest: ') + +def mai garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def mai garbage n() -> int: | def mai() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:9 - 18:18] +CST Stack: + {Node ERROR (17, 8) - (17, 17)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def mai() -> int: ++def mai garbage n() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +331. Input. char of interest: ' + +def main garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main garbage () -> int: | def garbage() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:5 - 18:9] +CST Stack: + {Node ERROR (17, 4) - (17, 8)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def garbage() -> int: ++def main garbage () -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +332. Input. char of interest: ' +def main( garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main( garbage ) -> int: | def main(garbage) -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main(garbage) -> int: ++def main( garbage ) -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +334. Input. char of interest: 'ef main() garbage -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() garbage -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:13 - 18:20] +CST Stack: + {Node ERROR (17, 12) - (17, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() garbage -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +335. Input. char of interest: 'f main() - garbage >': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() - garbage > int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() - garbage > int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +337. Input. char of interest: 'main() -> garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> garbage int: | def main() -> garbage: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:24 - 18:27] +CST Stack: + {Node ERROR (17, 23) - (17, 26)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> garbage: ++def main() -> garbage int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +338. Input. char of interest: 'ain() -> i garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> i garbage nt: | def main() -> nt: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:15 - 18:24] +CST Stack: + {Node ERROR (17, 14) - (17, 23)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> nt: ++def main() -> i garbage nt: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +339. Input. char of interest: 'in() -> in garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> in garbage t: | def main() -> in: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:18 - 18:27] +CST Stack: + {Node ERROR (17, 17) - (17, 26)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [18:15 - 18:17] +CST Stack: + {Node identifier (17, 14) - (17, 16)} + {Node type (17, 14) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> in: ++def main() -> in garbage t: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +340. Input. char of interest: 'n() -> int garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int garbage : | def main() -> garbage: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:15 - 18:18] +CST Stack: + {Node ERROR (17, 14) - (17, 17)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> garbage: ++def main() -> int garbage : + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +341. Input. char of interest: '() -> int: garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: garbage | def main() -> int: + """DOC_STRING""" | garbage + somethingelse() | 'DOC_STRING' + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,12 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: +- garbage +-'DOC_STRING' +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++def main() -> int: garbage ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +346. Input. char of interest: ' int: + garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + garbage """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:6 - 19:13] +CST Stack: + {Node ERROR (18, 5) - (18, 12)} + {Node function_definition (17, 0) - (18, 29)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++ garbage """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +347. Input. char of interest: 'int: + " garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + " garbage ""DOC_STRING""" | """ garbage DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """ garbage DOC_STRING""" ++ " garbage ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +348. Input. char of interest: 'nt: + "" garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + "" garbage "DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:8 - 19:15] +CST Stack: + {Node ERROR (18, 7) - (18, 14)} + {Node concatenated_string (18, 4) - (18, 29)} + {Node expression_statement (18, 4) - (18, 29)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" ++ "" garbage "DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +349. Input. char of interest: 't: + """ garbage D': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """ garbage DOC_STRING""" | """ garbage DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +350. Input. char of interest: ': + """D garbage O': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """D garbage OC_STRING""" | """D garbage OC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +351. Input. char of interest: ' + """DO garbage C': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DO garbage C_STRING""" | """DO garbage C_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +352. Input. char of interest: ' """DOC garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC garbage _STRING""" | """DOC garbage _STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +353. Input. char of interest: ' """DOC_ garbage S': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ garbage STRING""" | """DOC_ garbage STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +354. Input. char of interest: ' """DOC_S garbage T': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_S garbage TRING""" | """DOC_S garbage TRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +355. Input. char of interest: ' """DOC_ST garbage R': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ST garbage RING""" | """DOC_ST garbage RING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +356. Input. char of interest: '"""DOC_STR garbage I': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STR garbage ING""" | """DOC_STR garbage ING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +357. Input. char of interest: '""DOC_STRI garbage N': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRI garbage NG""" | """DOC_STRI garbage NG""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +358. Input. char of interest: '"DOC_STRIN garbage G': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIN garbage G""" | """DOC_STRIN garbage G""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +359. Input. char of interest: 'DOC_STRING garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING garbage """ | """DOC_STRING garbage """ + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +360. Input. char of interest: 'OC_STRING" garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING" garbage "" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:30] +CST Stack: + {Node ERROR (18, 4) - (18, 29)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING" garbage "" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +361. Input. char of interest: 'C_STRING"" garbage "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" garbage " | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:30] +CST Stack: + {Node ERROR (18, 4) - (18, 29)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" garbage " + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +362. Input. char of interest: '_STRING""" garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" garbage | """DOC_STRING""" + somethingelse() | garbage + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,11 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" +- garbage ++ """DOC_STRING""" garbage + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +367. Input. char of interest: 'NG""" + garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + garbage somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:6 - 20:13] +CST Stack: + {Node ERROR (19, 5) - (19, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ garbage somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +368. Input. char of interest: 'G""" + s garbage o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + s garbage omethingelse() | omethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:14] +CST Stack: + {Node ERROR (19, 4) - (19, 13)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- omethingelse() ++ s garbage omethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +369. Input. char of interest: '""" + so garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + so garbage methingelse() | methingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:15] +CST Stack: + {Node ERROR (19, 4) - (19, 14)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- methingelse() ++ so garbage methingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +370. Input. char of interest: '"" + som garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + som garbage ethingelse() | ethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:16] +CST Stack: + {Node ERROR (19, 4) - (19, 15)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ethingelse() ++ som garbage ethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +371. Input. char of interest: '" + some garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + some garbage thingelse() | thingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:17] +CST Stack: + {Node ERROR (19, 4) - (19, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- thingelse() ++ some garbage thingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +372. Input. char of interest: ' + somet garbage h': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somet garbage hingelse() | hingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:18] +CST Stack: + {Node ERROR (19, 4) - (19, 17)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- hingelse() ++ somet garbage hingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +373. Input. char of interest: ' someth garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + someth garbage ingelse() | ingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:19] +CST Stack: + {Node ERROR (19, 4) - (19, 18)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ingelse() ++ someth garbage ingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +374. Input. char of interest: ' somethi garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethi garbage ngelse() | somethi() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:13 - 20:27] +CST Stack: + {Node ERROR (19, 12) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethi() ++ somethi garbage ngelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +375. Input. char of interest: ' somethin garbage g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethin garbage gelse() | somethin() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:14 - 20:27] +CST Stack: + {Node ERROR (19, 13) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethin() ++ somethin garbage gelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +376. Input. char of interest: ' something garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + something garbage else() | something() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:15 - 20:27] +CST Stack: + {Node ERROR (19, 14) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- something() ++ something garbage else() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +377. Input. char of interest: 'somethinge garbage l': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinge garbage lse() | somethinge() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:16 - 20:27] +CST Stack: + {Node ERROR (19, 15) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethinge() ++ somethinge garbage lse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +378. Input. char of interest: 'omethingel garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingel garbage se() | somethingel() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:17 - 20:27] +CST Stack: + {Node ERROR (19, 16) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingel() ++ somethingel garbage se() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +379. Input. char of interest: 'methingels garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingels garbage e() | somethingels() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:18 - 20:27] +CST Stack: + {Node ERROR (19, 17) - (19, 26)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingels() ++ somethingels garbage e() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +380. Input. char of interest: 'ethingelse garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse garbage () | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:19 - 20:26] +CST Stack: + {Node ERROR (19, 18) - (19, 25)} + {Node call (19, 4) - (19, 28)} + {Node expression_statement (19, 4) - (19, 28)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse garbage () + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +381. Input. char of interest: 'thingelse( garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse( garbage ) | somethingelse(garbage) + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse(garbage) ++ somethingelse( garbage ) + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +382. Input. char of interest: 'hingelse() garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() garbage | somethingelse() + fib(12) | garbage + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,10 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() +- garbage ++ somethingelse() garbage + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +387. Input. char of interest: 'lse() + garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + garbage fib(12) | garbage(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:14 - 21:17] +CST Stack: + {Node ERROR (20, 13) - (20, 16)} + {Node call (20, 5) - (20, 20)} + {Node expression_statement (20, 5) - (20, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- garbage(12) ++ garbage fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +388. Input. char of interest: 'se() + f garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + f garbage ib(12) | ib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:14] +CST Stack: + {Node ERROR (20, 4) - (20, 13)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- ib(12) ++ f garbage ib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +389. Input. char of interest: 'e() + fi garbage b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fi garbage b(12) | fi(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:8 - 21:17] +CST Stack: + {Node ERROR (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 20)} + {Node expression_statement (20, 4) - (20, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fi(12) ++ fi garbage b(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +390. Input. char of interest: '() + fib garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib garbage (12) | garbage(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:8] +CST Stack: + {Node ERROR (20, 4) - (20, 7)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- garbage(12) ++ fib garbage (12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +391. Input. char of interest: ') + fib( garbage 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib( garbage 12) | fib(garbage) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:18 - 21:20] +CST Stack: + {Node ERROR (20, 17) - (20, 19)} + {Node argument_list (20, 7) - (20, 20)} + {Node call (20, 4) - (20, 20)} + {Node expression_statement (20, 4) - (20, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(garbage) ++ fib( garbage 12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +392. Input. char of interest: ' + fib(1 garbage 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(1 garbage 2) | fib(1) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:11 - 21:20] +CST Stack: + {Node ERROR (20, 10) - (20, 19)} + {Node argument_list (20, 7) - (20, 20)} + {Node call (20, 4) - (20, 20)} + {Node expression_statement (20, 4) - (20, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(1) ++ fib(1 garbage 2) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +393. Input. char of interest: ' fib(12 garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12 garbage ) | fib(garbage) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:9 - 21:11] +CST Stack: + {Node ERROR (20, 8) - (20, 10)} + {Node argument_list (20, 7) - (20, 20)} + {Node call (20, 4) - (20, 20)} + {Node expression_statement (20, 4) - (20, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(garbage) ++ fib(12 garbage ) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +394. Input. char of interest: ' fib(12) garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) garbage | fib(12) + astring = format_a_string() | garbage + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,9 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) +- garbage ++ fib(12) garbage + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +399. Input. char of interest: 'b(12) + garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + garbage astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:6 - 22:13] +CST Stack: + {Node ERROR (21, 5) - (21, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ garbage astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +400. Input. char of interest: '(12) + a garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + a garbage string = format_a_string() | string = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:14] +CST Stack: + {Node ERROR (21, 4) - (21, 13)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- string = format_a_string() ++ a garbage string = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +401. Input. char of interest: '12) + as garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + as garbage tring = format_a_string() | tring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:15] +CST Stack: + {Node ERROR (21, 4) - (21, 14)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- tring = format_a_string() ++ as garbage tring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +402. Input. char of interest: '2) + ast garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + ast garbage ring = format_a_string() | ring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:16] +CST Stack: + {Node ERROR (21, 4) - (21, 15)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ring = format_a_string() ++ ast garbage ring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +403. Input. char of interest: ') + astr garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astr garbage ing = format_a_string() | ing = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:17] +CST Stack: + {Node ERROR (21, 4) - (21, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ing = format_a_string() ++ astr garbage ing = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +404. Input. char of interest: ' + astri garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astri garbage ng = format_a_string() | ng = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:18] +CST Stack: + {Node ERROR (21, 4) - (21, 17)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ng = format_a_string() ++ astri garbage ng = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +405. Input. char of interest: ' astrin garbage g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrin garbage g = format_a_string() | g = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:19] +CST Stack: + {Node ERROR (21, 4) - (21, 18)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- g = format_a_string() ++ astrin garbage g = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +407. Input. char of interest: ' astring garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring garbage = format_a_string() | garbage = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:12] +CST Stack: + {Node ERROR (21, 4) - (21, 11)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- garbage = format_a_string() ++ astring garbage = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +409. Input. char of interest: 'astring = garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = garbage format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:16 - 22:23] +CST Stack: + {Node ERROR (21, 15) - (21, 22)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = garbage format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +410. Input. char of interest: 'string = f garbage o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = f garbage ormat_a_string() | astring = ormat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:24] +CST Stack: + {Node ERROR (21, 14) - (21, 23)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = ormat_a_string() ++ astring = f garbage ormat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +411. Input. char of interest: 'tring = fo garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = fo garbage rmat_a_string() | astring = rmat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:25] +CST Stack: + {Node ERROR (21, 14) - (21, 24)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = rmat_a_string() ++ astring = fo garbage rmat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +412. Input. char of interest: 'ring = for garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = for garbage mat_a_string() | astring = mat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:26] +CST Stack: + {Node ERROR (21, 14) - (21, 25)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = mat_a_string() ++ astring = for garbage mat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +413. Input. char of interest: 'ing = form garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = form garbage at_a_string() | astring = at_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:27] +CST Stack: + {Node ERROR (21, 14) - (21, 26)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = at_a_string() ++ astring = form garbage at_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +414. Input. char of interest: 'ng = forma garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forma garbage t_a_string() | astring = t_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:28] +CST Stack: + {Node ERROR (21, 14) - (21, 27)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = t_a_string() ++ astring = forma garbage t_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +415. Input. char of interest: 'g = format garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format garbage _a_string() | astring = _a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:29] +CST Stack: + {Node ERROR (21, 14) - (21, 28)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = _a_string() ++ astring = format garbage _a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +416. Input. char of interest: ' = format_ garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_ garbage a_string() | astring = a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:30] +CST Stack: + {Node ERROR (21, 14) - (21, 29)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = a_string() ++ astring = format_ garbage a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +417. Input. char of interest: '= format_a garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a garbage _string() | astring = format_a() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:24 - 22:39] +CST Stack: + {Node ERROR (21, 23) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a() ++ astring = format_a garbage _string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +418. Input. char of interest: ' format_a_ garbage s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_ garbage string() | astring = format_a_() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:25 - 22:39] +CST Stack: + {Node ERROR (21, 24) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_() ++ astring = format_a_ garbage string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +419. Input. char of interest: 'format_a_s garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_s garbage tring() | astring = format_a_s() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:26 - 22:39] +CST Stack: + {Node ERROR (21, 25) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_s() ++ astring = format_a_s garbage tring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +420. Input. char of interest: 'ormat_a_st garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_st garbage ring() | astring = format_a_st() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:27 - 22:39] +CST Stack: + {Node ERROR (21, 26) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_st() ++ astring = format_a_st garbage ring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +421. Input. char of interest: 'rmat_a_str garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_str garbage ing() | astring = format_a_str() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:28 - 22:39] +CST Stack: + {Node ERROR (21, 27) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_str() ++ astring = format_a_str garbage ing() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +422. Input. char of interest: 'mat_a_stri garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_stri garbage ng() | astring = format_a_stri() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:29 - 22:39] +CST Stack: + {Node ERROR (21, 28) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_stri() ++ astring = format_a_stri garbage ng() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +423. Input. char of interest: 'at_a_strin garbage g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strin garbage g() | astring = format_a_strin() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:30 - 22:39] +CST Stack: + {Node ERROR (21, 29) - (21, 38)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_strin() ++ astring = format_a_strin garbage g() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +424. Input. char of interest: 't_a_string garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string garbage () | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:31 - 22:38] +CST Stack: + {Node ERROR (21, 30) - (21, 37)} + {Node call (21, 14) - (21, 40)} + {Node assignment (21, 4) - (21, 40)} + {Node expression_statement (21, 4) - (21, 40)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string garbage () + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +425. Input. char of interest: '_a_string( garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string( garbage ) | astring = format_a_string(garbage) + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string(garbage) ++ astring = format_a_string( garbage ) + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +426. Input. char of interest: 'a_string() garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() garbage | astring = format_a_string() + return 0 | garbage +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,8 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() +- garbage ++ astring = format_a_string() garbage + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +431. Input. char of interest: 'ing() + garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + garbage return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:6 - 23:13] +CST Stack: + {Node ERROR (22, 5) - (22, 12)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ garbage return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +432. Input. char of interest: 'ng() + r garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + r garbage eturn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:20] +CST Stack: + {Node ERROR (22, 4) - (22, 19)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ r garbage eturn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +433. Input. char of interest: 'g() + re garbage t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + re garbage turn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:20] +CST Stack: + {Node ERROR (22, 4) - (22, 19)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ re garbage turn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +434. Input. char of interest: '() + ret garbage u': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + ret garbage urn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:20] +CST Stack: + {Node ERROR (22, 4) - (22, 19)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ ret garbage urn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +435. Input. char of interest: ') + retu garbage r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retu garbage rn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:20] +CST Stack: + {Node ERROR (22, 4) - (22, 19)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retu garbage rn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +436. Input. char of interest: ' + retur garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retur garbage n 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:20] +CST Stack: + {Node ERROR (22, 4) - (22, 19)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retur garbage n 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +438. Input. char of interest: ' return garbage 0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return garbage 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:13 - 23:20] +CST Stack: + {Node ERROR (22, 12) - (22, 19)} + {Node return_statement (22, 4) - (22, 21)} + {Node block (18, 4) - (22, 21)} + {Node function_definition (17, 0) - (22, 21)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ return garbage 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +439. Input. char of interest: ' return 0 garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 garbage | return garbage +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:12 - 23:13] +CST Stack: + {Node ERROR (22, 11) - (22, 12)} + {Node return_statement (22, 4) - (22, 20)} + {Node block (18, 4) - (22, 20)} + {Node function_definition (17, 0) - (22, 20)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return garbage ++ return 0 garbage + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +440. Input. char of interest: ' return 0 + garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 + garbage if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:2 - 25:11] +CST Stack: + {Node ERROR (23, 1) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++ garbage if __name__ == '__main__': ++ main() + + +=============================================================================== +441. Input. char of interest: 'return 0 +i garbage f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +i garbage f __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++i garbage f __name__ == '__main__': ++ main() + + +=============================================================================== +443. Input. char of interest: 'turn 0 +if garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if garbage __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:5 - 24:12] +CST Stack: + {Node ERROR (23, 4) - (23, 11)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if garbage __name__ == '__main__': ++ main() + + +=============================================================================== +444. Input. char of interest: 'urn 0 +if _ garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _ garbage _name__ == '__main__': | if _name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:13] +CST Stack: + {Node ERROR (23, 3) - (23, 12)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if _name__ == '__main__': +- main()+if _ garbage _name__ == '__main__': ++ main() + + +=============================================================================== +445. Input. char of interest: 'rn 0 +if __ garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __ garbage name__ == '__main__': | if name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:14] +CST Stack: + {Node ERROR (23, 3) - (23, 13)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if name__ == '__main__': +- main()+if __ garbage name__ == '__main__': ++ main() + + +=============================================================================== +446. Input. char of interest: 'n 0 +if __n garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __n garbage ame__ == '__main__': | if ame__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:15] +CST Stack: + {Node ERROR (23, 3) - (23, 14)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if ame__ == '__main__': +- main()+if __n garbage ame__ == '__main__': ++ main() + + +=============================================================================== +447. Input. char of interest: ' 0 +if __na garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __na garbage me__ == '__main__': | if me__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:16] +CST Stack: + {Node ERROR (23, 3) - (23, 15)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if me__ == '__main__': +- main()+if __na garbage me__ == '__main__': ++ main() + + +=============================================================================== +448. Input. char of interest: '0 +if __nam garbage e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nam garbage e__ == '__main__': | if __nam == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:10 - 24:21] +CST Stack: + {Node ERROR (23, 9) - (23, 20)} + {Node comparison_operator (23, 3) - (23, 34)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __nam == '__main__': +- main()+if __nam garbage e__ == '__main__': ++ main() + + +=============================================================================== +449. Input. char of interest: ' +if __name garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name garbage __ == '__main__': | if __name == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:11 - 24:21] +CST Stack: + {Node ERROR (23, 10) - (23, 20)} + {Node comparison_operator (23, 3) - (23, 34)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name == '__main__': +- main()+if __name garbage __ == '__main__': ++ main() + + +=============================================================================== +450. Input. char of interest: 'if __name_ garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ garbage _ == '__main__': | if __name_ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:12 - 24:21] +CST Stack: + {Node ERROR (23, 11) - (23, 20)} + {Node comparison_operator (23, 3) - (23, 34)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name_ == '__main__': +- main()+if __name_ garbage _ == '__main__': ++ main() + + +=============================================================================== +452. Input. char of interest: ' __name__ garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ garbage == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:14 - 24:21] +CST Stack: + {Node ERROR (23, 13) - (23, 20)} + {Node comparison_operator (23, 3) - (23, 34)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ garbage == '__main__': ++ main() + + +=============================================================================== +453. Input. char of interest: '__name__ = garbage =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = garbage = '__main__': | if '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:24] +CST Stack: + {Node ERROR (23, 3) - (23, 23)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if '__main__': +- main()+if __name__ = garbage = '__main__': ++ main() + + +=============================================================================== +455. Input. char of interest: 'name__ == garbage '': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == garbage '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:17 - 24:24] +CST Stack: + {Node ERROR (23, 16) - (23, 23)} + {Node comparison_operator (23, 3) - (23, 34)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == garbage '__main__': ++ main() + + +=============================================================================== +456. Input. char of interest: 'ame__ == ' garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == ' garbage __main__': | if __name__ == ' garbage __main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == ' garbage __main__': +- main()+ main() + + +=============================================================================== +457. Input. char of interest: 'me__ == '_ garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_ garbage _main__': | if __name__ == '_ garbage _main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '_ garbage _main__': +- main()+ main() + + +=============================================================================== +458. Input. char of interest: 'e__ == '__ garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ garbage main__': | if __name__ == '__ garbage main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ garbage main__': +- main()+ main() + + +=============================================================================== +459. Input. char of interest: '__ == '__m garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__m garbage ain__': | if __name__ == '__m garbage ain__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__m garbage ain__': +- main()+ main() + + +=============================================================================== +460. Input. char of interest: '_ == '__ma garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ma garbage in__': | if __name__ == '__ma garbage in__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ma garbage in__': +- main()+ main() + + +=============================================================================== +461. Input. char of interest: ' == '__mai garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__mai garbage n__': | if __name__ == '__mai garbage n__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__mai garbage n__': +- main()+ main() + + +=============================================================================== +462. Input. char of interest: '== '__main garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main garbage __': | if __name__ == '__main garbage __': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main garbage __': +- main()+ main() + + +=============================================================================== +463. Input. char of interest: '= '__main_ garbage _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_ garbage _': | if __name__ == '__main_ garbage _': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main_ garbage _': +- main()+ main() + + +=============================================================================== +464. Input. char of interest: ' '__main__ garbage '': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__ garbage ': | if __name__ == '__main__ garbage ': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__ garbage ': +- main()+ main() + + +=============================================================================== +465. Input. char of interest: ''__main__' garbage :': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__' garbage : | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:27 - 24:34] +CST Stack: + {Node ERROR (23, 26) - (23, 33)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__' garbage : ++ main() + + +=============================================================================== +466. Input. char of interest: '__main__': garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': garbage | if __name__ == '__main__': + main() | garbage + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,6 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- garbage +-main()+if __name__ == '__main__': garbage ++ main() + + +=============================================================================== +471. Input. char of interest: 'n__': + garbage m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + garbage main() | garbage() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:14 - 25:18] +CST Stack: + {Node ERROR (24, 13) - (24, 17)} + {Node call (24, 5) - (24, 19)} + {Node expression_statement (24, 5) - (24, 19)} + {Node block (24, 5) - (24, 19)} + {Node if_statement (23, 0) - (24, 19)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- garbage()+ garbage main() + + +=============================================================================== +472. Input. char of interest: '__': + m garbage a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + m garbage ain() | ain() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:14] +CST Stack: + {Node ERROR (24, 4) - (24, 13)} + {Node if_statement (23, 0) - (24, 19)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ain()+ m garbage ain() + + +=============================================================================== +473. Input. char of interest: '_': + ma garbage i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + ma garbage in() | garbage in () + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:7] +CST Stack: + {Node ERROR (24, 4) - (24, 6)} + {Node if_statement (23, 0) - (24, 19)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- garbage in ()+ ma garbage in() + + +=============================================================================== +474. Input. char of interest: '': + mai garbage n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + mai garbage n() | mai() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:9 - 25:18] +CST Stack: + {Node ERROR (24, 8) - (24, 17)} + {Node call (24, 4) - (24, 19)} + {Node expression_statement (24, 4) - (24, 19)} + {Node block (24, 4) - (24, 19)} + {Node if_statement (23, 0) - (24, 19)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- mai()+ mai garbage n() + + +=============================================================================== +475. Input. char of interest: ': + main garbage (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main garbage () | garbage() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:9] +CST Stack: + {Node ERROR (24, 4) - (24, 8)} + {Node if_statement (23, 0) - (24, 19)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- garbage()+ main garbage () + + +=============================================================================== +476. Input. char of interest: ' + main( garbage )': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main( garbage ) | main(garbage) + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main(garbage)+ main( garbage ) + + +=============================================================================== +477. Input. char of interest: ' main() garbage +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() garbage | garbage + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:11] +CST Stack: + {Node ERROR (24, 4) - (24, 10)} + {Node if_statement (23, 0) - (24, 18)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- garbage+ main() garbage + + +=============================================================================== diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_keyword._expected_results/Simple-broad-case_expected_results b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_keyword._expected_results/Simple-broad-case_expected_results new file mode 100644 index 00000000000..317ec3aceec --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_keyword._expected_results/Simple-broad-case_expected_results @@ -0,0 +1,21193 @@ +@generated + +Errpy makes empty AST (weird) with input prior to and including: +17.->def fib(a: int) -><- + +86.-> + inset = a in {0, 1} + i<- + +87.-> inset = a in {0, 1} + if<- + +128.->a == 1: + return 1 + e<- + +129.-> == 1: + return 1 + el<- + +130.->== 1: + return 1 + eli<- + +131.->= 1: + return 1 + elif<- + +161.-> inset: + return 1 + e<- + +273.->rmat_a_string(astring: str) -><- + +335.-> x in astring]) + +def main() -><- + +440.->rmat_a_string() + return 0 +i<- + +441.->mat_a_string() + return 0 +if<- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Input. char of interest: ' def def f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- + def def fib(a: int) -> int: | def def(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:9 - 1:12] +CST Stack: + {Node ERROR (0, 8) - (0, 11)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:5 - 1:8] +CST Stack: + {Node identifier (0, 4) - (0, 7)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def def(a: int) -> int: ++ def def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +1. Input. char of interest: 'd def ef fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +d def ef fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:1 - 1:2] +CST Stack: + {Node ERROR (0, 0) - (0, 1)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [1:7 - 1:9] +CST Stack: + {Node ERROR (0, 6) - (0, 8)} + {Node function_definition (0, 2) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++d def ef fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +2. Input. char of interest: 'de def f fib': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +de def f fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:1 - 1:3] +CST Stack: + {Node ERROR (0, 0) - (0, 2)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [1:8 - 1:9] +CST Stack: + {Node ERROR (0, 7) - (0, 8)} + {Node function_definition (0, 3) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++de def f fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +4. Input. char of interest: 'def def fib(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def def fib(a: int) -> int: | def def(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:10 - 1:13] +CST Stack: + {Node ERROR (0, 9) - (0, 12)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:6 - 1:9] +CST Stack: + {Node identifier (0, 5) - (0, 8)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def def(a: int) -> int: ++def def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +5. Input. char of interest: 'def f def ib(a:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def f def ib(a: int) -> int: | def ib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:5 - 1:10] +CST Stack: + {Node ERROR (0, 4) - (0, 9)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def ib(a: int) -> int: ++def f def ib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +6. Input. char of interest: 'def fi def b(a: ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fi def b(a: int) -> int: | def fi(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:8 - 1:13] +CST Stack: + {Node ERROR (0, 7) - (0, 12)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fi(a: int) -> int: ++def fi def b(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +7. Input. char of interest: 'def fib def (a: i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib def (a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:9 - 1:12] +CST Stack: + {Node ERROR (0, 8) - (0, 11)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib def (a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +8. Input. char of interest: 'def fib( def a: in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib( def a: int) -> int: | def fib(def: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:14 - 1:15] +CST Stack: + {Node ERROR (0, 13) - (0, 14)} + {Node typed_parameter (0, 9) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:10 - 1:13] +CST Stack: + {Node identifier (0, 9) - (0, 12)} + {Node typed_parameter (0, 9) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(def: int) -> int: ++def fib( def a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +9. Input. char of interest: 'def fib(a def : int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a def : int) -> int: | def fib(def: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:9 - 1:10] +CST Stack: + {Node ERROR (0, 8) - (0, 9)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:11 - 1:14] +CST Stack: + {Node identifier (0, 10) - (0, 13)} + {Node typed_parameter (0, 10) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(def: int) -> int: ++def fib(a def : int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +11. Input. char of interest: 'ef fib(a: def int) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: def int) -> int: | def fib(a: def) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:17 - 1:20] +CST Stack: + {Node ERROR (0, 16) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:13 - 1:16] +CST Stack: + {Node identifier (0, 12) - (0, 15)} + {Node type (0, 12) - (0, 15)} + {Node typed_parameter (0, 8) - (0, 15)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: def) -> int: ++def fib(a: def int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +12. Input. char of interest: 'f fib(a: i def nt) -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: i def nt) -> int: | def fib(a: nt) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:12 - 1:17] +CST Stack: + {Node ERROR (0, 11) - (0, 16)} + {Node typed_parameter (0, 8) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: nt) -> int: ++def fib(a: i def nt) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +13. Input. char of interest: ' fib(a: in def t) ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: in def t) -> int: | def fib(a: in) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:15 - 1:20] +CST Stack: + {Node ERROR (0, 14) - (0, 19)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:12 - 1:14] +CST Stack: + {Node identifier (0, 11) - (0, 13)} + {Node type (0, 11) - (0, 13)} + {Node typed_parameter (0, 8) - (0, 13)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: in) -> int: ++def fib(a: in def t) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +14. Input. char of interest: 'fib(a: int def ) -> ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int def ) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:16 - 1:19] +CST Stack: + {Node ERROR (0, 15) - (0, 18)} + {Node parameters (0, 7) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int def ) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +16. Input. char of interest: 'b(a: int) def -> in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) def -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:18 - 1:21] +CST Stack: + {Node ERROR (0, 17) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) def -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +17. Input. char of interest: '(a: int) - def > int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) - def > int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) - def > int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +19. Input. char of interest: ': int) -> def int: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> def int: | def fib(a: int) -> def: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:25 - 1:28] +CST Stack: + {Node ERROR (0, 24) - (0, 27)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [1:21 - 1:24] +CST Stack: + {Node identifier (0, 20) - (0, 23)} + {Node type (0, 20) - (0, 23)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> def: ++def fib(a: int) -> def int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +20. Input. char of interest: ' int) -> i def nt: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> i def nt: | def fib(a: int) -> nt: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:20 - 1:25] +CST Stack: + {Node ERROR (0, 19) - (0, 24)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> nt: ++def fib(a: int) -> i def nt: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +21. Input. char of interest: 'int) -> in def t: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> in def t: | def fib(a: int) -> in: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:23 - 1:28] +CST Stack: + {Node ERROR (0, 22) - (0, 27)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:20 - 1:22] +CST Stack: + {Node identifier (0, 19) - (0, 21)} + {Node type (0, 19) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> in: ++def fib(a: int) -> in def t: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +22. Input. char of interest: 'nt) -> int def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int def : | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:24 - 1:27] +CST Stack: + {Node ERROR (0, 23) - (0, 26)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int def : + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +23. Input. char of interest: 't) -> int: def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: def | def fib(a: int) -> int: + tmp = (a, a) | def + ba, bb = tmp | tmp = (a, a) + inset = a in {0, 1} | ba, bb = tmp + if a <= 2 or a == 1: | inset = a in {0, 1} + return 1 | if a <= 2 or a == 1: + elif inset: | return 1 + return 1 | elif inset: + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [1:25 - 1:28] +CST Stack: + {Node identifier (0, 24) - (0, 27)} + {Node expression_statement (0, 24) - (0, 27)} + {Node block (0, 24) - (0, 27)} + {Node function_definition (0, 0) - (0, 27)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,14 +1,13 @@ +-def fib(a: int) -> int: +- def +-tmp = (a, a) +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++def fib(a: int) -> int: def ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +28. Input. char of interest: ' int: + def tmp =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + def tmp = (a, a) | ba, bb = tmp + ba, bb = tmp | inset = a in {0, 1} + inset = a in {0, 1} | if a <= 2 or a == 1: + if a <= 2 or a == 1: | return 1 + return 1 | elif inset: + elif inset: | return 1 + return 1 | else: + else: | return fib(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:6 - 2:22] +CST Stack: + {Node ERROR (1, 5) - (1, 21)} + {Node function_definition (0, 0) - (1, 21)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,12 +1,13 @@ + def fib(a: int) -> int: +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++ def tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +29. Input. char of interest: 'int: + t def mp = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + t def mp = (a, a) | mp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:10] +CST Stack: + {Node ERROR (1, 4) - (1, 9)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- mp = (a, a) ++ t def mp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +30. Input. char of interest: 'nt: + tm def p = (': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tm def p = (a, a) | p = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:11] +CST Stack: + {Node ERROR (1, 4) - (1, 10)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- p = (a, a) ++ tm def p = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +32. Input. char of interest: ': + tmp def = (a,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp def = (a, a) | tmp(a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:10 - 2:15] +CST Stack: + {Node ERROR (1, 9) - (1, 14)} + {Node call (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp(a, a) ++ tmp def = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +34. Input. char of interest: ' tmp = def (a, a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = def (a, a) | tmp = def(a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [2:12 - 2:15] +CST Stack: + {Node identifier (1, 11) - (1, 14)} + {Node call (1, 11) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = def(a, a) ++ tmp = def (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +35. Input. char of interest: ' tmp = ( def a, a)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = ( def a, a) | tmp = (def, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [2:17 - 2:18] +CST Stack: + {Node ERROR (1, 16) - (1, 17)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:13 - 2:16] +CST Stack: + {Node identifier (1, 12) - (1, 15)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (def, a) ++ tmp = ( def a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +36. Input. char of interest: ' tmp = (a def , a) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a def , a) | tmp = (def, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [2:12 - 2:13] +CST Stack: + {Node ERROR (1, 11) - (1, 12)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:14 - 2:17] +CST Stack: + {Node identifier (1, 13) - (1, 16)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (def, a) ++ tmp = (a def , a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +38. Input. char of interest: 'tmp = (a, def a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, def a) | tmp = (a, def) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [2:20 - 2:21] +CST Stack: + {Node ERROR (1, 19) - (1, 20)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:16 - 2:19] +CST Stack: + {Node identifier (1, 15) - (1, 18)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, def) ++ tmp = (a, def a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +39. Input. char of interest: 'mp = (a, a def ) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a def ) | tmp = (a, def) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [2:15 - 2:16] +CST Stack: + {Node ERROR (1, 14) - (1, 15)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:17 - 2:20] +CST Stack: + {Node identifier (1, 16) - (1, 19)} + {Node tuple (1, 10) - (1, 21)} + {Node assignment (1, 4) - (1, 21)} + {Node expression_statement (1, 4) - (1, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, def) ++ tmp = (a, a def ) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +40. Input. char of interest: 'p = (a, a) def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) def | tmp = def + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [2:11 - 2:17] +CST Stack: + {Node ERROR (1, 10) - (1, 16)} + {Node assignment (1, 4) - (1, 20)} + {Node expression_statement (1, 4) - (1, 20)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:18 - 2:21] +CST Stack: + {Node identifier (1, 17) - (1, 20)} + {Node assignment (1, 4) - (1, 20)} + {Node expression_statement (1, 4) - (1, 20)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = def ++ tmp = (a, a) def + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +45. Input. char of interest: 'a, a) + def ba, b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + def ba, bb = tmp | {0, 1} + inset = a in {0, 1} | if a <= 2 or a == 1: + if a <= 2 or a == 1: | return 1 + return 1 | elif inset: + elif inset: | return 1 + return 1 | else: + else: | return fib(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:6 - 4:17] +CST Stack: + {Node ERROR (2, 5) - (3, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) +- {0, 1} ++ def ba, bb = tmp ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +46. Input. char of interest: ', a) + b def a, bb': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + b def a, bb = tmp | a, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:10] +CST Stack: + {Node ERROR (2, 4) - (2, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- a, bb = tmp ++ b def a, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +47. Input. char of interest: ' a) + ba def , bb ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba def , bb = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [3:8 - 3:11] +CST Stack: + {Node ERROR (2, 7) - (2, 10)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [3:14 - 3:18] +CST Stack: + {Node ERROR (2, 13) - (2, 17)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba def , bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +49. Input. char of interest: ') + ba, def bb = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, def bb = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:10 - 3:18] +CST Stack: + {Node ERROR (2, 9) - (2, 17)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, def bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +50. Input. char of interest: ' + ba, b def b = t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b def b = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:18] +CST Stack: + {Node ERROR (2, 8) - (2, 17)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, b def b = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +52. Input. char of interest: ' ba, bb def = tmp': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb def = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:18] +CST Stack: + {Node ERROR (2, 8) - (2, 17)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, bb def = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +54. Input. char of interest: ' ba, bb = def tmp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = def tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:15 - 3:18] +CST Stack: + {Node ERROR (2, 14) - (2, 17)} + {Node assignment (2, 4) - (2, 21)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = def tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +55. Input. char of interest: 'ba, bb = t def mp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = t def mp | ba, bb = mp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:19] +CST Stack: + {Node ERROR (2, 13) - (2, 18)} + {Node assignment (2, 4) - (2, 21)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = mp ++ ba, bb = t def mp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +56. Input. char of interest: 'a, bb = tm def p + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tm def p | ba, bb = p + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:20] +CST Stack: + {Node ERROR (2, 13) - (2, 19)} + {Node assignment (2, 4) - (2, 21)} + {Node expression_statement (2, 4) - (2, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = p ++ ba, bb = tm def p + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +57. Input. char of interest: ', bb = tmp def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp def | ba, bb = def + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [3:14 - 3:17] +CST Stack: + {Node ERROR (2, 13) - (2, 16)} + {Node assignment (2, 4) - (2, 20)} + {Node expression_statement (2, 4) - (2, 20)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [3:18 - 3:21] +CST Stack: + {Node identifier (2, 17) - (2, 20)} + {Node assignment (2, 4) - (2, 20)} + {Node expression_statement (2, 4) - (2, 20)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 3) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = def ++ ba, bb = tmp def + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +62. Input. char of interest: '= tmp + def inset': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + def inset = a in {0, 1} | {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:6 - 4:22] +CST Stack: + {Node ERROR (3, 5) - (3, 21)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- {0, 1} ++ def inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +63. Input. char of interest: ' tmp + i def nset ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + i def nset = a in {0, 1} | nset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:10] +CST Stack: + {Node ERROR (3, 4) - (3, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- nset = a in {0, 1} ++ i def nset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +64. Input. char of interest: 'tmp + in def set =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + in def set = a in {0, 1} | set = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:11] +CST Stack: + {Node ERROR (3, 4) - (3, 10)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- set = a in {0, 1} ++ in def set = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +65. Input. char of interest: 'mp + ins def et = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + ins def et = a in {0, 1} | et = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:12] +CST Stack: + {Node ERROR (3, 4) - (3, 11)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- et = a in {0, 1} ++ ins def et = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +66. Input. char of interest: 'p + inse def t = a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inse def t = a in {0, 1} | t = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:13] +CST Stack: + {Node ERROR (3, 4) - (3, 12)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- t = a in {0, 1} ++ inse def t = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +68. Input. char of interest: ' inset def = a i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset def = a in {0, 1} | inset in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:12 - 4:19] +CST Stack: + {Node ERROR (3, 11) - (3, 18)} + {Node comparison_operator (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset in {0, 1} ++ inset def = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +70. Input. char of interest: ' inset = def a in ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = def a in {0, 1} | inset = def in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:18 - 4:19] +CST Stack: + {Node ERROR (3, 17) - (3, 18)} + {Node comparison_operator (3, 13) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:14 - 4:17] +CST Stack: + {Node identifier (3, 13) - (3, 16)} + {Node comparison_operator (3, 13) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = def in {0, 1} ++ inset = def a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +72. Input. char of interest: 'inset = a def in {0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a def in {0, 1} | inset = def in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:13 - 4:14] +CST Stack: + {Node ERROR (3, 12) - (3, 13)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:16 - 4:19] +CST Stack: + {Node identifier (3, 15) - (3, 18)} + {Node comparison_operator (3, 15) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = def in {0, 1} ++ inset = a def in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +73. Input. char of interest: 'nset = a i def n {0,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a i def n {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:22] +CST Stack: + {Node ERROR (3, 12) - (3, 21)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = a i def n {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +75. Input. char of interest: 'et = a in def {0, 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in def {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:19 - 4:22] +CST Stack: + {Node ERROR (3, 18) - (3, 21)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in def {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +76. Input. char of interest: 't = a in { def 0, 1}': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in { def 0, 1} | inset = a in {def, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:24 - 4:25] +CST Stack: + {Node ERROR (3, 23) - (3, 24)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:20 - 4:23] +CST Stack: + {Node identifier (3, 19) - (3, 22)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {def, 1} ++ inset = a in { def 0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +77. Input. char of interest: ' = a in {0 def , 1} +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0 def , 1} | inset = a in {def, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:19 - 4:20] +CST Stack: + {Node ERROR (3, 18) - (3, 19)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:21 - 4:24] +CST Stack: + {Node identifier (3, 20) - (3, 23)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {def, 1} ++ inset = a in {0 def , 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +79. Input. char of interest: ' a in {0, def 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, def 1} | inset = a in {0, def} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:27 - 4:28] +CST Stack: + {Node ERROR (3, 26) - (3, 27)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:23 - 4:26] +CST Stack: + {Node identifier (3, 22) - (3, 25)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, def} ++ inset = a in {0, def 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +80. Input. char of interest: 'a in {0, 1 def } + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1 def } | inset = a in {0, def} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:22 - 4:23] +CST Stack: + {Node ERROR (3, 21) - (3, 22)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [4:24 - 4:27] +CST Stack: + {Node identifier (3, 23) - (3, 26)} + {Node set (3, 17) - (3, 28)} + {Node comparison_operator (3, 12) - (3, 28)} + {Node assignment (3, 4) - (3, 28)} + {Node expression_statement (3, 4) - (3, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, def} ++ inset = a in {0, 1 def } + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +81. Input. char of interest: ' in {0, 1} def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} def | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:25 - 4:28] +CST Stack: + {Node ERROR (3, 24) - (3, 27)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} def + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +86. Input. char of interest: '0, 1} + def if a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + def if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ def if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +87. Input. char of interest: ', 1} + i def f a <': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + i def f a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ i def f a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +89. Input. char of interest: '1} + if def a <= ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if def a <= 2 or a == 1: | if def <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:13 - 5:14] +CST Stack: + {Node ERROR (4, 12) - (4, 13)} + {Node comparison_operator (4, 8) - (4, 18)} + {Node boolean_operator (4, 8) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:9 - 5:12] +CST Stack: + {Node identifier (4, 8) - (4, 11)} + {Node comparison_operator (4, 8) - (4, 18)} + {Node boolean_operator (4, 8) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if def <= 2 or a == 1: ++ if def a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +91. Input. char of interest: ' + if a def <= 2 ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a def <= 2 or a == 1: | if def <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:8 - 5:9] +CST Stack: + {Node ERROR (4, 7) - (4, 8)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:11 - 5:14] +CST Stack: + {Node identifier (4, 10) - (4, 13)} + {Node comparison_operator (4, 10) - (4, 18)} + {Node boolean_operator (4, 10) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if def <= 2 or a == 1: ++ if a def <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +92. Input. char of interest: ' if a < def = 2 o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a < def = 2 or a == 1: | if a < def or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:16 - 5:19] +CST Stack: + {Node ERROR (4, 15) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:12 - 5:15] +CST Stack: + {Node identifier (4, 11) - (4, 14)} + {Node comparison_operator (4, 7) - (4, 14)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a < def or a == 1: ++ if a < def = 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +94. Input. char of interest: ' if a <= def 2 or ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= def 2 or a == 1: | if a <= def or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:18 - 5:19] +CST Stack: + {Node ERROR (4, 17) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:14 - 5:17] +CST Stack: + {Node identifier (4, 13) - (4, 16)} + {Node comparison_operator (4, 7) - (4, 16)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= def or a == 1: ++ if a <= def 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +96. Input. char of interest: 'if a <= 2 def or a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 def or a == 1: | if a <= def or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:13 - 5:14] +CST Stack: + {Node ERROR (4, 12) - (4, 13)} + {Node comparison_operator (4, 7) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:16 - 5:19] +CST Stack: + {Node identifier (4, 15) - (4, 18)} + {Node comparison_operator (4, 7) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= def or a == 1: ++ if a <= 2 def or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +97. Input. char of interest: 'f a <= 2 o def r a =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 o def r a == 1: | if a <= 2 == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:15 - 5:24] +CST Stack: + {Node ERROR (4, 14) - (4, 23)} + {Node comparison_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 == 1: ++ if a <= 2 o def r a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +99. Input. char of interest: 'a <= 2 or def a == ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or def a == 1: | if a <= 2 or def == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:23 - 5:24] +CST Stack: + {Node ERROR (4, 22) - (4, 23)} + {Node comparison_operator (4, 18) - (4, 28)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:19 - 5:22] +CST Stack: + {Node identifier (4, 18) - (4, 21)} + {Node comparison_operator (4, 18) - (4, 28)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or def == 1: ++ if a <= 2 or def a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +101. Input. char of interest: '<= 2 or a def == 1:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a def == 1: | if a <= 2 or def == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:18 - 5:19] +CST Stack: + {Node ERROR (4, 17) - (4, 18)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:21 - 5:24] +CST Stack: + {Node identifier (4, 20) - (4, 23)} + {Node comparison_operator (4, 20) - (4, 28)} + {Node boolean_operator (4, 7) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or def == 1: ++ if a <= 2 or a def == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +102. Input. char of interest: '= 2 or a = def = 1: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = def = 1: | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:29] +CST Stack: + {Node ERROR (4, 19) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a = def = 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +104. Input. char of interest: '2 or a == def 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == def 1: | if a <= 2 or a == def: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:28 - 5:29] +CST Stack: + {Node ERROR (4, 27) - (4, 28)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:24 - 5:27] +CST Stack: + {Node identifier (4, 23) - (4, 26)} + {Node comparison_operator (4, 17) - (4, 26)} + {Node boolean_operator (4, 7) - (4, 26)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == def: ++ if a <= 2 or a == def 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +105. Input. char of interest: ' or a == 1 def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1 def : | if a <= 2 or a == def: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:23 - 5:24] +CST Stack: + {Node ERROR (4, 22) - (4, 23)} + {Node comparison_operator (4, 17) - (4, 27)} + {Node boolean_operator (4, 7) - (4, 27)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:25 - 5:28] +CST Stack: + {Node identifier (4, 24) - (4, 27)} + {Node comparison_operator (4, 17) - (4, 27)} + {Node boolean_operator (4, 7) - (4, 27)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == def: ++ if a <= 2 or a == 1 def : + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +106. Input. char of interest: 'or a == 1: def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: def | if a <= 2 or a == 1: + return 1 | def + elif inset: | return 1 + return 1 | inset: 1 + else: | else: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +6 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:9] +CST Stack: + {Node ERROR (6, 4) - (6, 8)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 9) - (7, 16)} + {Node expression_statement (6, 9) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [5:26 - 5:29] +CST Stack: + {Node identifier (4, 25) - (4, 28)} + {Node expression_statement (4, 25) - (4, 28)} + {Node block (4, 25) - (4, 28)} + {Node if_statement (4, 4) - (4, 28)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 6) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,11 +2,12 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: +- def +- return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ if a <= 2 or a == 1: def ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +115. Input. char of interest: ': + def retur': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + def return 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:10 - 6:20] +CST Stack: + {Node ERROR (5, 9) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ def return 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +116. Input. char of interest: ' + r def eturn': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + r def eturn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:20] +CST Stack: + {Node ERROR (5, 8) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ r def eturn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +117. Input. char of interest: ' re def turn ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + re def turn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:20] +CST Stack: + {Node ERROR (5, 8) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ re def turn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +118. Input. char of interest: ' ret def urn 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + ret def urn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:20] +CST Stack: + {Node ERROR (5, 8) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ ret def urn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +119. Input. char of interest: ' retu def rn 1 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retu def rn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:20] +CST Stack: + {Node ERROR (5, 8) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retu def rn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +120. Input. char of interest: ' retur def n 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retur def n 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:20] +CST Stack: + {Node ERROR (5, 8) - (5, 19)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retur def n 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +122. Input. char of interest: ' return def 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return def 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:17 - 6:20] +CST Stack: + {Node ERROR (5, 16) - (5, 19)} + {Node return_statement (5, 8) - (5, 21)} + {Node block (5, 8) - (5, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ return def 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +123. Input. char of interest: ' return 1 def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 def | return def + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [6:16 - 6:17] +CST Stack: + {Node ERROR (5, 15) - (5, 16)} + {Node return_statement (5, 8) - (5, 20)} + {Node block (5, 8) - (5, 20)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [6:18 - 6:21] +CST Stack: + {Node identifier (5, 17) - (5, 20)} + {Node return_statement (5, 8) - (5, 20)} + {Node block (5, 8) - (5, 20)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 6) +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return def ++ return 1 def + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +128. Input. char of interest: 'urn 1 + def elif ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + def elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ def elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +129. Input. char of interest: 'rn 1 + e def lif i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + e def lif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ e def lif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +130. Input. char of interest: 'n 1 + el def if in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + el def if inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ el def if inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +131. Input. char of interest: ' 1 + eli def f ins': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + eli def f inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ eli def f inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +133. Input. char of interest: ' + elif def inset': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif def inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:11 - 7:14] +CST Stack: + {Node ERROR (6, 10) - (6, 13)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif def inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +134. Input. char of interest: ' elif i def nset:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif i def nset: | elif nset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:15] +CST Stack: + {Node ERROR (6, 9) - (6, 14)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif nset: ++ elif i def nset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +135. Input. char of interest: ' elif in def set: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif in def set: | elif set: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:16] +CST Stack: + {Node ERROR (6, 9) - (6, 15)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif set: ++ elif in def set: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +136. Input. char of interest: ' elif ins def et: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif ins def et: | elif ins: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:14 - 7:20] +CST Stack: + {Node ERROR (6, 13) - (6, 19)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif ins: ++ elif ins def et: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +137. Input. char of interest: ' elif inse def t: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inse def t: | elif inse: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:15 - 7:20] +CST Stack: + {Node ERROR (6, 14) - (6, 19)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inse: ++ elif inse def t: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +138. Input. char of interest: 'elif inset def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset def : | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:16 - 7:19] +CST Stack: + {Node ERROR (6, 15) - (6, 18)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset def : + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +139. Input. char of interest: 'lif inset: def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: def | elif inset: + return 1 | def + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: return(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +4 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [7:17 - 7:20] +CST Stack: + {Node identifier (6, 16) - (6, 19)} + {Node expression_statement (6, 16) - (6, 19)} + {Node block (6, 16) - (6, 19)} + {Node elif_clause (6, 4) - (6, 19)} + {Node if_statement (4, 4) - (6, 19)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,10 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: +- def +- return 1 +- else: return(a - 1) + fib(a - 2) ++ elif inset: def ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +148. Input. char of interest: ': + def retur': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + def return 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:10 - 8:20] +CST Stack: + {Node ERROR (7, 9) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ def return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +149. Input. char of interest: ' + r def eturn': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + r def eturn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:20] +CST Stack: + {Node ERROR (7, 8) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ r def eturn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +150. Input. char of interest: ' re def turn ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + re def turn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:20] +CST Stack: + {Node ERROR (7, 8) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ re def turn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +151. Input. char of interest: ' ret def urn 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + ret def urn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:20] +CST Stack: + {Node ERROR (7, 8) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ ret def urn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +152. Input. char of interest: ' retu def rn 1 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retu def rn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:20] +CST Stack: + {Node ERROR (7, 8) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retu def rn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +153. Input. char of interest: ' retur def n 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retur def n 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:20] +CST Stack: + {Node ERROR (7, 8) - (7, 19)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retur def n 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +155. Input. char of interest: ' return def 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return def 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:17 - 8:20] +CST Stack: + {Node ERROR (7, 16) - (7, 19)} + {Node return_statement (7, 8) - (7, 21)} + {Node block (7, 8) - (7, 21)} + {Node elif_clause (6, 4) - (7, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ return def 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +156. Input. char of interest: ' return 1 def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 def | return def + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [8:16 - 8:17] +CST Stack: + {Node ERROR (7, 15) - (7, 16)} + {Node return_statement (7, 8) - (7, 20)} + {Node block (7, 8) - (7, 20)} + {Node elif_clause (6, 4) - (7, 20)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [8:18 - 8:21] +CST Stack: + {Node identifier (7, 17) - (7, 20)} + {Node return_statement (7, 8) - (7, 20)} + {Node block (7, 8) - (7, 20)} + {Node elif_clause (6, 4) - (7, 20)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return def ++ return 1 def + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +161. Input. char of interest: 'urn 1 + def else:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + def else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ def else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +162. Input. char of interest: 'rn 1 + e def lse: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + e def lse: | lse: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:10] +CST Stack: + {Node ERROR (8, 4) - (8, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 10) - (9, 38)} + {Node expression_statement (8, 10) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 10) - (9, 38)} + {Node expression_statement (8, 10) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- lse: return(a - 1) + fib(a - 2) ++ e def lse: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +163. Input. char of interest: 'n 1 + el def se: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + el def se: | se: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:11] +CST Stack: + {Node ERROR (8, 4) - (8, 10)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 11) - (9, 38)} + {Node expression_statement (8, 11) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 11) - (9, 38)} + {Node expression_statement (8, 11) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- se: return(a - 1) + fib(a - 2) ++ el def se: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +164. Input. char of interest: ' 1 + els def e: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + els def e: | e: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:12] +CST Stack: + {Node ERROR (8, 4) - (8, 11)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 12) - (9, 38)} + {Node expression_statement (8, 12) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 12) - (9, 38)} + {Node expression_statement (8, 12) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- e: return(a - 1) + fib(a - 2) ++ els def e: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +165. Input. char of interest: '1 + else def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else def : | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [9:10 - 9:13] +CST Stack: + {Node ERROR (8, 9) - (8, 12)} + {Node else_clause (8, 4) - (9, 38)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,7 @@ + return 1 + elif inset: + return 1 +- else: ++ else def : + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +166. Input. char of interest: ' + else: def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: def | else: + return fib(a - 1) + fib(a - 2) | def + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [9:11 - 9:14] +CST Stack: + {Node identifier (8, 10) - (8, 13)} + {Node expression_statement (8, 10) - (8, 13)} + {Node block (8, 10) - (8, 13)} + {Node else_clause (8, 4) - (8, 13)} + {Node if_statement (4, 4) - (8, 13)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,9 +6,8 @@ + return 1 + elif inset: + return 1 +- else: +- def +- return fib(a - 1) + fib(a - 2) ++ else: def ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +175. Input. char of interest: ': + def retur': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + def return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:10 - 10:44] +CST Stack: + {Node ERROR (9, 9) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,6 +6,8 @@ + return 1 + elif inset: + return 1 ++ else: ++ def return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +176. Input. char of interest: ' + r def eturn': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + r def eturn fib(a - 1) + fib(a - 2) | -1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:9 - 10:26] +CST Stack: + {Node ERROR (9, 8) - (9, 25)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:30 - 10:31] +CST Stack: + {Node ERROR (9, 29) - (9, 30)} + {Node binary_operator (9, 26) - (9, 43)} + {Node expression_statement (9, 26) - (9, 43)} + {Node block (9, 26) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- -1 + fib(a - 2) ++ r def eturn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +177. Input. char of interest: ' re def turn ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + re def turn fib(a - 1) + fib(a - 2) | -1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:9 - 10:26] +CST Stack: + {Node ERROR (9, 8) - (9, 25)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:30 - 10:31] +CST Stack: + {Node ERROR (9, 29) - (9, 30)} + {Node binary_operator (9, 26) - (9, 43)} + {Node expression_statement (9, 26) - (9, 43)} + {Node block (9, 26) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- -1 + fib(a - 2) ++ re def turn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +178. Input. char of interest: ' ret def urn f': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + ret def urn fib(a - 1) + fib(a - 2) | -1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:9 - 10:26] +CST Stack: + {Node ERROR (9, 8) - (9, 25)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:30 - 10:31] +CST Stack: + {Node ERROR (9, 29) - (9, 30)} + {Node binary_operator (9, 26) - (9, 43)} + {Node expression_statement (9, 26) - (9, 43)} + {Node block (9, 26) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- -1 + fib(a - 2) ++ ret def urn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +179. Input. char of interest: ' retu def rn fi': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retu def rn fib(a - 1) + fib(a - 2) | -1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:9 - 10:26] +CST Stack: + {Node ERROR (9, 8) - (9, 25)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:30 - 10:31] +CST Stack: + {Node ERROR (9, 29) - (9, 30)} + {Node binary_operator (9, 26) - (9, 43)} + {Node expression_statement (9, 26) - (9, 43)} + {Node block (9, 26) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- -1 + fib(a - 2) ++ retu def rn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +180. Input. char of interest: ' retur def n fib': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retur def n fib(a - 1) + fib(a - 2) | -1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:9 - 10:26] +CST Stack: + {Node ERROR (9, 8) - (9, 25)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:30 - 10:31] +CST Stack: + {Node ERROR (9, 29) - (9, 30)} + {Node binary_operator (9, 26) - (9, 43)} + {Node expression_statement (9, 26) - (9, 43)} + {Node block (9, 26) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- -1 + fib(a - 2) ++ retur def n fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +182. Input. char of interest: ' return def fib(a': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return def fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:17 - 10:20] +CST Stack: + {Node ERROR (9, 16) - (9, 19)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return def fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +183. Input. char of interest: ' return f def ib(a ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return f def ib(a - 1) + fib(a - 2) | return ib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:16 - 10:21] +CST Stack: + {Node ERROR (9, 15) - (9, 20)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return ib(a - 1) + fib(a - 2) ++ return f def ib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +184. Input. char of interest: ' return fi def b(a -': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fi def b(a - 1) + fib(a - 2) | return fi(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:19 - 10:24] +CST Stack: + {Node ERROR (9, 18) - (9, 23)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fi(a - 1) + fib(a - 2) ++ return fi def b(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +185. Input. char of interest: 'return fib def (a - ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib def (a - 1) + fib(a - 2) | return def(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:20 - 10:23] +CST Stack: + {Node identifier (9, 19) - (9, 22)} + {Node call (9, 19) - (9, 30)} + {Node binary_operator (9, 19) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return def(a - 1) + fib(a - 2) ++ return fib def (a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +186. Input. char of interest: 'eturn fib( def a - 1': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib( def a - 1) + fib(a - 2) | return fib(def - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:25 - 10:26] +CST Stack: + {Node ERROR (9, 24) - (9, 25)} + {Node binary_operator (9, 20) - (9, 29)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:21 - 10:24] +CST Stack: + {Node identifier (9, 20) - (9, 23)} + {Node binary_operator (9, 20) - (9, 29)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(def - 1) + fib(a - 2) ++ return fib( def a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +188. Input. char of interest: 'urn fib(a def - 1) ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a def - 1) + fib(a - 2) | return fib(def - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:20 - 10:21] +CST Stack: + {Node ERROR (9, 19) - (9, 20)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:23 - 10:26] +CST Stack: + {Node identifier (9, 22) - (9, 25)} + {Node binary_operator (9, 22) - (9, 29)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(def - 1) + fib(a - 2) ++ return fib(a def - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +190. Input. char of interest: 'n fib(a - def 1) + ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - def 1) + fib(a - 2) | return fib(a - def) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:29 - 10:30] +CST Stack: + {Node ERROR (9, 28) - (9, 29)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:25 - 10:28] +CST Stack: + {Node identifier (9, 24) - (9, 27)} + {Node binary_operator (9, 19) - (9, 27)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - def) + fib(a - 2) ++ return fib(a - def 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +191. Input. char of interest: ' fib(a - 1 def ) + f': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1 def ) + fib(a - 2) | return fib(a - def) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:24 - 10:25] +CST Stack: + {Node ERROR (9, 23) - (9, 24)} + {Node binary_operator (9, 19) - (9, 28)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:26 - 10:29] +CST Stack: + {Node identifier (9, 25) - (9, 28)} + {Node binary_operator (9, 19) - (9, 28)} + {Node argument_list (9, 18) - (9, 30)} + {Node call (9, 15) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - def) + fib(a - 2) ++ return fib(a - 1 def ) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +193. Input. char of interest: 'ib(a - 1) def + fib': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) def + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:28 - 10:31] +CST Stack: + {Node ERROR (9, 27) - (9, 30)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) def + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +195. Input. char of interest: '(a - 1) + def fib(a': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + def fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:30 - 10:33] +CST Stack: + {Node ERROR (9, 29) - (9, 32)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + def fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +196. Input. char of interest: 'a - 1) + f def ib(a ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + f def ib(a - 2) | return fib(a - 1) + ib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:34] +CST Stack: + {Node ERROR (9, 28) - (9, 33)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + ib(a - 2) ++ return fib(a - 1) + f def ib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +197. Input. char of interest: ' - 1) + fi def b(a -': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fi def b(a - 2) | return fib(a - 1) + b(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:35] +CST Stack: + {Node ERROR (9, 28) - (9, 34)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + b(a - 2) ++ return fib(a - 1) + fi def b(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +198. Input. char of interest: '- 1) + fib def (a - ': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib def (a - 2) | return fib(a - 1) + def(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:29 - 10:32] +CST Stack: + {Node ERROR (9, 28) - (9, 31)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:33 - 10:36] +CST Stack: + {Node identifier (9, 32) - (9, 35)} + {Node call (9, 32) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + def(a - 2) ++ return fib(a - 1) + fib def (a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +199. Input. char of interest: ' 1) + fib( def a - 2': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib( def a - 2) | return fib(a - 1) + fib(def - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:38 - 10:39] +CST Stack: + {Node ERROR (9, 37) - (9, 38)} + {Node binary_operator (9, 33) - (9, 42)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:34 - 10:37] +CST Stack: + {Node identifier (9, 33) - (9, 36)} + {Node binary_operator (9, 33) - (9, 42)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(def - 2) ++ return fib(a - 1) + fib( def a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +201. Input. char of interest: ') + fib(a def - 2) +': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a def - 2) | return fib(a - 1) + fib(def - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:33 - 10:34] +CST Stack: + {Node ERROR (9, 32) - (9, 33)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:36 - 10:39] +CST Stack: + {Node identifier (9, 35) - (9, 38)} + {Node binary_operator (9, 35) - (9, 42)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(def - 2) ++ return fib(a - 1) + fib(a def - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +203. Input. char of interest: '+ fib(a - def 2) + +d': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - def 2) | return fib(a - 1) + fib(a - def) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:42 - 10:43] +CST Stack: + {Node ERROR (9, 41) - (9, 42)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:38 - 10:41] +CST Stack: + {Node identifier (9, 37) - (9, 40)} + {Node binary_operator (9, 32) - (9, 40)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - def) ++ return fib(a - 1) + fib(a - def 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +204. Input. char of interest: ' fib(a - 2 def ) + +de': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2 def ) | return fib(a - 1) + fib(a - def) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:37 - 10:38] +CST Stack: + {Node ERROR (9, 36) - (9, 37)} + {Node binary_operator (9, 32) - (9, 41)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:39 - 10:42] +CST Stack: + {Node identifier (9, 38) - (9, 41)} + {Node binary_operator (9, 32) - (9, 41)} + {Node argument_list (9, 31) - (9, 43)} + {Node call (9, 28) - (9, 43)} + {Node binary_operator (9, 15) - (9, 43)} + {Node return_statement (9, 8) - (9, 43)} + {Node block (9, 8) - (9, 43)} + {Node else_clause (8, 4) - (9, 43)} + {Node if_statement (4, 4) - (9, 43)} + {Node block (1, 4) - (9, 43)} + {Node function_definition (0, 0) - (9, 43)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - def) ++ return fib(a - 1) + fib(a - 2 def ) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +205. Input. char of interest: 'fib(a - 2) def + +def': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) def | return fib(a - 1) + def + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:29 - 10:39] +CST Stack: + {Node ERROR (9, 28) - (9, 38)} + {Node binary_operator (9, 15) - (9, 42)} + {Node return_statement (9, 8) - (9, 42)} + {Node block (9, 8) - (9, 42)} + {Node else_clause (8, 4) - (9, 42)} + {Node if_statement (4, 4) - (9, 42)} + {Node block (1, 4) - (9, 42)} + {Node function_definition (0, 0) - (9, 42)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [10:40 - 10:43] +CST Stack: + {Node identifier (9, 39) - (9, 42)} + {Node binary_operator (9, 15) - (9, 42)} + {Node return_statement (9, 8) - (9, 42)} + {Node block (9, 8) - (9, 42)} + {Node else_clause (8, 4) - (9, 42)} + {Node if_statement (4, 4) - (9, 42)} + {Node block (1, 4) - (9, 42)} + {Node function_definition (0, 0) - (9, 42)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 10) +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + def ++ return fib(a - 1) + fib(a - 2) def + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +206. Input. char of interest: 'ib(a - 2) + def +def ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + def | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:4] +CST Stack: + {Node ERROR (11, 0) - (11, 3)} + {Node function_definition (10, 1) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,7 +8,7 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) +- ++ def + def somethingelse(): + pass + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +207. Input. char of interest: 'b(a - 2) + + def def s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | + def def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:6 - 12:9] +CST Stack: + {Node ERROR (11, 5) - (11, 8)} + {Node function_definition (11, 1) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++ def def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +208. Input. char of interest: '(a - 2) + +d def ef so': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +d def ef somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [12:1 - 12:2] +CST Stack: + {Node ERROR (11, 0) - (11, 1)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [12:7 - 12:9] +CST Stack: + {Node ERROR (11, 6) - (11, 8)} + {Node function_definition (11, 2) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++d def ef somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +209. Input. char of interest: 'a - 2) + +de def f som': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +de def f somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [12:1 - 12:3] +CST Stack: + {Node ERROR (11, 0) - (11, 2)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [12:8 - 12:9] +CST Stack: + {Node ERROR (11, 7) - (11, 8)} + {Node function_definition (11, 3) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++de def f somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +211. Input. char of interest: '- 2) + +def def somet': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:6 - 12:9] +CST Stack: + {Node ERROR (11, 5) - (11, 8)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +212. Input. char of interest: ' 2) + +def s def ometh': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def s def omethingelse(): | def omethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:10] +CST Stack: + {Node ERROR (11, 4) - (11, 9)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def omethingelse(): ++def s def omethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +213. Input. char of interest: '2) + +def so def methi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def so def methingelse(): | def methingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:11] +CST Stack: + {Node ERROR (11, 4) - (11, 10)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def methingelse(): ++def so def methingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +214. Input. char of interest: ') + +def som def ethin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def som def ethingelse(): | def ethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:12] +CST Stack: + {Node ERROR (11, 4) - (11, 11)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ethingelse(): ++def som def ethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +215. Input. char of interest: ' + +def some def thing': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def some def thingelse(): | def thingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:13] +CST Stack: + {Node ERROR (11, 4) - (11, 12)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def thingelse(): ++def some def thingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +216. Input. char of interest: ' +def somet def hinge': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somet def hingelse(): | def hingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:14] +CST Stack: + {Node ERROR (11, 4) - (11, 13)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def hingelse(): ++def somet def hingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +217. Input. char of interest: 'def someth def ingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def someth def ingelse(): | def ingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:15] +CST Stack: + {Node ERROR (11, 4) - (11, 14)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ingelse(): ++def someth def ingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +218. Input. char of interest: 'ef somethi def ngels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethi def ngelse(): | def somethi(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:13 - 12:23] +CST Stack: + {Node ERROR (11, 12) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethi(): ++def somethi def ngelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +219. Input. char of interest: 'f somethin def gelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethin def gelse(): | def somethin(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:14 - 12:23] +CST Stack: + {Node ERROR (11, 13) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethin(): ++def somethin def gelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +220. Input. char of interest: ' something def else(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def something def else(): | def something(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:15 - 12:23] +CST Stack: + {Node ERROR (11, 14) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def something(): ++def something def else(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +221. Input. char of interest: 'somethinge def lse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinge def lse(): | def somethinge(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:16 - 12:23] +CST Stack: + {Node ERROR (11, 15) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethinge(): ++def somethinge def lse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +222. Input. char of interest: 'omethingel def se():': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingel def se(): | def somethingel(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:17 - 12:23] +CST Stack: + {Node ERROR (11, 16) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingel(): ++def somethingel def se(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +223. Input. char of interest: 'methingels def e(): +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingels def e(): | def somethingels(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:18 - 12:23] +CST Stack: + {Node ERROR (11, 17) - (11, 22)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingels(): ++def somethingels def e(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +224. Input. char of interest: 'ethingelse def (): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse def (): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:19 - 12:22] +CST Stack: + {Node ERROR (11, 18) - (11, 21)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse def (): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +225. Input. char of interest: 'thingelse( def ): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse( def ): | def somethingelse(def): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [12:20 - 12:23] +CST Stack: + {Node identifier (11, 19) - (11, 22)} + {Node parameters (11, 17) - (11, 24)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 12) +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(def): ++def somethingelse( def ): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +226. Input. char of interest: 'hingelse() def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse() def : | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:21 - 12:24] +CST Stack: + {Node ERROR (11, 20) - (11, 23)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse() def : + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +227. Input. char of interest: 'ingelse(): def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): def | def somethingelse(): + pass | def + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [12:22 - 12:25] +CST Stack: + {Node identifier (11, 21) - (11, 24)} + {Node expression_statement (11, 21) - (11, 24)} + {Node block (11, 21) - (11, 24)} + {Node function_definition (11, 0) - (11, 24)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 13) +ERRPY Recovered AST diff: +--- ++++ +@@ -9,9 +9,8 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): +- def +-pass ++def somethingelse(): def ++ pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +232. Input. char of interest: 'se(): + def pass +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + def pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:6 - 13:14] +CST Stack: + {Node ERROR (12, 5) - (12, 13)} + {Node function_definition (11, 0) - (12, 13)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 12 (, line 14) +ERRPY Recovered AST diff: +--- ++++ +@@ -10,6 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): ++ def pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +233. Input. char of interest: 'e(): + p def ass + +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + p def ass | ass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:10] +CST Stack: + {Node ERROR (12, 4) - (12, 9)} + {Node function_definition (11, 0) - (12, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ass ++ p def ass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +234. Input. char of interest: '(): + pa def ss + +d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pa def ss | ss + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:11] +CST Stack: + {Node ERROR (12, 4) - (12, 10)} + {Node function_definition (11, 0) - (12, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ss ++ pa def ss + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +235. Input. char of interest: '): + pas def s + +de': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas def s | s + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:12] +CST Stack: + {Node ERROR (12, 4) - (12, 11)} + {Node function_definition (11, 0) - (12, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- s ++ pas def s + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +236. Input. char of interest: ': + pass def + +def': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass def | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:13] +CST Stack: + {Node ERROR (12, 4) - (12, 12)} + {Node function_definition (11, 0) - (12, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 12 (, line 14) +ERRPY Recovered AST diff: +--- ++++ +@@ -10,6 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): ++ pass def + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +237. Input. char of interest: ' + pass + def +def ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + def | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:4] +CST Stack: + {Node ERROR (14, 0) - (14, 3)} + {Node function_definition (13, 1) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,7 +11,7 @@ + + def somethingelse(): + pass +- ++ def + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +238. Input. char of interest: ' pass + + def def f': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | + def def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:6 - 15:9] +CST Stack: + {Node ERROR (14, 5) - (14, 8)} + {Node function_definition (14, 1) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++ def def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +239. Input. char of interest: ' pass + +d def ef fo': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +d def ef format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [15:1 - 15:2] +CST Stack: + {Node ERROR (14, 0) - (14, 1)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [15:7 - 15:9] +CST Stack: + {Node ERROR (14, 6) - (14, 8)} + {Node function_definition (14, 2) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++d def ef format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +240. Input. char of interest: ' pass + +de def f for': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +de def f format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [15:1 - 15:3] +CST Stack: + {Node ERROR (14, 0) - (14, 2)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [15:8 - 15:9] +CST Stack: + {Node ERROR (14, 7) - (14, 8)} + {Node function_definition (14, 3) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++de def f format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +242. Input. char of interest: 'pass + +def def forma': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:6 - 15:9] +CST Stack: + {Node ERROR (14, 5) - (14, 8)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +243. Input. char of interest: 'ass + +def f def ormat': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def f def ormat_a_string(astring: str) -> str: | def ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:10] +CST Stack: + {Node ERROR (14, 4) - (14, 9)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def ormat_a_string(astring: str) -> str: ++def f def ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +244. Input. char of interest: 'ss + +def fo def rmat_': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def fo def rmat_a_string(astring: str) -> str: | def rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:11] +CST Stack: + {Node ERROR (14, 4) - (14, 10)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def rmat_a_string(astring: str) -> str: ++def fo def rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +245. Input. char of interest: 's + +def for def mat_a': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def for def mat_a_string(astring: str) -> str: | def mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:12] +CST Stack: + {Node ERROR (14, 4) - (14, 11)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def mat_a_string(astring: str) -> str: ++def for def mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +246. Input. char of interest: ' + +def form def at_a_': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def form def at_a_string(astring: str) -> str: | def at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:13] +CST Stack: + {Node ERROR (14, 4) - (14, 12)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def at_a_string(astring: str) -> str: ++def form def at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +247. Input. char of interest: ' +def forma def t_a_s': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forma def t_a_string(astring: str) -> str: | def t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:14] +CST Stack: + {Node ERROR (14, 4) - (14, 13)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def t_a_string(astring: str) -> str: ++def forma def t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +248. Input. char of interest: 'def format def _a_st': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format def _a_string(astring: str) -> str: | def _a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:15] +CST Stack: + {Node ERROR (14, 4) - (14, 14)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def _a_string(astring: str) -> str: ++def format def _a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +249. Input. char of interest: 'ef format_ def a_str': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_ def a_string(astring: str) -> str: | def a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:16] +CST Stack: + {Node ERROR (14, 4) - (14, 15)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def a_string(astring: str) -> str: ++def format_ def a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +250. Input. char of interest: 'f format_a def _stri': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a def _string(astring: str) -> str: | def format_a(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:14 - 15:25] +CST Stack: + {Node ERROR (14, 13) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a(astring: str) -> str: ++def format_a def _string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +251. Input. char of interest: ' format_a_ def strin': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_ def string(astring: str) -> str: | def format_a_(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:15 - 15:25] +CST Stack: + {Node ERROR (14, 14) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_(astring: str) -> str: ++def format_a_ def string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +252. Input. char of interest: 'format_a_s def tring': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_s def tring(astring: str) -> str: | def format_a_s(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:16 - 15:25] +CST Stack: + {Node ERROR (14, 15) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_s(astring: str) -> str: ++def format_a_s def tring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +253. Input. char of interest: 'ormat_a_st def ring(': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_st def ring(astring: str) -> str: | def format_a_st(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:17 - 15:25] +CST Stack: + {Node ERROR (14, 16) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_st(astring: str) -> str: ++def format_a_st def ring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +254. Input. char of interest: 'rmat_a_str def ing(a': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_str def ing(astring: str) -> str: | def format_a_str(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:18 - 15:25] +CST Stack: + {Node ERROR (14, 17) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_str(astring: str) -> str: ++def format_a_str def ing(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +255. Input. char of interest: 'mat_a_stri def ng(as': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_stri def ng(astring: str) -> str: | def format_a_stri(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:19 - 15:25] +CST Stack: + {Node ERROR (14, 18) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_stri(astring: str) -> str: ++def format_a_stri def ng(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +256. Input. char of interest: 'at_a_strin def g(ast': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strin def g(astring: str) -> str: | def format_a_strin(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:20 - 15:25] +CST Stack: + {Node ERROR (14, 19) - (14, 24)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_strin(astring: str) -> str: ++def format_a_strin def g(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +257. Input. char of interest: 't_a_string def (astr': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string def (astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:24] +CST Stack: + {Node ERROR (14, 20) - (14, 23)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string def (astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +258. Input. char of interest: '_a_string( def astri': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string( def astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:22 - 15:25] +CST Stack: + {Node ERROR (14, 21) - (14, 24)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string( def astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +259. Input. char of interest: 'a_string(a def strin': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(a def string: str) -> str: | def format_a_string(string: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:26] +CST Stack: + {Node ERROR (14, 20) - (14, 25)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(string: str) -> str: ++def format_a_string(a def string: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +260. Input. char of interest: '_string(as def tring': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(as def tring: str) -> str: | def format_a_string(tring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:27] +CST Stack: + {Node ERROR (14, 20) - (14, 26)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(tring: str) -> str: ++def format_a_string(as def tring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +261. Input. char of interest: 'string(ast def ring:': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(ast def ring: str) -> str: | def format_a_string(ring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:28] +CST Stack: + {Node ERROR (14, 20) - (14, 27)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(ring: str) -> str: ++def format_a_string(ast def ring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +262. Input. char of interest: 'tring(astr def ing: ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astr def ing: str) -> str: | def format_a_string(astr: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:26 - 15:33] +CST Stack: + {Node ERROR (14, 25) - (14, 32)} + {Node typed_parameter (14, 20) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astr: str) -> str: ++def format_a_string(astr def ing: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +263. Input. char of interest: 'ring(astri def ng: s': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astri def ng: str) -> str: | def format_a_string(astri: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:27 - 15:33] +CST Stack: + {Node ERROR (14, 26) - (14, 32)} + {Node typed_parameter (14, 20) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astri: str) -> str: ++def format_a_string(astri def ng: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +264. Input. char of interest: 'ing(astrin def g: st': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrin def g: str) -> str: | def format_a_string(astrin: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:28 - 15:33] +CST Stack: + {Node ERROR (14, 27) - (14, 32)} + {Node typed_parameter (14, 20) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astrin: str) -> str: ++def format_a_string(astrin def g: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +265. Input. char of interest: 'ng(astring def : str': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring def : str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:29 - 15:32] +CST Stack: + {Node ERROR (14, 28) - (14, 31)} + {Node typed_parameter (14, 20) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring def : str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +267. Input. char of interest: '(astring: def str) ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: def str) -> str: | def format_a_string(astring: def) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [15:35 - 15:38] +CST Stack: + {Node ERROR (14, 34) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [15:31 - 15:34] +CST Stack: + {Node identifier (14, 30) - (14, 33)} + {Node type (14, 30) - (14, 33)} + {Node typed_parameter (14, 20) - (14, 33)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: def) -> str: ++def format_a_string(astring: def str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +268. Input. char of interest: 'astring: s def tr) -': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: s def tr) -> str: | def format_a_string(astring: tr) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:30 - 15:35] +CST Stack: + {Node ERROR (14, 29) - (14, 34)} + {Node typed_parameter (14, 20) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: tr) -> str: ++def format_a_string(astring: s def tr) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +269. Input. char of interest: 'string: st def r) ->': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: st def r) -> str: | def format_a_string(astring: st) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:33 - 15:38] +CST Stack: + {Node ERROR (14, 32) - (14, 37)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: st) -> str: ++def format_a_string(astring: st def r) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +270. Input. char of interest: 'tring: str def ) -> ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str def ) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:34 - 15:37] +CST Stack: + {Node ERROR (14, 33) - (14, 36)} + {Node parameters (14, 19) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str def ) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +272. Input. char of interest: 'ing: str) def -> st': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) def -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:36 - 15:39] +CST Stack: + {Node ERROR (14, 35) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) def -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +273. Input. char of interest: 'ng: str) - def > str': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) - def > str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) - def > str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +275. Input. char of interest: ': str) -> def str: +': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> def str: | def format_a_string(astring: str) -> def: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [15:43 - 15:46] +CST Stack: + {Node ERROR (14, 42) - (14, 45)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [15:39 - 15:42] +CST Stack: + {Node identifier (14, 38) - (14, 41)} + {Node type (14, 38) - (14, 41)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> def: ++def format_a_string(astring: str) -> def str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +276. Input. char of interest: ' str) -> s def tr: + ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> s def tr: | def format_a_string(astring: str) -> tr: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:38 - 15:43] +CST Stack: + {Node ERROR (14, 37) - (14, 42)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> tr: ++def format_a_string(astring: str) -> s def tr: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +277. Input. char of interest: 'str) -> st def r: + ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> st def r: | def format_a_string(astring: str) -> st: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:41 - 15:46] +CST Stack: + {Node ERROR (14, 40) - (14, 45)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> st: ++def format_a_string(astring: str) -> st def r: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +278. Input. char of interest: 'tr) -> str def : + ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str def : | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:42 - 15:45] +CST Stack: + {Node ERROR (14, 41) - (14, 44)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str def : + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +279. Input. char of interest: 'r) -> str: def + ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: def | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | def + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [15:43 - 15:46] +CST Stack: + {Node identifier (14, 42) - (14, 45)} + {Node expression_statement (14, 42) - (14, 45)} + {Node block (14, 42) - (14, 45)} + {Node function_definition (14, 0) - (14, 45)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,9 +12,8 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: +- def +-return ','.join([x for x in astring]) ++def format_a_string(astring: str) -> str: def ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -23,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +284. Input. char of interest: ' str: + def retur': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + def return ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:6 - 16:16] +CST Stack: + {Node ERROR (15, 5) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ def return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +285. Input. char of interest: 'str: + r def eturn': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + r def eturn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ r def eturn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +286. Input. char of interest: 'tr: + re def turn ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + re def turn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ re def turn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +287. Input. char of interest: 'r: + ret def urn '': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + ret def urn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ ret def urn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +288. Input. char of interest: ': + retu def rn ',': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retu def rn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retu def rn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +289. Input. char of interest: ' + retur def n ','': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retur def n ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retur def n ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +291. Input. char of interest: ' return def ','.j': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return def ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:13 - 16:16] +CST Stack: + {Node ERROR (15, 12) - (15, 15)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return def ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +292. Input. char of interest: ' return ' def ,'.jo': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ' def ,'.join([x for x in astring]) | return ' def ,'.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +293. Input. char of interest: ' return ', def '.joi': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ', def '.join([x for x in astring]) | return ', def '.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +294. Input. char of interest: 'return ',' def .join': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ',' def .join([x for x in astring]) | return def.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:12 - 16:15] +CST Stack: + {Node ERROR (15, 11) - (15, 14)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:16 - 16:19] +CST Stack: + {Node identifier (15, 15) - (15, 18)} + {Node attribute (15, 15) - (15, 24)} + {Node call (15, 15) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return def.join([x for x in astring]) ++ return ',' def .join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +295. Input. char of interest: 'eturn ','. def join(': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','. def join([x for x in astring]) | return ','.def([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:21 - 16:25] +CST Stack: + {Node ERROR (15, 20) - (15, 24)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:16 - 16:19] +CST Stack: + {Node identifier (15, 15) - (15, 18)} + {Node attribute (15, 11) - (15, 18)} + {Node call (15, 11) - (15, 45)} + {Node return_statement (15, 4) - (15, 45)} + {Node block (15, 4) - (15, 45)} + {Node function_definition (14, 0) - (15, 45)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.def([x for x in astring]) ++ return ','. def join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +296. Input. char of interest: 'turn ','.j def oin([': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.j def oin([x for x in astring]) | return oin([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:21] +CST Stack: + {Node ERROR (15, 11) - (15, 20)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return oin([x for x in astring]) ++ return ','.j def oin([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +297. Input. char of interest: 'urn ','.jo def in([x': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jo def in([x for x in astring]) | return ','.jo in [x for x in astring] + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:19 - 16:22] +CST Stack: + {Node ERROR (15, 18) - (15, 21)} + {Node comparison_operator (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.jo in [x for x in astring] ++ return ','.jo def in([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +298. Input. char of interest: 'rn ','.joi def n([x ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.joi def n([x for x in astring]) | return n([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:23] +CST Stack: + {Node ERROR (15, 11) - (15, 22)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return n([x for x in astring]) ++ return ','.joi def n([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +299. Input. char of interest: 'n ','.join def ([x f': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join def ([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:21 - 16:24] +CST Stack: + {Node ERROR (15, 20) - (15, 23)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join def ([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +300. Input. char of interest: ' ','.join( def [x fo': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join( def [x for x in astring]) | return ','.join(def[x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:27 - 16:32] +CST Stack: + {Node ERROR (15, 26) - (15, 31)} + {Node subscript (15, 21) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:22 - 16:25] +CST Stack: + {Node identifier (15, 21) - (15, 24)} + {Node subscript (15, 21) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join(def[x in astring]) ++ return ','.join( def [x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +301. Input. char of interest: '','.join([ def x for': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([ def x for x in astring]) | return ','.join([def for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:27 - 16:28] +CST Stack: + {Node ERROR (15, 26) - (15, 27)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:23 - 16:26] +CST Stack: + {Node identifier (15, 22) - (15, 25)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([def for x in astring]) ++ return ','.join([ def x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +303. Input. char of interest: ''.join([x def for x': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x def for x in astring]) | return ','.join([def for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:22 - 16:23] +CST Stack: + {Node ERROR (15, 21) - (15, 22)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:25 - 16:28] +CST Stack: + {Node identifier (15, 24) - (15, 27)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([def for x in astring]) ++ return ','.join([x def for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +304. Input. char of interest: '.join([x f def or x ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x f def or x in astring]) | return ','.join([x or x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:29] +CST Stack: + {Node ERROR (15, 23) - (15, 28)} + {Node boolean_operator (15, 21) - (15, 44)} + {Node list (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x or x in astring]) ++ return ','.join([x f def or x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +305. Input. char of interest: 'join([x fo def r x i': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fo def r x in astring]) | return ','.join([x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:32] +CST Stack: + {Node ERROR (15, 21) - (15, 31)} + {Node list (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x in astring]) ++ return ','.join([x fo def r x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +307. Input. char of interest: 'in([x for def x in ': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for def x in astring]) | return ','.join([x for def in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:33 - 16:34] +CST Stack: + {Node ERROR (15, 32) - (15, 33)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:29 - 16:32] +CST Stack: + {Node identifier (15, 28) - (15, 31)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for def in astring]) ++ return ','.join([x for def x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +309. Input. char of interest: '([x for x def in as': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x def in astring]) | return ','.join([x for def in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:28 - 16:29] +CST Stack: + {Node ERROR (15, 27) - (15, 28)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:31 - 16:34] +CST Stack: + {Node identifier (15, 30) - (15, 33)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for def in astring]) ++ return ','.join([x for x def in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +310. Input. char of interest: '[x for x i def n ast': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x i def n astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:45] +CST Stack: + {Node ERROR (15, 23) - (15, 44)} + {Node list (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for x i def n astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +312. Input. char of interest: ' for x in def astri': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in def astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:34 - 16:37] +CST Stack: + {Node ERROR (15, 33) - (15, 36)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in def astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +313. Input. char of interest: 'for x in a def strin': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in a def string]) | return ','.join([x for x in string]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:38] +CST Stack: + {Node ERROR (15, 32) - (15, 37)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in string]) ++ return ','.join([x for x in a def string]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +314. Input. char of interest: 'or x in as def tring': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in as def tring]) | return ','.join([x for x in tring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:39] +CST Stack: + {Node ERROR (15, 32) - (15, 38)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in tring]) ++ return ','.join([x for x in as def tring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +315. Input. char of interest: 'r x in ast def ring]': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in ast def ring]) | return ','.join([x for x in ring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:40] +CST Stack: + {Node ERROR (15, 32) - (15, 39)} + {Node for_in_clause (15, 23) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in ring]) ++ return ','.join([x for x in ast def ring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +316. Input. char of interest: ' x in astr def ing])': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astr def ing]) | return ','.join([x for x in astr]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:38 - 16:45] +CST Stack: + {Node ERROR (15, 37) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astr]) ++ return ','.join([x for x in astr def ing]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +317. Input. char of interest: 'x in astri def ng]) +': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astri def ng]) | return ','.join([x for x in astri]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:39 - 16:45] +CST Stack: + {Node ERROR (15, 38) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astri]) ++ return ','.join([x for x in astri def ng]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +318. Input. char of interest: ' in astrin def g]) + +': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrin def g]) | return ','.join([x for x in astrin]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:40 - 16:45] +CST Stack: + {Node ERROR (15, 39) - (15, 44)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astrin]) ++ return ','.join([x for x in astrin def g]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +319. Input. char of interest: 'in astring def ]) + +d': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring def ]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:41 - 16:44] +CST Stack: + {Node ERROR (15, 40) - (15, 43)} + {Node list_comprehension (15, 20) - (15, 45)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring def ]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +320. Input. char of interest: 'n astring] def ) + +de': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring] def ) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:42 - 16:45] +CST Stack: + {Node ERROR (15, 41) - (15, 44)} + {Node argument_list (15, 19) - (15, 46)} + {Node call (15, 11) - (15, 46)} + {Node return_statement (15, 4) - (15, 46)} + {Node block (15, 4) - (15, 46)} + {Node function_definition (14, 0) - (15, 46)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring] def ) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +321. Input. char of interest: ' astring]) def + +def': + +Input: | ERRPY Recovered AST: +---------------------------------------------------| --------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) def | return def + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:12 - 16:42] +CST Stack: + {Node ERROR (15, 11) - (15, 41)} + {Node return_statement (15, 4) - (15, 45)} + {Node block (15, 4) - (15, 45)} + {Node function_definition (14, 0) - (15, 45)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [16:43 - 16:46] +CST Stack: + {Node identifier (15, 42) - (15, 45)} + {Node return_statement (15, 4) - (15, 45)} + {Node block (15, 4) - (15, 45)} + {Node function_definition (14, 0) - (15, 45)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return def ++ return ','.join([x for x in astring]) def + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +322. Input. char of interest: 'astring]) + def +def ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + def | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:4] +CST Stack: + {Node ERROR (17, 0) - (17, 3)} + {Node function_definition (16, 1) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,7 +14,7 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +- ++ def + def main() -> int: + """DOC_STRING""" + somethingelse() +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +323. Input. char of interest: 'string]) + + def def m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | + def def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:6 - 18:9] +CST Stack: + {Node ERROR (17, 5) - (17, 8)} + {Node function_definition (17, 1) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++ def def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +324. Input. char of interest: 'tring]) + +d def ef ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +d def ef main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:1 - 18:2] +CST Stack: + {Node ERROR (17, 0) - (17, 1)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [18:7 - 18:9] +CST Stack: + {Node ERROR (17, 6) - (17, 8)} + {Node function_definition (17, 2) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++d def ef main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +325. Input. char of interest: 'ring]) + +de def f mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +de def f main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:1 - 18:3] +CST Stack: + {Node ERROR (17, 0) - (17, 2)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [18:8 - 18:9] +CST Stack: + {Node ERROR (17, 7) - (17, 8)} + {Node function_definition (17, 3) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++de def f main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +327. Input. char of interest: 'ng]) + +def def main(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:6 - 18:9] +CST Stack: + {Node ERROR (17, 5) - (17, 8)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +328. Input. char of interest: 'g]) + +def m def ain()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def m def ain() -> int: | def ain() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:5 - 18:10] +CST Stack: + {Node ERROR (17, 4) - (17, 9)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ain() -> int: ++def m def ain() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +329. Input. char of interest: ']) + +def ma def in() ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def ma def in() -> int: | def ma() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:8 - 18:14] +CST Stack: + {Node ERROR (17, 7) - (17, 13)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ma() -> int: ++def ma def in() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +330. Input. char of interest: ') + +def mai def n() -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def mai def n() -> int: | def mai() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:9 - 18:14] +CST Stack: + {Node ERROR (17, 8) - (17, 13)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def mai() -> int: ++def mai def n() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +331. Input. char of interest: ' + +def main def () ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main def () -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:10 - 18:13] +CST Stack: + {Node ERROR (17, 9) - (17, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main def () -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +332. Input. char of interest: ' +def main( def ) -> ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main( def ) -> int: | def main(def) -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [18:11 - 18:14] +CST Stack: + {Node identifier (17, 10) - (17, 13)} + {Node parameters (17, 8) - (17, 15)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main(def) -> int: ++def main( def ) -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +334. Input. char of interest: 'ef main() def -> in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() def -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:13 - 18:16] +CST Stack: + {Node ERROR (17, 12) - (17, 15)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() def -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +335. Input. char of interest: 'f main() - def > int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() - def > int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() - def > int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +337. Input. char of interest: 'main() -> def int: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> def int: | def main() -> def: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:20 - 18:23] +CST Stack: + {Node ERROR (17, 19) - (17, 22)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [18:16 - 18:19] +CST Stack: + {Node identifier (17, 15) - (17, 18)} + {Node type (17, 15) - (17, 18)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> def: ++def main() -> def int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +338. Input. char of interest: 'ain() -> i def nt: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> i def nt: | def main() -> nt: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:15 - 18:20] +CST Stack: + {Node ERROR (17, 14) - (17, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> nt: ++def main() -> i def nt: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +339. Input. char of interest: 'in() -> in def t: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> in def t: | def main() -> in: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:18 - 18:23] +CST Stack: + {Node ERROR (17, 17) - (17, 22)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [18:15 - 18:17] +CST Stack: + {Node identifier (17, 14) - (17, 16)} + {Node type (17, 14) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> in: ++def main() -> in def t: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +340. Input. char of interest: 'n() -> int def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int def : | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:19 - 18:22] +CST Stack: + {Node ERROR (17, 18) - (17, 21)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int def : + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +341. Input. char of interest: '() -> int: def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: def | def main() -> int: + """DOC_STRING""" | def + somethingelse() | 'DOC_STRING' + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [18:20 - 18:23] +CST Stack: + {Node identifier (17, 19) - (17, 22)} + {Node expression_statement (17, 19) - (17, 22)} + {Node block (17, 19) - (17, 22)} + {Node function_definition (17, 0) - (17, 22)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 19) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,12 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: +- def +-'DOC_STRING' +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++def main() -> int: def ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +346. Input. char of interest: ' int: + def """DO': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + def """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:6 - 19:9] +CST Stack: + {Node ERROR (18, 5) - (18, 8)} + {Node function_definition (17, 0) - (18, 25)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++ def """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +347. Input. char of interest: 'int: + " def ""DOC': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + " def ""DOC_STRING""" | """ def DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """ def DOC_STRING""" ++ " def ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +348. Input. char of interest: 'nt: + "" def "DOC_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + "" def "DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:8 - 19:11] +CST Stack: + {Node ERROR (18, 7) - (18, 10)} + {Node concatenated_string (18, 4) - (18, 25)} + {Node expression_statement (18, 4) - (18, 25)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" ++ "" def "DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +349. Input. char of interest: 't: + """ def DOC_S': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """ def DOC_STRING""" | """ def DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +350. Input. char of interest: ': + """D def OC_ST': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """D def OC_STRING""" | """D def OC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +351. Input. char of interest: ' + """DO def C_STR': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DO def C_STRING""" | """DO def C_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +352. Input. char of interest: ' """DOC def _STRI': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC def _STRING""" | """DOC def _STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +353. Input. char of interest: ' """DOC_ def STRIN': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ def STRING""" | """DOC_ def STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +354. Input. char of interest: ' """DOC_S def TRING': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_S def TRING""" | """DOC_S def TRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +355. Input. char of interest: ' """DOC_ST def RING"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ST def RING""" | """DOC_ST def RING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +356. Input. char of interest: '"""DOC_STR def ING""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STR def ING""" | """DOC_STR def ING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +357. Input. char of interest: '""DOC_STRI def NG"""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRI def NG""" | """DOC_STRI def NG""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +358. Input. char of interest: '"DOC_STRIN def G""" +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIN def G""" | """DOC_STRIN def G""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +359. Input. char of interest: 'DOC_STRING def """ + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING def """ | """DOC_STRING def """ + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +360. Input. char of interest: 'OC_STRING" def "" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING" def "" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:26] +CST Stack: + {Node ERROR (18, 4) - (18, 25)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING" def "" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +361. Input. char of interest: 'C_STRING"" def " + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" def " | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:26] +CST Stack: + {Node ERROR (18, 4) - (18, 25)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" def " + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +362. Input. char of interest: '_STRING""" def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" def | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:25] +CST Stack: + {Node ERROR (18, 4) - (18, 24)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING""" def + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +367. Input. char of interest: 'NG""" + def somet': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + def somethingelse() | 0 + fib(12) | if __name__ == '__main__': + astring = format_a_string() | main() + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:6 - 23:11] +CST Stack: + {Node ERROR (19, 5) - (22, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,6 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- 0 ++ def somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +368. Input. char of interest: 'G""" + s def ometh': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + s def omethingelse() | omethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:10] +CST Stack: + {Node ERROR (19, 4) - (19, 9)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- omethingelse() ++ s def omethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +369. Input. char of interest: '""" + so def methi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + so def methingelse() | methingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:11] +CST Stack: + {Node ERROR (19, 4) - (19, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- methingelse() ++ so def methingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +370. Input. char of interest: '"" + som def ethin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + som def ethingelse() | ethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:12] +CST Stack: + {Node ERROR (19, 4) - (19, 11)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ethingelse() ++ som def ethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +371. Input. char of interest: '" + some def thing': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + some def thingelse() | thingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:13] +CST Stack: + {Node ERROR (19, 4) - (19, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- thingelse() ++ some def thingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +372. Input. char of interest: ' + somet def hinge': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somet def hingelse() | hingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:14] +CST Stack: + {Node ERROR (19, 4) - (19, 13)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- hingelse() ++ somet def hingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +373. Input. char of interest: ' someth def ingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + someth def ingelse() | ingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:15] +CST Stack: + {Node ERROR (19, 4) - (19, 14)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ingelse() ++ someth def ingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +374. Input. char of interest: ' somethi def ngels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethi def ngelse() | ngelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:16] +CST Stack: + {Node ERROR (19, 4) - (19, 15)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ngelse() ++ somethi def ngelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +375. Input. char of interest: ' somethin def gelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethin def gelse() | gelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:17] +CST Stack: + {Node ERROR (19, 4) - (19, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- gelse() ++ somethin def gelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +376. Input. char of interest: ' something def else(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + something def else() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 21:12] +CST Stack: + {Node ERROR (19, 4) - (20, 11)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,7 +17,9 @@ + + def main() -> int: + """DOC_STRING""" ++ something def else() ++ fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +377. Input. char of interest: 'somethinge def lse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinge def lse() | lse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:19] +CST Stack: + {Node ERROR (19, 4) - (19, 18)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- lse() ++ somethinge def lse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +378. Input. char of interest: 'omethingel def se() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingel def se() | se() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:20] +CST Stack: + {Node ERROR (19, 4) - (19, 19)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- se() ++ somethingel def se() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +379. Input. char of interest: 'methingels def e() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingels def e() | e() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:21] +CST Stack: + {Node ERROR (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- e() ++ somethingels def e() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +380. Input. char of interest: 'ethingelse def () + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse def () | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:19 - 20:22] +CST Stack: + {Node ERROR (19, 18) - (19, 21)} + {Node call (19, 4) - (19, 24)} + {Node expression_statement (19, 4) - (19, 24)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse def () + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +381. Input. char of interest: 'thingelse( def ) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse( def ) | somethingelse(def) + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [20:20 - 20:23] +CST Stack: + {Node identifier (19, 19) - (19, 22)} + {Node argument_list (19, 17) - (19, 24)} + {Node call (19, 4) - (19, 24)} + {Node expression_statement (19, 4) - (19, 24)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 20) +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse(def) ++ somethingelse( def ) + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +382. Input. char of interest: 'hingelse() def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() def | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:24] +CST Stack: + {Node ERROR (19, 4) - (19, 23)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,8 +17,9 @@ + + def main() -> int: + """DOC_STRING""" ++ somethingelse() def + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +387. Input. char of interest: 'lse() + def fib(1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + def fib(12) | 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:6 - 23:11] +CST Stack: + {Node ERROR (20, 5) - (22, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,6 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- 0 ++ def fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +388. Input. char of interest: 'se() + f def ib(12': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + f def ib(12) | ib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:10] +CST Stack: + {Node ERROR (20, 4) - (20, 9)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- ib(12) ++ f def ib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +389. Input. char of interest: 'e() + fi def b(12)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fi def b(12) | b(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:11] +CST Stack: + {Node ERROR (20, 4) - (20, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- b(12) ++ fi def b(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +390. Input. char of interest: '() + fib def (12) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib def (12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:9 - 21:12] +CST Stack: + {Node ERROR (20, 8) - (20, 11)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib def (12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +391. Input. char of interest: ') + fib( def 12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib( def 12) | fib(def) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [21:14 - 21:16] +CST Stack: + {Node ERROR (20, 13) - (20, 15)} + {Node argument_list (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [21:10 - 21:13] +CST Stack: + {Node identifier (20, 9) - (20, 12)} + {Node argument_list (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 21) +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(def) ++ fib( def 12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +392. Input. char of interest: ' + fib(1 def 2) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(1 def 2) | fib(1) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:11 - 21:16] +CST Stack: + {Node ERROR (20, 10) - (20, 15)} + {Node argument_list (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(1) ++ fib(1 def 2) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +393. Input. char of interest: ' fib(12 def ) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12 def ) | fib(def) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [21:9 - 21:11] +CST Stack: + {Node ERROR (20, 8) - (20, 10)} + {Node argument_list (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [21:12 - 21:15] +CST Stack: + {Node identifier (20, 11) - (20, 14)} + {Node argument_list (20, 7) - (20, 16)} + {Node call (20, 4) - (20, 16)} + {Node expression_statement (20, 4) - (20, 16)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 21) +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(def) ++ fib(12 def ) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +394. Input. char of interest: ' fib(12) def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) def | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:16] +CST Stack: + {Node ERROR (20, 4) - (20, 15)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,7 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() ++ fib(12) def + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +399. Input. char of interest: 'b(12) + def astri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + def astring = format_a_string() | 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:6 - 23:11] +CST Stack: + {Node ERROR (21, 5) - (22, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,6 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- 0 ++ def astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +400. Input. char of interest: '(12) + a def strin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + a def string = format_a_string() | string = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:10] +CST Stack: + {Node ERROR (21, 4) - (21, 9)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- string = format_a_string() ++ a def string = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +401. Input. char of interest: '12) + as def tring': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + as def tring = format_a_string() | tring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:11] +CST Stack: + {Node ERROR (21, 4) - (21, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- tring = format_a_string() ++ as def tring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +402. Input. char of interest: '2) + ast def ring ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + ast def ring = format_a_string() | ring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:12] +CST Stack: + {Node ERROR (21, 4) - (21, 11)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ring = format_a_string() ++ ast def ring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +403. Input. char of interest: ') + astr def ing =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astr def ing = format_a_string() | ing = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:13] +CST Stack: + {Node ERROR (21, 4) - (21, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ing = format_a_string() ++ astr def ing = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +404. Input. char of interest: ' + astri def ng = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astri def ng = format_a_string() | ng = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:14] +CST Stack: + {Node ERROR (21, 4) - (21, 13)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ng = format_a_string() ++ astri def ng = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +405. Input. char of interest: ' astrin def g = f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrin def g = format_a_string() | g = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:15] +CST Stack: + {Node ERROR (21, 4) - (21, 14)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- g = format_a_string() ++ astrin def g = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +407. Input. char of interest: ' astring def = for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring def = format_a_string() | format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:19] +CST Stack: + {Node ERROR (21, 4) - (21, 18)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- format_a_string() ++ astring def = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +409. Input. char of interest: 'astring = def forma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = def format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:16 - 22:19] +CST Stack: + {Node ERROR (21, 15) - (21, 18)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = def format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +410. Input. char of interest: 'string = f def ormat': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = f def ormat_a_string() | astring = ormat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:20] +CST Stack: + {Node ERROR (21, 14) - (21, 19)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = ormat_a_string() ++ astring = f def ormat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +411. Input. char of interest: 'tring = fo def rmat_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = fo def rmat_a_string() | astring = rmat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:21] +CST Stack: + {Node ERROR (21, 14) - (21, 20)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = rmat_a_string() ++ astring = fo def rmat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +412. Input. char of interest: 'ring = for def mat_a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = for def mat_a_string() | astring = mat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:22] +CST Stack: + {Node ERROR (21, 14) - (21, 21)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = mat_a_string() ++ astring = for def mat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +413. Input. char of interest: 'ing = form def at_a_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = form def at_a_string() | astring = at_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:23] +CST Stack: + {Node ERROR (21, 14) - (21, 22)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = at_a_string() ++ astring = form def at_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +414. Input. char of interest: 'ng = forma def t_a_s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forma def t_a_string() | astring = t_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:24] +CST Stack: + {Node ERROR (21, 14) - (21, 23)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = t_a_string() ++ astring = forma def t_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +415. Input. char of interest: 'g = format def _a_st': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format def _a_string() | astring = _a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:25] +CST Stack: + {Node ERROR (21, 14) - (21, 24)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = _a_string() ++ astring = format def _a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +416. Input. char of interest: ' = format_ def a_str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_ def a_string() | astring = a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:26] +CST Stack: + {Node ERROR (21, 14) - (21, 25)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = a_string() ++ astring = format_ def a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +417. Input. char of interest: '= format_a def _stri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a def _string() | astring = format_a() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:24 - 22:35] +CST Stack: + {Node ERROR (21, 23) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a() ++ astring = format_a def _string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +418. Input. char of interest: ' format_a_ def strin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_ def string() | astring = format_a_() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:25 - 22:35] +CST Stack: + {Node ERROR (21, 24) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_() ++ astring = format_a_ def string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +419. Input. char of interest: 'format_a_s def tring': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_s def tring() | astring = format_a_s() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:26 - 22:35] +CST Stack: + {Node ERROR (21, 25) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_s() ++ astring = format_a_s def tring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +420. Input. char of interest: 'ormat_a_st def ring(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_st def ring() | astring = format_a_st() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:27 - 22:35] +CST Stack: + {Node ERROR (21, 26) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_st() ++ astring = format_a_st def ring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +421. Input. char of interest: 'rmat_a_str def ing()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_str def ing() | astring = format_a_str() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:28 - 22:35] +CST Stack: + {Node ERROR (21, 27) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_str() ++ astring = format_a_str def ing() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +422. Input. char of interest: 'mat_a_stri def ng() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_stri def ng() | astring = format_a_stri() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:29 - 22:35] +CST Stack: + {Node ERROR (21, 28) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_stri() ++ astring = format_a_stri def ng() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +423. Input. char of interest: 'at_a_strin def g() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strin def g() | astring = format_a_strin() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:30 - 22:35] +CST Stack: + {Node ERROR (21, 29) - (21, 34)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_strin() ++ astring = format_a_strin def g() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +424. Input. char of interest: 't_a_string def () + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string def () | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:31 - 22:34] +CST Stack: + {Node ERROR (21, 30) - (21, 33)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string def () + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +425. Input. char of interest: '_a_string( def ) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string( def ) | astring = format_a_string(def) + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [22:32 - 22:35] +CST Stack: + {Node identifier (21, 31) - (21, 34)} + {Node argument_list (21, 29) - (21, 36)} + {Node call (21, 14) - (21, 36)} + {Node assignment (21, 4) - (21, 36)} + {Node expression_statement (21, 4) - (21, 36)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 22) +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string(def) ++ astring = format_a_string( def ) + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +426. Input. char of interest: 'a_string() def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() def | astring = def + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [22:15 - 22:32] +CST Stack: + {Node ERROR (21, 14) - (21, 31)} + {Node assignment (21, 4) - (21, 35)} + {Node expression_statement (21, 4) - (21, 35)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [22:33 - 22:36] +CST Stack: + {Node identifier (21, 32) - (21, 35)} + {Node assignment (21, 4) - (21, 35)} + {Node expression_statement (21, 4) - (21, 35)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 22) +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = def ++ astring = format_a_string() def + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +431. Input. char of interest: 'ing() + def retur': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + def return 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:6 - 23:16] +CST Stack: + {Node ERROR (22, 5) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ def return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +432. Input. char of interest: 'ng() + r def eturn': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + r def eturn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:16] +CST Stack: + {Node ERROR (22, 4) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ r def eturn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +433. Input. char of interest: 'g() + re def turn ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + re def turn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:16] +CST Stack: + {Node ERROR (22, 4) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ re def turn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +434. Input. char of interest: '() + ret def urn 0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + ret def urn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:16] +CST Stack: + {Node ERROR (22, 4) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ ret def urn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +435. Input. char of interest: ') + retu def rn 0 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retu def rn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:16] +CST Stack: + {Node ERROR (22, 4) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retu def rn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +436. Input. char of interest: ' + retur def n 0 +i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retur def n 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:16] +CST Stack: + {Node ERROR (22, 4) - (22, 15)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retur def n 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +438. Input. char of interest: ' return def 0 +if ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return def 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:13 - 23:16] +CST Stack: + {Node ERROR (22, 12) - (22, 15)} + {Node return_statement (22, 4) - (22, 17)} + {Node block (18, 4) - (22, 17)} + {Node function_definition (17, 0) - (22, 17)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ return def 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +439. Input. char of interest: ' return 0 def +if _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 def | return def +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [23:12 - 23:13] +CST Stack: + {Node ERROR (22, 11) - (22, 12)} + {Node return_statement (22, 4) - (22, 16)} + {Node block (18, 4) - (22, 16)} + {Node function_definition (17, 0) - (22, 16)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [23:14 - 23:17] +CST Stack: + {Node identifier (22, 13) - (22, 16)} + {Node return_statement (22, 4) - (22, 16)} + {Node block (18, 4) - (22, 16)} + {Node function_definition (17, 0) - (22, 16)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 23) +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return def ++ return 0 def + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +440. Input. char of interest: ' return 0 + def if __': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | + def if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++ def if __name__ == '__main__': ++ main() + + +=============================================================================== +441. Input. char of interest: 'return 0 +i def f __n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +i def f __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++i def f __name__ == '__main__': ++ main() + + +=============================================================================== +443. Input. char of interest: 'turn 0 +if def __nam': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if def __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:5 - 24:8] +CST Stack: + {Node ERROR (23, 4) - (23, 7)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if def __name__ == '__main__': ++ main() + + +=============================================================================== +444. Input. char of interest: 'urn 0 +if _ def _name': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _ def _name__ == '__main__': | if _name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:9] +CST Stack: + {Node ERROR (23, 3) - (23, 8)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if _name__ == '__main__': +- main()+if _ def _name__ == '__main__': ++ main() + + +=============================================================================== +445. Input. char of interest: 'rn 0 +if __ def name_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __ def name__ == '__main__': | if name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:10] +CST Stack: + {Node ERROR (23, 3) - (23, 9)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if name__ == '__main__': +- main()+if __ def name__ == '__main__': ++ main() + + +=============================================================================== +446. Input. char of interest: 'n 0 +if __n def ame__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __n def ame__ == '__main__': | if ame__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:11] +CST Stack: + {Node ERROR (23, 3) - (23, 10)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if ame__ == '__main__': +- main()+if __n def ame__ == '__main__': ++ main() + + +=============================================================================== +447. Input. char of interest: ' 0 +if __na def me__ ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __na def me__ == '__main__': | if me__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:12] +CST Stack: + {Node ERROR (23, 3) - (23, 11)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if me__ == '__main__': +- main()+if __na def me__ == '__main__': ++ main() + + +=============================================================================== +448. Input. char of interest: '0 +if __nam def e__ =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nam def e__ == '__main__': | if __nam == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:10 - 24:17] +CST Stack: + {Node ERROR (23, 9) - (23, 16)} + {Node comparison_operator (23, 3) - (23, 30)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __nam == '__main__': +- main()+if __nam def e__ == '__main__': ++ main() + + +=============================================================================== +449. Input. char of interest: ' +if __name def __ ==': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name def __ == '__main__': | if __name == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:11 - 24:17] +CST Stack: + {Node ERROR (23, 10) - (23, 16)} + {Node comparison_operator (23, 3) - (23, 30)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name == '__main__': +- main()+if __name def __ == '__main__': ++ main() + + +=============================================================================== +450. Input. char of interest: 'if __name_ def _ == ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ def _ == '__main__': | if __name_ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:12 - 24:17] +CST Stack: + {Node ERROR (23, 11) - (23, 16)} + {Node comparison_operator (23, 3) - (23, 30)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name_ == '__main__': +- main()+if __name_ def _ == '__main__': ++ main() + + +=============================================================================== +452. Input. char of interest: ' __name__ def == '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ def == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:14 - 24:17] +CST Stack: + {Node ERROR (23, 13) - (23, 16)} + {Node comparison_operator (23, 3) - (23, 30)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ def == '__main__': ++ main() + + +=============================================================================== +453. Input. char of interest: '__name__ = def = '__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = def = '__main__': | if '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:20] +CST Stack: + {Node ERROR (23, 3) - (23, 19)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if '__main__': +- main()+if __name__ = def = '__main__': ++ main() + + +=============================================================================== +455. Input. char of interest: 'name__ == def '__ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == def '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:17 - 24:20] +CST Stack: + {Node ERROR (23, 16) - (23, 19)} + {Node comparison_operator (23, 3) - (23, 30)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == def '__main__': ++ main() + + +=============================================================================== +456. Input. char of interest: 'ame__ == ' def __mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == ' def __main__': | if __name__ == ' def __main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == ' def __main__': +- main()+ main() + + +=============================================================================== +457. Input. char of interest: 'me__ == '_ def _main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_ def _main__': | if __name__ == '_ def _main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '_ def _main__': +- main()+ main() + + +=============================================================================== +458. Input. char of interest: 'e__ == '__ def main_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ def main__': | if __name__ == '__ def main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ def main__': +- main()+ main() + + +=============================================================================== +459. Input. char of interest: '__ == '__m def ain__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__m def ain__': | if __name__ == '__m def ain__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__m def ain__': +- main()+ main() + + +=============================================================================== +460. Input. char of interest: '_ == '__ma def in__'': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ma def in__': | if __name__ == '__ma def in__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ma def in__': +- main()+ main() + + +=============================================================================== +461. Input. char of interest: ' == '__mai def n__':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__mai def n__': | if __name__ == '__mai def n__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__mai def n__': +- main()+ main() + + +=============================================================================== +462. Input. char of interest: '== '__main def __': +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main def __': | if __name__ == '__main def __': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main def __': +- main()+ main() + + +=============================================================================== +463. Input. char of interest: '= '__main_ def _': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_ def _': | if __name__ == '__main_ def _': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main_ def _': +- main()+ main() + + +=============================================================================== +464. Input. char of interest: ' '__main__ def ': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__ def ': | if __name__ == '__main__ def ': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__ def ': +- main()+ main() + + +=============================================================================== +465. Input. char of interest: ''__main__' def : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__' def : | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:27 - 24:30] +CST Stack: + {Node ERROR (23, 26) - (23, 29)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__' def : ++ main() + + +=============================================================================== +466. Input. char of interest: '__main__': def + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': def | if __name__ == '__main__': + main() | def + | main() + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [24:28 - 24:31] +CST Stack: + {Node identifier (23, 27) - (23, 30)} + {Node expression_statement (23, 27) - (23, 30)} + {Node block (23, 27) - (23, 30)} + {Node if_statement (23, 0) - (23, 30)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 25) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,6 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- def +-main()+if __name__ == '__main__': def ++ main() + + +=============================================================================== +471. Input. char of interest: 'n__': + def main(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + def main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:6 - 25:16] +CST Stack: + {Node ERROR (24, 5) - (24, 15)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 24 (, line 24) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,4 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__':+if __name__ == '__main__': ++ def main() + + +=============================================================================== +472. Input. char of interest: '__': + m def ain()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + m def ain() | ain() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:10] +CST Stack: + {Node ERROR (24, 4) - (24, 9)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ain()+ m def ain() + + +=============================================================================== +473. Input. char of interest: '_': + ma def in() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + ma def in() | ma in () + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:8 - 25:11] +CST Stack: + {Node ERROR (24, 7) - (24, 10)} + {Node comparison_operator (24, 4) - (24, 15)} + {Node expression_statement (24, 4) - (24, 15)} + {Node block (24, 4) - (24, 15)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ma in ()+ ma def in() + + +=============================================================================== +474. Input. char of interest: '': + mai def n() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + mai def n() | n() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:12] +CST Stack: + {Node ERROR (24, 4) - (24, 11)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- n()+ mai def n() + + +=============================================================================== +475. Input. char of interest: ': + main def () +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main def () | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:10 - 25:13] +CST Stack: + {Node ERROR (24, 9) - (24, 12)} + {Node call (24, 4) - (24, 15)} + {Node expression_statement (24, 4) - (24, 15)} + {Node block (24, 4) - (24, 15)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main def () + + +=============================================================================== +476. Input. char of interest: ' + main( def ) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main( def ) | main(def) + | + +1 Recoverable error detected: +SyntaxError: keyword: "def" cannot be used as identifier at [25:11 - 25:14] +CST Stack: + {Node identifier (24, 10) - (24, 13)} + {Node argument_list (24, 8) - (24, 15)} + {Node call (24, 4) - (24, 15)} + {Node expression_statement (24, 4) - (24, 15)} + {Node block (24, 4) - (24, 15)} + {Node if_statement (23, 0) - (24, 15)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 25) +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main(def)+ main( def ) + + +=============================================================================== +477. Input. char of interest: ' main() def +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() def | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:15] +CST Stack: + {Node ERROR (24, 4) - (24, 14)} + {Node if_statement (23, 0) - (24, 14)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 24 (, line 24) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,4 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__':+if __name__ == '__main__': ++ main() def + + +=============================================================================== diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_whitespace._expected_results/Simple-broad-case_expected_results b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_whitespace._expected_results/Simple-broad-case_expected_results new file mode 100644 index 00000000000..e661cb4a9a6 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest.insert_whitespace._expected_results/Simple-broad-case_expected_results @@ -0,0 +1,19337 @@ +@generated + +Errpy makes empty AST (weird) with input prior to and including: +1.->de<- + +2.->def<- + +87.-> inset = a in {0, 1} + if<- + +130.->== 1: + return 1 + eli<- + +208.->rn fib(a - 1) + fib(a - 2) + +de<- + +209.->n fib(a - 1) + fib(a - 2) + +def<- + +239.-> somethingelse(): + pass + +de<- + +240.->somethingelse(): + pass + +def<- + +324.->join([x for x in astring]) + +de<- + +325.->oin([x for x in astring]) + +def<- + +441.->mat_a_string() + return 0 +if<- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Input. char of interest: ' def fib(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- + def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++ def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +1. Input. char of interest: 'd ef fib(a:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +d ef fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++d ef fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +2. Input. char of interest: 'de f fib(a: ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +de f fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++de f fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +4. Input. char of interest: 'def fib(a: in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +5. Input. char of interest: 'def f ib(a: int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def f ib(a: int) -> int: | def ib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:5 - 1:6] +CST Stack: + {Node ERROR (0, 4) - (0, 5)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def ib(a: int) -> int: ++def f ib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +6. Input. char of interest: 'def fi b(a: int)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fi b(a: int) -> int: | def fi(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:8 - 1:9] +CST Stack: + {Node ERROR (0, 7) - (0, 8)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fi(a: int) -> int: ++def fi b(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +7. Input. char of interest: 'def fib (a: int) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib (a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib (a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +8. Input. char of interest: 'def fib( a: int) -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib( a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib( a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +9. Input. char of interest: 'def fib(a : int) ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a : int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a : int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +11. Input. char of interest: 'ef fib(a: int) -> i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +12. Input. char of interest: 'f fib(a: i nt) -> in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: i nt) -> int: | def fib(a: nt) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:12 - 1:13] +CST Stack: + {Node ERROR (0, 11) - (0, 12)} + {Node typed_parameter (0, 8) - (0, 15)} + {Node parameters (0, 7) - (0, 16)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: nt) -> int: ++def fib(a: i nt) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +13. Input. char of interest: ' fib(a: in t) -> int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: in t) -> int: | def fib(a: in) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:15 - 1:16] +CST Stack: + {Node ERROR (0, 14) - (0, 15)} + {Node parameters (0, 7) - (0, 16)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:12 - 1:14] +CST Stack: + {Node identifier (0, 11) - (0, 13)} + {Node type (0, 11) - (0, 13)} + {Node typed_parameter (0, 8) - (0, 13)} + {Node parameters (0, 7) - (0, 16)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: in) -> int: ++def fib(a: in t) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +14. Input. char of interest: 'fib(a: int ) -> int:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int ) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int ) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +16. Input. char of interest: 'b(a: int) -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +17. Input. char of interest: '(a: int) - > int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) - > int: | def fib(a: int): + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:17 - 1:24] +CST Stack: + {Node ERROR (0, 16) - (0, 23)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int): ++def fib(a: int) - > int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +19. Input. char of interest: ': int) -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +20. Input. char of interest: ' int) -> i nt: + t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> i nt: | def fib(a: int) -> nt: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:20 - 1:21] +CST Stack: + {Node ERROR (0, 19) - (0, 20)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> nt: ++def fib(a: int) -> i nt: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +21. Input. char of interest: 'int) -> in t: + tm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> in t: | def fib(a: int) -> in: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [1:23 - 1:24] +CST Stack: + {Node ERROR (0, 22) - (0, 23)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [1:20 - 1:22] +CST Stack: + {Node identifier (0, 19) - (0, 21)} + {Node type (0, 19) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> in: ++def fib(a: int) -> in t: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +22. Input. char of interest: 'nt) -> int : + tmp': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int : | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int : + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +23. Input. char of interest: 't) -> int: + tmp ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int) -> int: ++def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +28. Input. char of interest: ' int: + tmp = (a,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,13 +1,13 @@ + def fib(a: int) -> int: +- tmp = (a, a) +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +29. Input. char of interest: 'int: + t mp = (a, ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + t mp = (a, a) | mp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:6] +CST Stack: + {Node ERROR (1, 4) - (1, 5)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- mp = (a, a) ++ t mp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +30. Input. char of interest: 'nt: + tm p = (a, a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tm p = (a, a) | p = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:7] +CST Stack: + {Node ERROR (1, 4) - (1, 6)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- p = (a, a) ++ tm p = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +32. Input. char of interest: ': + tmp = (a, a) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +34. Input. char of interest: ' tmp = (a, a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +35. Input. char of interest: ' tmp = ( a, a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = ( a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = ( a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +36. Input. char of interest: ' tmp = (a , a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a , a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a , a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +38. Input. char of interest: 'tmp = (a, a) + ba': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +39. Input. char of interest: 'mp = (a, a ) + ba,': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a ) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a, a ) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +40. Input. char of interest: 'p = (a, a) + ba, ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a, a) ++ tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +45. Input. char of interest: 'a, a) + ba, bb = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +46. Input. char of interest: ', a) + b a, bb = t': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + b a, bb = tmp | a, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:6] +CST Stack: + {Node ERROR (2, 4) - (2, 5)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- a, bb = tmp ++ b a, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +47. Input. char of interest: ' a) + ba , bb = tm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba , bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba , bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +49. Input. char of interest: ') + ba, bb = tmp +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +50. Input. char of interest: ' + ba, b b = tmp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b b = tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:14] +CST Stack: + {Node ERROR (2, 8) - (2, 13)} + {Node expression_statement (2, 4) - (2, 17)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, b b = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +52. Input. char of interest: ' ba, bb = tmp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +54. Input. char of interest: ' ba, bb = tmp + i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +55. Input. char of interest: 'ba, bb = t mp + in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = t mp | ba, bb = mp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:15] +CST Stack: + {Node ERROR (2, 13) - (2, 14)} + {Node assignment (2, 4) - (2, 17)} + {Node expression_statement (2, 4) - (2, 17)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = mp ++ ba, bb = t mp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +56. Input. char of interest: 'a, bb = tm p + ins': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tm p | ba, bb = p + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:16] +CST Stack: + {Node ERROR (2, 13) - (2, 15)} + {Node assignment (2, 4) - (2, 17)} + {Node expression_statement (2, 4) - (2, 17)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = p ++ ba, bb = tm p + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +57. Input. char of interest: ', bb = tmp + inse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +62. Input. char of interest: '= tmp + inset = a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +63. Input. char of interest: ' tmp + i nset = a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + i nset = a in {0, 1} | nset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:6] +CST Stack: + {Node ERROR (3, 4) - (3, 5)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- nset = a in {0, 1} ++ i nset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +64. Input. char of interest: 'tmp + in set = a i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + in set = a in {0, 1} | set = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:7] +CST Stack: + {Node ERROR (3, 4) - (3, 6)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- set = a in {0, 1} ++ in set = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +65. Input. char of interest: 'mp + ins et = a in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + ins et = a in {0, 1} | et = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:8] +CST Stack: + {Node ERROR (3, 4) - (3, 7)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- et = a in {0, 1} ++ ins et = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +66. Input. char of interest: 'p + inse t = a in ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inse t = a in {0, 1} | t = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:9] +CST Stack: + {Node ERROR (3, 4) - (3, 8)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- t = a in {0, 1} ++ inse t = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +68. Input. char of interest: ' inset = a in {0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +70. Input. char of interest: ' inset = a in {0, ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +72. Input. char of interest: 'inset = a in {0, 1}': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +73. Input. char of interest: 'nset = a i n {0, 1} +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a i n {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:18] +CST Stack: + {Node ERROR (3, 12) - (3, 17)} + {Node assignment (3, 4) - (3, 24)} + {Node expression_statement (3, 4) - (3, 24)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = a i n {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +75. Input. char of interest: 'et = a in {0, 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +76. Input. char of interest: 't = a in { 0, 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in { 0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in { 0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +77. Input. char of interest: ' = a in {0 , 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0 , 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0 , 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +79. Input. char of interest: ' a in {0, 1} + if': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +80. Input. char of interest: 'a in {0, 1 } + if ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1 } | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1 } + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +81. Input. char of interest: ' in {0, 1} + if a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1} ++ inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +86. Input. char of interest: '0, 1} + if a <= 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +87. Input. char of interest: ', 1} + i f a <= 2 ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + i f a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ i f a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +89. Input. char of interest: '1} + if a <= 2 or': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +91. Input. char of interest: ' + if a <= 2 or a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +92. Input. char of interest: ' if a < = 2 or a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a < = 2 or a == 1: | if a < 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:12 - 5:13] +CST Stack: + {Node ERROR (4, 11) - (4, 12)} + {Node comparison_operator (4, 7) - (4, 14)} + {Node boolean_operator (4, 7) - (4, 24)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a < 2 or a == 1: ++ if a < = 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +94. Input. char of interest: ' if a <= 2 or a ==': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +96. Input. char of interest: 'if a <= 2 or a == 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +97. Input. char of interest: 'f a <= 2 o r a == 1:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 o r a == 1: | if a <= 2 == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:15 - 5:20] +CST Stack: + {Node ERROR (4, 14) - (4, 19)} + {Node comparison_operator (4, 7) - (4, 24)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 == 1: ++ if a <= 2 o r a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +99. Input. char of interest: 'a <= 2 or a == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +101. Input. char of interest: '<= 2 or a == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +102. Input. char of interest: '= 2 or a = = 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = = 1: | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:25] +CST Stack: + {Node ERROR (4, 19) - (4, 24)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a = = 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +104. Input. char of interest: '2 or a == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +105. Input. char of interest: ' or a == 1 : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1 : | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1 : + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +106. Input. char of interest: 'or a == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: ++ if a <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +115. Input. char of interest: ': + return 1 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ return 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +116. Input. char of interest: ' + r eturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + r eturn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:16] +CST Stack: + {Node ERROR (5, 8) - (5, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ r eturn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +117. Input. char of interest: ' re turn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + re turn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:16] +CST Stack: + {Node ERROR (5, 8) - (5, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ re turn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +118. Input. char of interest: ' ret urn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + ret urn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:16] +CST Stack: + {Node ERROR (5, 8) - (5, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ ret urn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +119. Input. char of interest: ' retu rn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retu rn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:16] +CST Stack: + {Node ERROR (5, 8) - (5, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retu rn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +120. Input. char of interest: ' retur n 1 + e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retur n 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:16] +CST Stack: + {Node ERROR (5, 8) - (5, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retur n 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +122. Input. char of interest: ' return 1 + eli': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ return 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +123. Input. char of interest: ' return 1 + elif': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1 ++ return 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +128. Input. char of interest: 'urn 1 + elif inse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +129. Input. char of interest: 'rn 1 + e lif inset': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + e lif inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:10] +CST Stack: + {Node ERROR (6, 4) - (6, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 10) - (7, 16)} + {Node expression_statement (6, 10) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ e lif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +130. Input. char of interest: 'n 1 + el if inset:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + el if inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ el if inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +131. Input. char of interest: ' 1 + eli f inset: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + eli f inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:10] +CST Stack: + {Node ERROR (6, 4) - (6, 9)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 10) - (7, 16)} + {Node expression_statement (6, 10) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ eli f inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +133. Input. char of interest: ' + elif inset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +134. Input. char of interest: ' elif i nset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif i nset: | elif nset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:11] +CST Stack: + {Node ERROR (6, 9) - (6, 10)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif nset: ++ elif i nset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +135. Input. char of interest: ' elif in set: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif in set: | elif set: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:10 - 7:12] +CST Stack: + {Node ERROR (6, 9) - (6, 11)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif set: ++ elif in set: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +136. Input. char of interest: ' elif ins et: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif ins et: | elif ins: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:14 - 7:16] +CST Stack: + {Node ERROR (6, 13) - (6, 15)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif ins: ++ elif ins et: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +137. Input. char of interest: ' elif inse t: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inse t: | elif inse: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:15 - 7:16] +CST Stack: + {Node ERROR (6, 14) - (6, 15)} + {Node elif_clause (6, 4) - (7, 16)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inse: ++ elif inse t: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +138. Input. char of interest: 'elif inset : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset : | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset : + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +139. Input. char of interest: 'lif inset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +148. Input. char of interest: ': + return 1 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +149. Input. char of interest: ' + r eturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + r eturn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:16] +CST Stack: + {Node ERROR (7, 8) - (7, 15)} + {Node elif_clause (6, 4) - (7, 17)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ r eturn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +150. Input. char of interest: ' re turn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + re turn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:16] +CST Stack: + {Node ERROR (7, 8) - (7, 15)} + {Node elif_clause (6, 4) - (7, 17)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ re turn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +151. Input. char of interest: ' ret urn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + ret urn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:16] +CST Stack: + {Node ERROR (7, 8) - (7, 15)} + {Node elif_clause (6, 4) - (7, 17)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ ret urn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +152. Input. char of interest: ' retu rn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retu rn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:16] +CST Stack: + {Node ERROR (7, 8) - (7, 15)} + {Node elif_clause (6, 4) - (7, 17)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retu rn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +153. Input. char of interest: ' retur n 1 + e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retur n 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:16] +CST Stack: + {Node ERROR (7, 8) - (7, 15)} + {Node elif_clause (6, 4) - (7, 17)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retur n 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +155. Input. char of interest: ' return 1 + els': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +156. Input. char of interest: ' return 1 + else': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 ++ return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +161. Input. char of interest: 'urn 1 + else: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,7 @@ + return 1 + elif inset: + return 1 +- else: ++ else: + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +162. Input. char of interest: 'rn 1 + e lse: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + e lse: | lse: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:6] +CST Stack: + {Node ERROR (8, 4) - (8, 5)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 6) - (9, 38)} + {Node expression_statement (8, 6) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 6) - (9, 38)} + {Node expression_statement (8, 6) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- lse: return(a - 1) + fib(a - 2) ++ e lse: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +163. Input. char of interest: 'n 1 + el se: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + el se: | se: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:5 - 9:7] +CST Stack: + {Node ERROR (8, 4) - (8, 6)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 7) - (9, 38)} + {Node expression_statement (8, 7) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 7) - (9, 38)} + {Node expression_statement (8, 7) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- se: return(a - 1) + fib(a - 2) ++ el se: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +164. Input. char of interest: ' 1 + els e: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + els e: | els: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:9 - 9:10] +CST Stack: + {Node ERROR (8, 8) - (8, 9)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- els: return(a - 1) + fib(a - 2) ++ els e: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +165. Input. char of interest: '1 + else : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else : | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,7 @@ + return 1 + elif inset: + return 1 +- else: ++ else : + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +166. Input. char of interest: ' + else: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,7 @@ + return 1 + elif inset: + return 1 +- else: ++ else: + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +175. Input. char of interest: ': + return fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +176. Input. char of interest: ' + r eturn fib': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + r eturn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:16] +CST Stack: + {Node ERROR (9, 8) - (9, 15)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ r eturn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +177. Input. char of interest: ' re turn fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + re turn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:16] +CST Stack: + {Node ERROR (9, 8) - (9, 15)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ re turn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +178. Input. char of interest: ' ret urn fib(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + ret urn fib(a - 1) + fib(a - 2) | fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:16] +CST Stack: + {Node ERROR (9, 8) - (9, 15)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- fib(a - 1) + fib(a - 2) ++ ret urn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +179. Input. char of interest: ' retu rn fib(a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retu rn fib(a - 1) + fib(a - 2) | retu(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:14 - 10:20] +CST Stack: + {Node ERROR (9, 13) - (9, 19)} + {Node call (9, 8) - (9, 26)} + {Node binary_operator (9, 8) - (9, 39)} + {Node expression_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retu(a - 1) + fib(a - 2) ++ retu rn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +180. Input. char of interest: ' retur n fib(a -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retur n fib(a - 1) + fib(a - 2) | retur(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:20] +CST Stack: + {Node ERROR (9, 14) - (9, 19)} + {Node call (9, 8) - (9, 26)} + {Node binary_operator (9, 8) - (9, 39)} + {Node expression_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retur(a - 1) + fib(a - 2) ++ retur n fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +182. Input. char of interest: ' return fib(a - 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +183. Input. char of interest: ' return f ib(a - 1)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return f ib(a - 1) + fib(a - 2) | return ib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:16 - 10:17] +CST Stack: + {Node ERROR (9, 15) - (9, 16)} + {Node return_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return ib(a - 1) + fib(a - 2) ++ return f ib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +184. Input. char of interest: ' return fi b(a - 1) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fi b(a - 1) + fib(a - 2) | return fi(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:19 - 10:20] +CST Stack: + {Node ERROR (9, 18) - (9, 19)} + {Node call (9, 15) - (9, 26)} + {Node binary_operator (9, 15) - (9, 39)} + {Node return_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fi(a - 1) + fib(a - 2) ++ return fi b(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +185. Input. char of interest: 'return fib (a - 1) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib (a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib (a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +186. Input. char of interest: 'eturn fib( a - 1) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib( a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib( a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +188. Input. char of interest: 'urn fib(a - 1) + fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +190. Input. char of interest: 'n fib(a - 1) + fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +191. Input. char of interest: ' fib(a - 1 ) + fib(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1 ) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1 ) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +193. Input. char of interest: 'ib(a - 1) + fib(a -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +195. Input. char of interest: '(a - 1) + fib(a - 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +196. Input. char of interest: 'a - 1) + f ib(a - 2)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + f ib(a - 2) | return fib(a - 1) + ib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:29 - 10:30] +CST Stack: + {Node ERROR (9, 28) - (9, 29)} + {Node binary_operator (9, 15) - (9, 39)} + {Node return_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + ib(a - 2) ++ return fib(a - 1) + f ib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +197. Input. char of interest: ' - 1) + fi b(a - 2) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fi b(a - 2) | return fib(a - 1) + fi(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:32 - 10:33] +CST Stack: + {Node ERROR (9, 31) - (9, 32)} + {Node call (9, 28) - (9, 39)} + {Node binary_operator (9, 15) - (9, 39)} + {Node return_statement (9, 8) - (9, 39)} + {Node block (9, 8) - (9, 39)} + {Node else_clause (8, 4) - (9, 39)} + {Node if_statement (4, 4) - (9, 39)} + {Node block (1, 4) - (9, 39)} + {Node function_definition (0, 0) - (9, 39)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fi(a - 2) ++ return fib(a - 1) + fi b(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +198. Input. char of interest: '- 1) + fib (a - 2) + +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib (a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib (a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +199. Input. char of interest: ' 1) + fib( a - 2) + +d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib( a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib( a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +201. Input. char of interest: ') + fib(a - 2) + +def': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +203. Input. char of interest: '+ fib(a - 2) + +def s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +204. Input. char of interest: ' fib(a - 2 ) + +def so': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2 ) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2 ) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +205. Input. char of interest: 'fib(a - 2) + +def som': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2) ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +206. Input. char of interest: 'ib(a - 2) + +def some': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,7 +8,7 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) +- ++ + def somethingelse(): + pass + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +207. Input. char of interest: 'b(a - 2) + + def somet': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | + def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++ def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +208. Input. char of interest: '(a - 2) + +d ef someth': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +d ef somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++d ef somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +209. Input. char of interest: 'a - 2) + +de f somethi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +de f somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++de f somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +211. Input. char of interest: '- 2) + +def something': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +212. Input. char of interest: ' 2) + +def s omethinge': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def s omethingelse(): | def omethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:6] +CST Stack: + {Node ERROR (11, 4) - (11, 5)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def omethingelse(): ++def s omethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +213. Input. char of interest: '2) + +def so methingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def so methingelse(): | def methingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:7] +CST Stack: + {Node ERROR (11, 4) - (11, 6)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def methingelse(): ++def so methingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +214. Input. char of interest: ') + +def som ethingels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def som ethingelse(): | def ethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:8] +CST Stack: + {Node ERROR (11, 4) - (11, 7)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ethingelse(): ++def som ethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +215. Input. char of interest: ' + +def some thingelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def some thingelse(): | def thingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:9] +CST Stack: + {Node ERROR (11, 4) - (11, 8)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def thingelse(): ++def some thingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +216. Input. char of interest: ' +def somet hingelse(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somet hingelse(): | def hingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:10] +CST Stack: + {Node ERROR (11, 4) - (11, 9)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def hingelse(): ++def somet hingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +217. Input. char of interest: 'def someth ingelse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def someth ingelse(): | def ingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:5 - 12:11] +CST Stack: + {Node ERROR (11, 4) - (11, 10)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def ingelse(): ++def someth ingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +218. Input. char of interest: 'ef somethi ngelse():': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethi ngelse(): | def somethi(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:13 - 12:19] +CST Stack: + {Node ERROR (11, 12) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethi(): ++def somethi ngelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +219. Input. char of interest: 'f somethin gelse(): +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethin gelse(): | def somethin(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:14 - 12:19] +CST Stack: + {Node ERROR (11, 13) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethin(): ++def somethin gelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +220. Input. char of interest: ' something else(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def something else(): | def something(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:15 - 12:19] +CST Stack: + {Node ERROR (11, 14) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def something(): ++def something else(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +221. Input. char of interest: 'somethinge lse(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinge lse(): | def somethinge(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:16 - 12:19] +CST Stack: + {Node ERROR (11, 15) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethinge(): ++def somethinge lse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +222. Input. char of interest: 'omethingel se(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingel se(): | def somethingel(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:17 - 12:19] +CST Stack: + {Node ERROR (11, 16) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingel(): ++def somethingel se(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +223. Input. char of interest: 'methingels e(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingels e(): | def somethingels(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:18 - 12:19] +CST Stack: + {Node ERROR (11, 17) - (11, 18)} + {Node function_definition (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingels(): ++def somethingels e(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +224. Input. char of interest: 'ethingelse (): + p': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse (): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse (): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +225. Input. char of interest: 'thingelse( ): + pa': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse( ): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse( ): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +226. Input. char of interest: 'hingelse() : + pas': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse() : | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse() : + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +227. Input. char of interest: 'ingelse(): + pass': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +232. Input. char of interest: 'se(): + pass + +def': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass ++ pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +233. Input. char of interest: 'e(): + p ass + +def ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + p ass | ass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:6] +CST Stack: + {Node ERROR (12, 4) - (12, 5)} + {Node function_definition (11, 0) - (12, 9)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ass ++ p ass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +234. Input. char of interest: '(): + pa ss + +def f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pa ss | ss + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:7] +CST Stack: + {Node ERROR (12, 4) - (12, 6)} + {Node function_definition (11, 0) - (12, 9)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- ss ++ pa ss + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +235. Input. char of interest: '): + pas s + +def fo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas s | s + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [13:5 - 13:8] +CST Stack: + {Node ERROR (12, 4) - (12, 7)} + {Node function_definition (11, 0) - (12, 9)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- s ++ pas s + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +236. Input. char of interest: ': + pass + +def for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,7 +10,7 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass ++ pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +237. Input. char of interest: ' + pass + +def form': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,7 +11,7 @@ + + def somethingelse(): + pass +- ++ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +238. Input. char of interest: ' pass + + def forma': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | + def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++ def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +239. Input. char of interest: ' pass + +d ef format': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +d ef format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++d ef format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +240. Input. char of interest: ' pass + +de f format_': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +de f format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++de f format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +242. Input. char of interest: 'pass + +def format_a_': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +243. Input. char of interest: 'ass + +def f ormat_a_s': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def f ormat_a_string(astring: str) -> str: | def ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:6] +CST Stack: + {Node ERROR (14, 4) - (14, 5)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def ormat_a_string(astring: str) -> str: ++def f ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +244. Input. char of interest: 'ss + +def fo rmat_a_st': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def fo rmat_a_string(astring: str) -> str: | def rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:7] +CST Stack: + {Node ERROR (14, 4) - (14, 6)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def rmat_a_string(astring: str) -> str: ++def fo rmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +245. Input. char of interest: 's + +def for mat_a_str': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def for mat_a_string(astring: str) -> str: | def mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:8] +CST Stack: + {Node ERROR (14, 4) - (14, 7)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def mat_a_string(astring: str) -> str: ++def for mat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +246. Input. char of interest: ' + +def form at_a_stri': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def form at_a_string(astring: str) -> str: | def at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:9] +CST Stack: + {Node ERROR (14, 4) - (14, 8)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def at_a_string(astring: str) -> str: ++def form at_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +247. Input. char of interest: ' +def forma t_a_strin': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forma t_a_string(astring: str) -> str: | def t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:10] +CST Stack: + {Node ERROR (14, 4) - (14, 9)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def t_a_string(astring: str) -> str: ++def forma t_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +248. Input. char of interest: 'def format _a_string': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format _a_string(astring: str) -> str: | def _a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:11] +CST Stack: + {Node ERROR (14, 4) - (14, 10)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def _a_string(astring: str) -> str: ++def format _a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +249. Input. char of interest: 'ef format_ a_string(': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_ a_string(astring: str) -> str: | def a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:5 - 15:12] +CST Stack: + {Node ERROR (14, 4) - (14, 11)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def a_string(astring: str) -> str: ++def format_ a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +250. Input. char of interest: 'f format_a _string(a': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a _string(astring: str) -> str: | def format_a(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:14 - 15:21] +CST Stack: + {Node ERROR (14, 13) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a(astring: str) -> str: ++def format_a _string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +251. Input. char of interest: ' format_a_ string(as': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_ string(astring: str) -> str: | def format_a_(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:15 - 15:21] +CST Stack: + {Node ERROR (14, 14) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_(astring: str) -> str: ++def format_a_ string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +252. Input. char of interest: 'format_a_s tring(ast': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_s tring(astring: str) -> str: | def format_a_s(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:16 - 15:21] +CST Stack: + {Node ERROR (14, 15) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_s(astring: str) -> str: ++def format_a_s tring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +253. Input. char of interest: 'ormat_a_st ring(astr': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_st ring(astring: str) -> str: | def format_a_st(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:17 - 15:21] +CST Stack: + {Node ERROR (14, 16) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_st(astring: str) -> str: ++def format_a_st ring(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +254. Input. char of interest: 'rmat_a_str ing(astri': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_str ing(astring: str) -> str: | def format_a_str(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:18 - 15:21] +CST Stack: + {Node ERROR (14, 17) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_str(astring: str) -> str: ++def format_a_str ing(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +255. Input. char of interest: 'mat_a_stri ng(astrin': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_stri ng(astring: str) -> str: | def format_a_stri(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:19 - 15:21] +CST Stack: + {Node ERROR (14, 18) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_stri(astring: str) -> str: ++def format_a_stri ng(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +256. Input. char of interest: 'at_a_strin g(astring': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strin g(astring: str) -> str: | def format_a_strin(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:20 - 15:21] +CST Stack: + {Node ERROR (14, 19) - (14, 20)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_strin(astring: str) -> str: ++def format_a_strin g(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +257. Input. char of interest: 't_a_string (astring:': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string (astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string (astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +258. Input. char of interest: '_a_string( astring: ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string( astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string( astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +259. Input. char of interest: 'a_string(a string: s': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(a string: str) -> str: | def format_a_string(string: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:22] +CST Stack: + {Node ERROR (14, 20) - (14, 21)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(string: str) -> str: ++def format_a_string(a string: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +260. Input. char of interest: '_string(as tring: st': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(as tring: str) -> str: | def format_a_string(tring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:23] +CST Stack: + {Node ERROR (14, 20) - (14, 22)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(tring: str) -> str: ++def format_a_string(as tring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +261. Input. char of interest: 'string(ast ring: str': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(ast ring: str) -> str: | def format_a_string(ring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:21 - 15:24] +CST Stack: + {Node ERROR (14, 20) - (14, 23)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(ring: str) -> str: ++def format_a_string(ast ring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +262. Input. char of interest: 'tring(astr ing: str)': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astr ing: str) -> str: | def format_a_string(astr: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:26 - 15:29] +CST Stack: + {Node ERROR (14, 25) - (14, 28)} + {Node typed_parameter (14, 20) - (14, 33)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astr: str) -> str: ++def format_a_string(astr ing: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +263. Input. char of interest: 'ring(astri ng: str) ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astri ng: str) -> str: | def format_a_string(astri: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:27 - 15:29] +CST Stack: + {Node ERROR (14, 26) - (14, 28)} + {Node typed_parameter (14, 20) - (14, 33)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astri: str) -> str: ++def format_a_string(astri ng: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +264. Input. char of interest: 'ing(astrin g: str) -': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrin g: str) -> str: | def format_a_string(astrin: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:28 - 15:29] +CST Stack: + {Node ERROR (14, 27) - (14, 28)} + {Node typed_parameter (14, 20) - (14, 33)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astrin: str) -> str: ++def format_a_string(astrin g: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +265. Input. char of interest: 'ng(astring : str) ->': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring : str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring : str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +267. Input. char of interest: '(astring: str) -> s': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +268. Input. char of interest: 'astring: s tr) -> st': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: s tr) -> str: | def format_a_string(astring: tr) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:30 - 15:31] +CST Stack: + {Node ERROR (14, 29) - (14, 30)} + {Node typed_parameter (14, 20) - (14, 33)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: tr) -> str: ++def format_a_string(astring: s tr) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +269. Input. char of interest: 'string: st r) -> str': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: st r) -> str: | def format_a_string(astring: st) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:33 - 15:34] +CST Stack: + {Node ERROR (14, 32) - (14, 33)} + {Node parameters (14, 19) - (14, 34)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: st) -> str: ++def format_a_string(astring: st r) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +270. Input. char of interest: 'tring: str ) -> str:': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str ) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str ) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +272. Input. char of interest: 'ing: str) -> str: + ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +273. Input. char of interest: 'ng: str) - > str: + ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) - > str: | def format_a_string(astring: str): + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:35 - 15:42] +CST Stack: + {Node ERROR (14, 34) - (14, 41)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str): ++def format_a_string(astring: str) - > str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +275. Input. char of interest: ': str) -> str: + ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +276. Input. char of interest: ' str) -> s tr: + r': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> s tr: | def format_a_string(astring: str) -> tr: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:38 - 15:39] +CST Stack: + {Node ERROR (14, 37) - (14, 38)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> tr: ++def format_a_string(astring: str) -> s tr: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +277. Input. char of interest: 'str) -> st r: + re': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> st r: | def format_a_string(astring: str) -> st: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:41 - 15:42] +CST Stack: + {Node ERROR (14, 40) - (14, 41)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> st: ++def format_a_string(astring: str) -> st r: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +278. Input. char of interest: 'tr) -> str : + ret': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str : | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str : + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +279. Input. char of interest: 'r) -> str: + retu': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: ++def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +284. Input. char of interest: ' str: + return ',': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +285. Input. char of interest: 'str: + r eturn ','': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + r eturn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:12] +CST Stack: + {Node ERROR (15, 4) - (15, 11)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ r eturn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +286. Input. char of interest: 'tr: + re turn ','.': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + re turn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:12] +CST Stack: + {Node ERROR (15, 4) - (15, 11)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ re turn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +287. Input. char of interest: 'r: + ret urn ','.j': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + ret urn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:12] +CST Stack: + {Node ERROR (15, 4) - (15, 11)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ ret urn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +288. Input. char of interest: ': + retu rn ','.jo': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retu rn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:12] +CST Stack: + {Node ERROR (15, 4) - (15, 11)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retu rn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +289. Input. char of interest: ' + retur n ','.joi': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retur n ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:12] +CST Stack: + {Node ERROR (15, 4) - (15, 11)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retur n ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +291. Input. char of interest: ' return ','.join(': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +292. Input. char of interest: ' return ' ,'.join([': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ' ,'.join([x for x in astring]) | return ' ,'.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +293. Input. char of interest: ' return ', '.join([x': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ', '.join([x for x in astring]) | return ', '.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +294. Input. char of interest: 'return ',' .join([x ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ',' .join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ',' .join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +295. Input. char of interest: 'eturn ','. join([x f': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','. join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','. join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +296. Input. char of interest: 'turn ','.j oin([x fo': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.j oin([x for x in astring]) | return ','.j([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:18 - 16:21] +CST Stack: + {Node ERROR (15, 17) - (15, 20)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.j([x for x in astring]) ++ return ','.j oin([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +297. Input. char of interest: 'urn ','.jo in([x for': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jo in([x for x in astring]) | return ','.jo in [x for x in astring] + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.jo in [x for x in astring] ++ return ','.jo in([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +298. Input. char of interest: 'rn ','.joi n([x for ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.joi n([x for x in astring]) | return ','.joi([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:20 - 16:21] +CST Stack: + {Node ERROR (15, 19) - (15, 20)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.joi([x for x in astring]) ++ return ','.joi n([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +299. Input. char of interest: 'n ','.join ([x for x': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join ([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join ([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +300. Input. char of interest: ' ','.join( [x for x ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join( [x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join( [x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +301. Input. char of interest: '','.join([ x for x i': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([ x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([ x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +303. Input. char of interest: ''.join([x for x in ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +304. Input. char of interest: '.join([x f or x in a': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x f or x in astring]) | return ','.join([f or x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:23] +CST Stack: + {Node ERROR (15, 21) - (15, 22)} + {Node list (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([f or x in astring]) ++ return ','.join([x f or x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +305. Input. char of interest: 'join([x fo r x in as': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fo r x in astring]) | return ','.join([x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:28] +CST Stack: + {Node ERROR (15, 21) - (15, 27)} + {Node list (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x in astring]) ++ return ','.join([x fo r x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +307. Input. char of interest: 'in([x for x in astr': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +309. Input. char of interest: '([x for x in astrin': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +310. Input. char of interest: '[x for x i n astring': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x i n astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:41] +CST Stack: + {Node ERROR (15, 23) - (15, 40)} + {Node list (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for x i n astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +312. Input. char of interest: ' for x in astring])': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +313. Input. char of interest: 'for x in a string]) +': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in a string]) | return ','.join([x for x in string]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:34] +CST Stack: + {Node ERROR (15, 32) - (15, 33)} + {Node for_in_clause (15, 23) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in string]) ++ return ','.join([x for x in a string]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +314. Input. char of interest: 'or x in as tring]) + +': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in as tring]) | return ','.join([x for x in tring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:35] +CST Stack: + {Node ERROR (15, 32) - (15, 34)} + {Node for_in_clause (15, 23) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in tring]) ++ return ','.join([x for x in as tring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +315. Input. char of interest: 'r x in ast ring]) + +d': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in ast ring]) | return ','.join([x for x in ring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:33 - 16:36] +CST Stack: + {Node ERROR (15, 32) - (15, 35)} + {Node for_in_clause (15, 23) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in ring]) ++ return ','.join([x for x in ast ring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +316. Input. char of interest: ' x in astr ing]) + +de': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astr ing]) | return ','.join([x for x in astr]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:38 - 16:41] +CST Stack: + {Node ERROR (15, 37) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astr]) ++ return ','.join([x for x in astr ing]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +317. Input. char of interest: 'x in astri ng]) + +def': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astri ng]) | return ','.join([x for x in astri]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:39 - 16:41] +CST Stack: + {Node ERROR (15, 38) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astri]) ++ return ','.join([x for x in astri ng]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +318. Input. char of interest: ' in astrin g]) + +def ': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrin g]) | return ','.join([x for x in astrin]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:40 - 16:41] +CST Stack: + {Node ERROR (15, 39) - (15, 40)} + {Node list_comprehension (15, 20) - (15, 41)} + {Node argument_list (15, 19) - (15, 42)} + {Node call (15, 11) - (15, 42)} + {Node return_statement (15, 4) - (15, 42)} + {Node block (15, 4) - (15, 42)} + {Node function_definition (14, 0) - (15, 42)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astrin]) ++ return ','.join([x for x in astrin g]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +319. Input. char of interest: 'in astring ]) + +def m': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring ]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring ]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +320. Input. char of interest: 'n astring] ) + +def ma': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring] ) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring] ) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +321. Input. char of interest: ' astring]) + +def mai': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++ return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +322. Input. char of interest: 'astring]) + +def main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,7 +14,7 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +- ++ + def main() -> int: + """DOC_STRING""" + somethingelse() +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +323. Input. char of interest: 'string]) + + def main(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | + def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++ def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +324. Input. char of interest: 'tring]) + +d ef main()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +d ef main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++d ef main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +325. Input. char of interest: 'ring]) + +de f main() ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +de f main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++de f main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +327. Input. char of interest: 'ng]) + +def main() ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +328. Input. char of interest: 'g]) + +def m ain() -> ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def m ain() -> int: | def ain() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:5 - 18:6] +CST Stack: + {Node ERROR (17, 4) - (17, 5)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ain() -> int: ++def m ain() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +329. Input. char of interest: ']) + +def ma in() -> i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def ma in() -> int: | def ma() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:8 - 18:10] +CST Stack: + {Node ERROR (17, 7) - (17, 9)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def ma() -> int: ++def ma in() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +330. Input. char of interest: ') + +def mai n() -> in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def mai n() -> int: | def mai() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:9 - 18:10] +CST Stack: + {Node ERROR (17, 8) - (17, 9)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def mai() -> int: ++def mai n() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +331. Input. char of interest: ' + +def main () -> int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main () -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main () -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +332. Input. char of interest: ' +def main( ) -> int:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main( ) -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main( ) -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +334. Input. char of interest: 'ef main() -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +335. Input. char of interest: 'f main() - > int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() - > int: | def main(): + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:12 - 18:19] +CST Stack: + {Node ERROR (17, 11) - (17, 18)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main(): ++def main() - > int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +337. Input. char of interest: 'main() -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +338. Input. char of interest: 'ain() -> i nt: + "': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> i nt: | def main() -> nt: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:15 - 18:16] +CST Stack: + {Node ERROR (17, 14) - (17, 15)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> nt: ++def main() -> i nt: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +339. Input. char of interest: 'in() -> in t: + ""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> in t: | def main() -> in: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [18:18 - 18:19] +CST Stack: + {Node ERROR (17, 17) - (17, 18)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "in" cannot be used as identifier at [18:15 - 18:17] +CST Stack: + {Node identifier (17, 14) - (17, 16)} + {Node type (17, 14) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> in: ++def main() -> in t: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +340. Input. char of interest: 'n() -> int : + """': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int : | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int : + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +341. Input. char of interest: '() -> int: + """D': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: ++def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +346. Input. char of interest: ' int: + """DOC_ST': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +347. Input. char of interest: 'int: + " ""DOC_STR': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + " ""DOC_STRING""" | """ DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """ DOC_STRING""" ++ " ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +348. Input. char of interest: 'nt: + "" "DOC_STRI': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + "" "DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" ++ "" "DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +349. Input. char of interest: 't: + """ DOC_STRIN': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """ DOC_STRING""" | """ DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +350. Input. char of interest: ': + """D OC_STRING': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """D OC_STRING""" | """D OC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +351. Input. char of interest: ' + """DO C_STRING"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DO C_STRING""" | """DO C_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +352. Input. char of interest: ' """DOC _STRING""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC _STRING""" | """DOC _STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +353. Input. char of interest: ' """DOC_ STRING"""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ STRING""" | """DOC_ STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +354. Input. char of interest: ' """DOC_S TRING""" +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_S TRING""" | """DOC_S TRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +355. Input. char of interest: ' """DOC_ST RING""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ST RING""" | """DOC_ST RING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +356. Input. char of interest: '"""DOC_STR ING""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STR ING""" | """DOC_STR ING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +357. Input. char of interest: '""DOC_STRI NG""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRI NG""" | """DOC_STRI NG""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +358. Input. char of interest: '"DOC_STRIN G""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIN G""" | """DOC_STRIN G""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +359. Input. char of interest: 'DOC_STRING """ + s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING """ | """DOC_STRING """ + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +360. Input. char of interest: 'OC_STRING" "" + so': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING" "" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:22] +CST Stack: + {Node ERROR (18, 4) - (18, 21)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING" "" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +361. Input. char of interest: 'C_STRING"" " + som': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" " | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:22] +CST Stack: + {Node ERROR (18, 4) - (18, 21)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" " + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +362. Input. char of interest: '_STRING""" + some': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" ++ """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +367. Input. char of interest: 'NG""" + something': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +368. Input. char of interest: 'G""" + s omethinge': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + s omethingelse() | omethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:6] +CST Stack: + {Node ERROR (19, 4) - (19, 5)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- omethingelse() ++ s omethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +369. Input. char of interest: '""" + so methingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + so methingelse() | methingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:7] +CST Stack: + {Node ERROR (19, 4) - (19, 6)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- methingelse() ++ so methingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +370. Input. char of interest: '"" + som ethingels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + som ethingelse() | ethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:8] +CST Stack: + {Node ERROR (19, 4) - (19, 7)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ethingelse() ++ som ethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +371. Input. char of interest: '" + some thingelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + some thingelse() | thingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:9] +CST Stack: + {Node ERROR (19, 4) - (19, 8)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- thingelse() ++ some thingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +372. Input. char of interest: ' + somet hingelse(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somet hingelse() | hingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:10] +CST Stack: + {Node ERROR (19, 4) - (19, 9)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- hingelse() ++ somet hingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +373. Input. char of interest: ' someth ingelse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + someth ingelse() | ingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:11] +CST Stack: + {Node ERROR (19, 4) - (19, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- ingelse() ++ someth ingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +374. Input. char of interest: ' somethi ngelse() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethi ngelse() | somethi() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:13 - 20:19] +CST Stack: + {Node ERROR (19, 12) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethi() ++ somethi ngelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +375. Input. char of interest: ' somethin gelse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethin gelse() | somethin() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:14 - 20:19] +CST Stack: + {Node ERROR (19, 13) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethin() ++ somethin gelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +376. Input. char of interest: ' something else() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + something else() | something() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:15 - 20:19] +CST Stack: + {Node ERROR (19, 14) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- something() ++ something else() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +377. Input. char of interest: 'somethinge lse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinge lse() | somethinge() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:16 - 20:19] +CST Stack: + {Node ERROR (19, 15) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethinge() ++ somethinge lse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +378. Input. char of interest: 'omethingel se() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingel se() | somethingel() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:17 - 20:19] +CST Stack: + {Node ERROR (19, 16) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingel() ++ somethingel se() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +379. Input. char of interest: 'methingels e() + f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingels e() | somethingels() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:18 - 20:19] +CST Stack: + {Node ERROR (19, 17) - (19, 18)} + {Node call (19, 4) - (19, 20)} + {Node expression_statement (19, 4) - (19, 20)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingels() ++ somethingels e() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +380. Input. char of interest: 'ethingelse () + fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse () | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse () + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +381. Input. char of interest: 'thingelse( ) + fib': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse( ) | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse( ) + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +382. Input. char of interest: 'hingelse() + fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,9 +17,9 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse() ++ somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +387. Input. char of interest: 'lse() + fib(12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +388. Input. char of interest: 'se() + f ib(12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + f ib(12) | ib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:6] +CST Stack: + {Node ERROR (20, 4) - (20, 5)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- ib(12) ++ f ib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +389. Input. char of interest: 'e() + fi b(12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fi b(12) | fi(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:8 - 21:9] +CST Stack: + {Node ERROR (20, 7) - (20, 8)} + {Node call (20, 4) - (20, 12)} + {Node expression_statement (20, 4) - (20, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fi(12) ++ fi b(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +390. Input. char of interest: '() + fib (12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib (12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib (12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +391. Input. char of interest: ') + fib( 12) + a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib( 12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib( 12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +392. Input. char of interest: ' + fib(1 2) + as': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(1 2) | fib(1) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:11 - 21:12] +CST Stack: + {Node ERROR (20, 10) - (20, 11)} + {Node argument_list (20, 7) - (20, 12)} + {Node call (20, 4) - (20, 12)} + {Node expression_statement (20, 4) - (20, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(1) ++ fib(1 2) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +393. Input. char of interest: ' fib(12 ) + ast': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12 ) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib(12 ) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +394. Input. char of interest: ' fib(12) + astr': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) ++ fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +399. Input. char of interest: 'b(12) + astring =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +400. Input. char of interest: '(12) + a string = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + a string = format_a_string() | string = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:6] +CST Stack: + {Node ERROR (21, 4) - (21, 5)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- string = format_a_string() ++ a string = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +401. Input. char of interest: '12) + as tring = f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + as tring = format_a_string() | tring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:7] +CST Stack: + {Node ERROR (21, 4) - (21, 6)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- tring = format_a_string() ++ as tring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +402. Input. char of interest: '2) + ast ring = fo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + ast ring = format_a_string() | ring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:8] +CST Stack: + {Node ERROR (21, 4) - (21, 7)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ring = format_a_string() ++ ast ring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +403. Input. char of interest: ') + astr ing = for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astr ing = format_a_string() | ing = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:9] +CST Stack: + {Node ERROR (21, 4) - (21, 8)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ing = format_a_string() ++ astr ing = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +404. Input. char of interest: ' + astri ng = form': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astri ng = format_a_string() | ng = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:10] +CST Stack: + {Node ERROR (21, 4) - (21, 9)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- ng = format_a_string() ++ astri ng = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +405. Input. char of interest: ' astrin g = forma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrin g = format_a_string() | g = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:11] +CST Stack: + {Node ERROR (21, 4) - (21, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- g = format_a_string() ++ astrin g = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +407. Input. char of interest: ' astring = format_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +409. Input. char of interest: 'astring = format_a_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +410. Input. char of interest: 'string = f ormat_a_s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = f ormat_a_string() | astring = ormat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:16] +CST Stack: + {Node ERROR (21, 14) - (21, 15)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = ormat_a_string() ++ astring = f ormat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +411. Input. char of interest: 'tring = fo rmat_a_st': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = fo rmat_a_string() | astring = rmat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:17] +CST Stack: + {Node ERROR (21, 14) - (21, 16)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = rmat_a_string() ++ astring = fo rmat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +412. Input. char of interest: 'ring = for mat_a_str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = for mat_a_string() | astring = mat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:18] +CST Stack: + {Node ERROR (21, 14) - (21, 17)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = mat_a_string() ++ astring = for mat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +413. Input. char of interest: 'ing = form at_a_stri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = form at_a_string() | astring = at_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:19] +CST Stack: + {Node ERROR (21, 14) - (21, 18)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = at_a_string() ++ astring = form at_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +414. Input. char of interest: 'ng = forma t_a_strin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forma t_a_string() | astring = t_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:20] +CST Stack: + {Node ERROR (21, 14) - (21, 19)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = t_a_string() ++ astring = forma t_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +415. Input. char of interest: 'g = format _a_string': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format _a_string() | astring = _a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:21] +CST Stack: + {Node ERROR (21, 14) - (21, 20)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = _a_string() ++ astring = format _a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +416. Input. char of interest: ' = format_ a_string(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_ a_string() | astring = a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 22:22] +CST Stack: + {Node ERROR (21, 14) - (21, 21)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = a_string() ++ astring = format_ a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +417. Input. char of interest: '= format_a _string()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a _string() | astring = format_a() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:24 - 22:31] +CST Stack: + {Node ERROR (21, 23) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a() ++ astring = format_a _string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +418. Input. char of interest: ' format_a_ string() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_ string() | astring = format_a_() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:25 - 22:31] +CST Stack: + {Node ERROR (21, 24) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_() ++ astring = format_a_ string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +419. Input. char of interest: 'format_a_s tring() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_s tring() | astring = format_a_s() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:26 - 22:31] +CST Stack: + {Node ERROR (21, 25) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_s() ++ astring = format_a_s tring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +420. Input. char of interest: 'ormat_a_st ring() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_st ring() | astring = format_a_st() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:27 - 22:31] +CST Stack: + {Node ERROR (21, 26) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_st() ++ astring = format_a_st ring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +421. Input. char of interest: 'rmat_a_str ing() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_str ing() | astring = format_a_str() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:28 - 22:31] +CST Stack: + {Node ERROR (21, 27) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_str() ++ astring = format_a_str ing() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +422. Input. char of interest: 'mat_a_stri ng() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_stri ng() | astring = format_a_stri() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:29 - 22:31] +CST Stack: + {Node ERROR (21, 28) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_stri() ++ astring = format_a_stri ng() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +423. Input. char of interest: 'at_a_strin g() + r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strin g() | astring = format_a_strin() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:30 - 22:31] +CST Stack: + {Node ERROR (21, 29) - (21, 30)} + {Node call (21, 14) - (21, 32)} + {Node assignment (21, 4) - (21, 32)} + {Node expression_statement (21, 4) - (21, 32)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_strin() ++ astring = format_a_strin g() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +424. Input. char of interest: 't_a_string () + re': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string () | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string () + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +425. Input. char of interest: '_a_string( ) + ret': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string( ) | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string( ) + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +426. Input. char of interest: 'a_string() + retu': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() ++ astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +431. Input. char of interest: 'ing() + return 0 +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +432. Input. char of interest: 'ng() + r eturn 0 +i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + r eturn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:12] +CST Stack: + {Node ERROR (22, 4) - (22, 11)} + {Node block (18, 4) - (22, 13)} + {Node function_definition (17, 0) - (22, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ r eturn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +433. Input. char of interest: 'g() + re turn 0 +if': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + re turn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:12] +CST Stack: + {Node ERROR (22, 4) - (22, 11)} + {Node block (18, 4) - (22, 13)} + {Node function_definition (17, 0) - (22, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ re turn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +434. Input. char of interest: '() + ret urn 0 +if ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + ret urn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:12] +CST Stack: + {Node ERROR (22, 4) - (22, 11)} + {Node block (18, 4) - (22, 13)} + {Node function_definition (17, 0) - (22, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ ret urn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +435. Input. char of interest: ') + retu rn 0 +if _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retu rn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:12] +CST Stack: + {Node ERROR (22, 4) - (22, 11)} + {Node block (18, 4) - (22, 13)} + {Node function_definition (17, 0) - (22, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retu rn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +436. Input. char of interest: ' + retur n 0 +if __': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retur n 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:12] +CST Stack: + {Node ERROR (22, 4) - (22, 11)} + {Node block (18, 4) - (22, 13)} + {Node function_definition (17, 0) - (22, 13)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retur n 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +438. Input. char of interest: ' return 0 +if __na': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +439. Input. char of interest: ' return 0 +if __nam': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0 ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +440. Input. char of interest: ' return 0 + if __name': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 + if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+ if __name__ == '__main__': ++ main() + + +=============================================================================== +441. Input. char of interest: 'return 0 +i f __name_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +i f __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++i f __name__ == '__main__': ++ main() + + +=============================================================================== +443. Input. char of interest: 'turn 0 +if __name__ ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__': ++ main() + + +=============================================================================== +444. Input. char of interest: 'urn 0 +if _ _name__ =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _ _name__ == '__main__': | if _name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:5] +CST Stack: + {Node ERROR (23, 3) - (23, 4)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if _name__ == '__main__': +- main()+if _ _name__ == '__main__': ++ main() + + +=============================================================================== +445. Input. char of interest: 'rn 0 +if __ name__ ==': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __ name__ == '__main__': | if name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:6] +CST Stack: + {Node ERROR (23, 3) - (23, 5)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if name__ == '__main__': +- main()+if __ name__ == '__main__': ++ main() + + +=============================================================================== +446. Input. char of interest: 'n 0 +if __n ame__ == ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __n ame__ == '__main__': | if ame__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:7] +CST Stack: + {Node ERROR (23, 3) - (23, 6)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if ame__ == '__main__': +- main()+if __n ame__ == '__main__': ++ main() + + +=============================================================================== +447. Input. char of interest: ' 0 +if __na me__ == '': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __na me__ == '__main__': | if me__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:8] +CST Stack: + {Node ERROR (23, 3) - (23, 7)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if me__ == '__main__': +- main()+if __na me__ == '__main__': ++ main() + + +=============================================================================== +448. Input. char of interest: '0 +if __nam e__ == '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nam e__ == '__main__': | if __nam == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:10 - 24:13] +CST Stack: + {Node ERROR (23, 9) - (23, 12)} + {Node comparison_operator (23, 3) - (23, 26)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __nam == '__main__': +- main()+if __nam e__ == '__main__': ++ main() + + +=============================================================================== +449. Input. char of interest: ' +if __name __ == '__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name __ == '__main__': | if __name == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:11 - 24:13] +CST Stack: + {Node ERROR (23, 10) - (23, 12)} + {Node comparison_operator (23, 3) - (23, 26)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name == '__main__': +- main()+if __name __ == '__main__': ++ main() + + +=============================================================================== +450. Input. char of interest: 'if __name_ _ == '__m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ _ == '__main__': | if __name_ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:12 - 24:13] +CST Stack: + {Node ERROR (23, 11) - (23, 12)} + {Node comparison_operator (23, 3) - (23, 26)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name_ == '__main__': +- main()+if __name_ _ == '__main__': ++ main() + + +=============================================================================== +452. Input. char of interest: ' __name__ == '__mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__': ++ main() + + +=============================================================================== +453. Input. char of interest: '__name__ = = '__main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = = '__main__': | if '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:16] +CST Stack: + {Node ERROR (23, 3) - (23, 15)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if '__main__': +- main()+if __name__ = = '__main__': ++ main() + + +=============================================================================== +455. Input. char of interest: 'name__ == '__main__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__': ++ main() + + +=============================================================================== +456. Input. char of interest: 'ame__ == ' __main__'': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == ' __main__': | if __name__ == ' __main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == ' __main__': +- main()+ main() + + +=============================================================================== +457. Input. char of interest: 'me__ == '_ _main__':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_ _main__': | if __name__ == '_ _main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '_ _main__': +- main()+ main() + + +=============================================================================== +458. Input. char of interest: 'e__ == '__ main__': +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ main__': | if __name__ == '__ main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ main__': +- main()+ main() + + +=============================================================================== +459. Input. char of interest: '__ == '__m ain__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__m ain__': | if __name__ == '__m ain__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__m ain__': +- main()+ main() + + +=============================================================================== +460. Input. char of interest: '_ == '__ma in__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ma in__': | if __name__ == '__ma in__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ma in__': +- main()+ main() + + +=============================================================================== +461. Input. char of interest: ' == '__mai n__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__mai n__': | if __name__ == '__mai n__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__mai n__': +- main()+ main() + + +=============================================================================== +462. Input. char of interest: '== '__main __': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main __': | if __name__ == '__main __': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main __': +- main()+ main() + + +=============================================================================== +463. Input. char of interest: '= '__main_ _': + m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_ _': | if __name__ == '__main_ _': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main_ _': +- main()+ main() + + +=============================================================================== +464. Input. char of interest: ' '__main__ ': + ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__ ': | if __name__ == '__main__ ': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__ ': +- main()+ main() + + +=============================================================================== +465. Input. char of interest: ''__main__' : + mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__' : | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__' : ++ main() + + +=============================================================================== +466. Input. char of interest: '__main__': + main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__': ++ main() + + +=============================================================================== +471. Input. char of interest: 'n__': + main() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +472. Input. char of interest: '__': + m ain() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + m ain() | ain() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:6] +CST Stack: + {Node ERROR (24, 4) - (24, 5)} + {Node if_statement (23, 0) - (24, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ain()+ m ain() + + +=============================================================================== +473. Input. char of interest: '_': + ma in() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + ma in() | ma in () + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ma in ()+ ma in() + + +=============================================================================== +474. Input. char of interest: '': + mai n() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + mai n() | mai() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:9 - 25:10] +CST Stack: + {Node ERROR (24, 8) - (24, 9)} + {Node call (24, 4) - (24, 11)} + {Node expression_statement (24, 4) - (24, 11)} + {Node block (24, 4) - (24, 11)} + {Node if_statement (23, 0) - (24, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- mai()+ mai n() + + +=============================================================================== +475. Input. char of interest: ': + main () +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main () | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main () + + +=============================================================================== +476. Input. char of interest: ' + main( ) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main( ) | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main( ) + + +=============================================================================== +477. Input. char of interest: ' main() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.nth_removed._expected_results/Simple-broad-case_expected_results b/source/errpy/tests/test_resources/error_recovery/simple.pytest.nth_removed._expected_results/Simple-broad-case_expected_results new file mode 100644 index 00000000000..c7f07bcd0b8 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest.nth_removed._expected_results/Simple-broad-case_expected_results @@ -0,0 +1,18514 @@ +@generated + +Errpy makes empty AST (weird) with input prior to and including: +0.->d<- + +1.->de<- + +2.->def<- + +22.->def fib(a: int) -> int:<- + +80.-> = tmp + inset = a in {0, 1}<- + +86.-> + inset = a in {0, 1} + i<- + +87.-> inset = a in {0, 1} + if<- + +207.->urn fib(a - 1) + fib(a - 2) + +d<- + +208.->rn fib(a - 1) + fib(a - 2) + +de<- + +209.->n fib(a - 1) + fib(a - 2) + +def<- + +238.->f somethingelse(): + pass + +d<- + +239.-> somethingelse(): + pass + +de<- + +240.->somethingelse(): + pass + +def<- + +257.-> pass + +def format_a_string(<- + +323.->.join([x for x in astring]) + +d<- + +324.->join([x for x in astring]) + +de<- + +325.->oin([x for x in astring]) + +def<- + +331.-> for x in astring]) + +def main(<- + +440.->rmat_a_string() + return 0 +i<- + +441.->mat_a_string() + return 0 +if<- + +476.->me__ == '__main__': + main()<- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Input. char of interest: 'ef fib(a: ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +ef fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++ef fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +1. Input. char of interest: 'df fib(a: i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +df fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++df fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +2. Input. char of interest: 'de fib(a: in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +de fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++de fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +4. Input. char of interest: 'def ib(a: int)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def ib(a: int) -> int: | def ib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +5. Input. char of interest: 'def fb(a: int) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fb(a: int) -> int: | def fb(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +6. Input. char of interest: 'def fi(a: int) -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fi(a: int) -> int: | def fi(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +7. Input. char of interest: 'def fiba: int) ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fiba: int) -> int: | def somethingelse(): + tmp = (a, a) | pass + ba, bb = tmp | + inset = a in {0, 1} | def format_a_string(astring: str) -> str: + if a <= 2 or a == 1: | return ','.join([x for x in astring]) + return 1 | + elif inset: | def main() -> int: + return 1 | """DOC_STRING""" + else: | somethingelse() + return fib(a - 1) + fib(a - 2) | fib(12) + | astring = format_a_string() +def somethingelse(): | return 0 + pass | if __name__ == '__main__': + | main() +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 10:39] +CST Stack: + {Node ERROR (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,14 @@ ++def fiba: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ + def somethingelse(): + pass + +@@ -11,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +8. Input. char of interest: 'def fib(: int) -> ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(: int) -> int: | def fib(int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:9 - 1:10] +CST Stack: + {Node ERROR (0, 8) - (0, 9)} + {Node parameters (0, 7) - (0, 14)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(int) -> int: ++def fib(: int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +9. Input. char of interest: 'def fib(a int) -> i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a int) -> int: | def fib(int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:9 - 1:10] +CST Stack: + {Node ERROR (0, 8) - (0, 9)} + {Node parameters (0, 7) - (0, 14)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(int) -> int: ++def fib(a int) -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +11. Input. char of interest: 'ef fib(a: nt) -> int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: nt) -> int: | def fib(a: nt) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +12. Input. char of interest: 'f fib(a: it) -> int:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: it) -> int: | def fib(a: it) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +13. Input. char of interest: ' fib(a: in) -> int: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: in) -> int: | def fib(a: in) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "in" cannot be used as identifier at [1:12 - 1:14] +CST Stack: + {Node identifier (0, 11) - (0, 13)} + {Node type (0, 11) - (0, 13)} + {Node typed_parameter (0, 8) - (0, 13)} + {Node parameters (0, 7) - (0, 14)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +14. Input. char of interest: 'fib(a: int -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int -> int: | def fib(a: int - int): + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:17 - 1:18] +CST Stack: + {Node ERROR (0, 16) - (0, 17)} + {Node binary_operator (0, 11) - (0, 21)} + {Node type (0, 11) - (0, 21)} + {Node typed_parameter (0, 8) - (0, 21)} + {Node parameters (0, 7) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int - int): ++def fib(a: int -> int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +16. Input. char of interest: 'b(a: int) > int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) > int: | def fib(a: int): + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:17 - 1:22] +CST Stack: + {Node ERROR (0, 16) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int): ++def fib(a: int) > int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +17. Input. char of interest: '(a: int) - int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) - int: | def fib(a: int): + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:17 - 1:22] +CST Stack: + {Node ERROR (0, 16) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ +-def fib(a: int): ++def fib(a: int) - int: + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +19. Input. char of interest: ': int) -> nt: + tm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> nt: | def fib(a: int) -> nt: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +20. Input. char of interest: ' int) -> it: + tmp': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> it: | def fib(a: int) -> it: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +21. Input. char of interest: 'int) -> in: + tmp ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> in: | def fib(a: int) -> in: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "in" cannot be used as identifier at [1:20 - 1:22] +CST Stack: + {Node identifier (0, 19) - (0, 21)} + {Node type (0, 19) - (0, 21)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +22. Input. char of interest: 'nt) -> int + tmp =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +23. Input. char of interest: 't) -> int: tmp = ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: tmp = (a, a) | def fib(a: int) -> int: + ba, bb = tmp | tmp = (a, a) + inset = a in {0, 1} | ba, bb = tmp + if a <= 2 or a == 1: | inset = a in {0, 1} + return 1 | if a <= 2 or a == 1: + elif inset: | return 1 + return 1 | elif inset: + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,13 +1,12 @@ +-def fib(a: int) -> int: +- tmp = (a, a) +-ba, bb = tmp +-inset = a in {0, 1} +-if a <= 2 or a == 1: +- return 1 +-elif inset: +- return 1 +-else: +- return fib(a - 1) + fib(a - 2) ++def fib(a: int) -> int: tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +28. Input. char of interest: ' int: + mp = (a, a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + mp = (a, a) | mp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +29. Input. char of interest: 'int: + tp = (a, a)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tp = (a, a) | tp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +30. Input. char of interest: 'nt: + tm = (a, a) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tm = (a, a) | tm = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +32. Input. char of interest: ': + tmp (a, a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp (a, a) | tmp(a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp(a, a) ++ tmp (a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +34. Input. char of interest: ' tmp = a, a) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = a, a) | tmp = (a,) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:14 - 2:16] +CST Stack: + {Node ERROR (1, 13) - (1, 15)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a,) ++ tmp = a, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +35. Input. char of interest: ' tmp = (, a) + b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (, a) | tmp = a + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:12 - 2:13] +CST Stack: + {Node ERROR (1, 11) - (1, 12)} + {Node parenthesized_expression (1, 10) - (1, 15)} + {Node assignment (1, 4) - (1, 15)} + {Node expression_statement (1, 4) - (1, 15)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = a ++ tmp = (, a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +36. Input. char of interest: ' tmp = (a a) + ba': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a a) | tmp = a + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:14 - 2:15] +CST Stack: + {Node ERROR (1, 13) - (1, 14)} + {Node parenthesized_expression (1, 10) - (1, 15)} + {Node assignment (1, 4) - (1, 15)} + {Node expression_statement (1, 4) - (1, 15)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = a ++ tmp = (a a) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +38. Input. char of interest: 'tmp = (a, ) + ba, ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, ) | tmp = (a,) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = (a,) ++ tmp = (a, ) + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +39. Input. char of interest: 'mp = (a, a + ba, b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a | tmp = tmp + ba, bb = tmp | inset = a in {0, 1} + inset = a in {0, 1} | if a <= 2 or a == 1: + if a <= 2 or a == 1: | return 1 + return 1 | elif inset: + elif inset: | return 1 + return 1 | else: + else: | return fib(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:9 - 3:11] +CST Stack: + {Node ERROR (1, 8) - (2, 10)} + {Node assignment (1, 4) - (2, 16)} + {Node expression_statement (1, 4) - (2, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,6 @@ + def fib(a: int) -> int: +- tmp = tmp ++ tmp = (a, a ++ ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +40. Input. char of interest: 'p = (a, a) ba, bb': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) ba, bb = tmp | tmp = ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:11 - 2:17] +CST Stack: + {Node ERROR (1, 10) - (1, 16)} + {Node assignment (1, 4) - (1, 32)} + {Node expression_statement (1, 4) - (1, 32)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,5 +1,5 @@ + def fib(a: int) -> int: +- tmp = ba, bb = tmp ++ tmp = (a, a) ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -21,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +45. Input. char of interest: 'a, a) + a, bb = tm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + a, bb = tmp | a, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +46. Input. char of interest: ', a) + b, bb = tmp': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + b, bb = tmp | b, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +47. Input. char of interest: ' a) + ba bb = tmp +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba bb = tmp | bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:7] +CST Stack: + {Node ERROR (2, 4) - (2, 6)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- bb = tmp ++ ba bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +49. Input. char of interest: ') + ba, b = tmp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b = tmp | ba, b = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +50. Input. char of interest: ' + ba, b = tmp + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b = tmp | ba, b = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +52. Input. char of interest: ' ba, bb tmp + i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb tmp | (ba, tmp) + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:9 - 3:11] +CST Stack: + {Node ERROR (2, 8) - (2, 10)} + {Node expression_statement (2, 4) - (2, 15)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, tmp) ++ ba, bb tmp + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +54. Input. char of interest: ' ba, bb = mp + ins': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = mp | ba, bb = mp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +55. Input. char of interest: 'ba, bb = tp + inse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tp | ba, bb = tp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +56. Input. char of interest: 'a, bb = tm + inset': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tm | ba, bb = tm + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +57. Input. char of interest: ', bb = tmp inset ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp inset = a in {0, 1} | ba, bb = inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:14 - 3:17] +CST Stack: + {Node ERROR (2, 13) - (2, 16)} + {Node assignment (2, 4) - (2, 39)} + {Node expression_statement (2, 4) - (2, 39)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,6 +1,6 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = inset = a in {0, 1} ++ ba, bb = tmp inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -21,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +62. Input. char of interest: '= tmp + nset = a i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + nset = a in {0, 1} | nset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +63. Input. char of interest: ' tmp + iset = a in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + iset = a in {0, 1} | iset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +64. Input. char of interest: 'tmp + inet = a in ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inet = a in {0, 1} | inet = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +65. Input. char of interest: 'mp + inst = a in {': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inst = a in {0, 1} | inst = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +66. Input. char of interest: 'p + inse = a in {0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inse = a in {0, 1} | inse = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +68. Input. char of interest: ' inset a in {0, ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset a in {0, 1} | inset in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:12 - 4:13] +CST Stack: + {Node ERROR (3, 11) - (3, 12)} + {Node comparison_operator (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset in {0, 1} ++ inset a in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +70. Input. char of interest: ' inset = in {0, 1}': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = in {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:14 - 4:16] +CST Stack: + {Node ERROR (3, 13) - (3, 15)} + {Node assignment (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = in {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +72. Input. char of interest: 'inset = a n {0, 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a n {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:16] +CST Stack: + {Node ERROR (3, 12) - (3, 15)} + {Node assignment (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = a n {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +73. Input. char of interest: 'nset = a i {0, 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a i {0, 1} | inset = {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:16] +CST Stack: + {Node ERROR (3, 12) - (3, 15)} + {Node assignment (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = {0, 1} ++ inset = a i {0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +75. Input. char of interest: 'et = a in 0, 1} + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in 0, 1} | inset = (a in 0, 1) + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:22 - 4:23] +CST Stack: + {Node ERROR (3, 21) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = (a in 0, 1) ++ inset = a in 0, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +76. Input. char of interest: 't = a in {, 1} + i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {, 1} | inset = a in {1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:19 - 4:20] +CST Stack: + {Node ERROR (3, 18) - (3, 19)} + {Node set (3, 17) - (3, 22)} + {Node comparison_operator (3, 12) - (3, 22)} + {Node assignment (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {1} ++ inset = a in {, 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +77. Input. char of interest: ' = a in {0 1} + if': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0 1} | inset = a in {0} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:21 - 4:22] +CST Stack: + {Node ERROR (3, 20) - (3, 21)} + {Node set (3, 17) - (3, 22)} + {Node comparison_operator (3, 12) - (3, 22)} + {Node assignment (3, 4) - (3, 22)} + {Node expression_statement (3, 4) - (3, 22)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0} ++ inset = a in {0 1} + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +79. Input. char of interest: ' a in {0, } + if a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, } | inset = a in {0} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,7 +1,7 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0} ++ inset = a in {0, } + if a <= 2 or a == 1: + return 1 + elif inset: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +80. Input. char of interest: 'a in {0, 1 + if a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1 | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1 ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +81. Input. char of interest: ' in {0, 1} if a <': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} if a <= 2 or a == 1: | inset: 1 + return 1 | inset: 1 + elif inset: | else: return(a - 1) + fib(a - 2) + return 1 | + else: | def somethingelse(): + return fib(a - 1) + fib(a - 2) | pass + | +def somethingelse(): | def format_a_string(astring: str) -> str: + pass | return ','.join([x for x in astring]) + | +def format_a_string(astring: str) -> str: | def main() -> int: + return ','.join([x for x in astring]) | """DOC_STRING""" + | somethingelse() +def main() -> int: | fib(12) + """DOC_STRING""" | astring = format_a_string() + somethingelse() | return 0 + fib(12) | if __name__ == '__main__': + astring = format_a_string() | main() + return 0 | +if __name__ == '__main__': | + main() | + | + +7 Recoverable errors detected: +SyntaxError: invalid syntax at [4:11 - 4:47] +CST Stack: + {Node ERROR (3, 10) - (3, 46)} + {Node assignment (3, 4) - (4, 16)} + {Node expression_statement (3, 4) - (4, 16)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: invalid syntax at [5:9 - 5:15] +CST Stack: + {Node ERROR (4, 8) - (4, 14)} + {Node assignment (3, 4) - (4, 16)} + {Node expression_statement (3, 4) - (4, 16)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: invalid syntax at [6:5 - 6:9] +CST Stack: + {Node ERROR (5, 4) - (5, 8)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: invalid syntax at [7:9 - 7:15] +CST Stack: + {Node ERROR (6, 8) - (6, 14)} + {Node assignment (5, 9) - (6, 16)} + {Node expression_statement (5, 9) - (6, 16)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: invalid syntax at [9:16 - 9:19] +CST Stack: + {Node ERROR (8, 15) - (8, 18)} + {Node call (8, 8) - (8, 25)} + {Node binary_operator (8, 8) - (8, 38)} + {Node type (8, 8) - (8, 38)} + {Node assignment (7, 4) - (8, 38)} + {Node expression_statement (7, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [8:5 - 8:9] +CST Stack: + {Node identifier (7, 4) - (7, 8)} + {Node assignment (7, 4) - (8, 38)} + {Node expression_statement (7, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [9:9 - 9:15] +CST Stack: + {Node identifier (8, 8) - (8, 14)} + {Node call (8, 8) - (8, 25)} + {Node binary_operator (8, 8) - (8, 38)} + {Node type (8, 8) - (8, 38)} + {Node assignment (7, 4) - (8, 38)} + {Node expression_statement (7, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 6) +ERRPY Recovered AST diff: +--- ++++ +@@ -1,9 +1,12 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset: 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ inset = a in {0, 1} if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -18,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +86. Input. char of interest: '0, 1} + f a <= 2 o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + f a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ f a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +87. Input. char of interest: ', 1} + i a <= 2 or': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + i a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ i a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +89. Input. char of interest: '1} + if <= 2 or a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if <= 2 or a == 1: | if 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:9 - 5:11] +CST Stack: + {Node ERROR (4, 8) - (4, 10)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if 2 or a == 1: ++ if <= 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +91. Input. char of interest: ' + if a = 2 or a =': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a = 2 or a == 1: | if 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:8 - 5:11] +CST Stack: + {Node ERROR (4, 7) - (4, 10)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if 2 or a == 1: ++ if a = 2 or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +92. Input. char of interest: ' if a < 2 or a ==': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a < 2 or a == 1: | if a < 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +94. Input. char of interest: ' if a <= or a == 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= or a == 1: | if a <= or == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [5:17 - 5:18] +CST Stack: + {Node ERROR (4, 16) - (4, 17)} + {Node comparison_operator (4, 7) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "or" cannot be used as identifier at [5:14 - 5:16] +CST Stack: + {Node identifier (4, 13) - (4, 15)} + {Node comparison_operator (4, 7) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= or == 1: ++ if a <= or a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +96. Input. char of interest: 'if a <= 2 r a == 1: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 r a == 1: | if a <= 2 == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:15 - 5:18] +CST Stack: + {Node ERROR (4, 14) - (4, 17)} + {Node comparison_operator (4, 7) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 == 1: ++ if a <= 2 r a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +97. Input. char of interest: 'f a <= 2 o a == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 o a == 1: | if a <= 2 == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:15 - 5:18] +CST Stack: + {Node ERROR (4, 14) - (4, 17)} + {Node comparison_operator (4, 7) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 == 1: ++ if a <= 2 o a == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +99. Input. char of interest: 'a <= 2 or == 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or == 1: | if a <= 2 or 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:19 - 5:21] +CST Stack: + {Node ERROR (4, 18) - (4, 20)} + {Node boolean_operator (4, 7) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or 1: ++ if a <= 2 or == 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +101. Input. char of interest: '<= 2 or a = 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = 1: | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:23] +CST Stack: + {Node ERROR (4, 19) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a = 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +102. Input. char of interest: '= 2 or a = 1: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = 1: | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:23] +CST Stack: + {Node ERROR (4, 19) - (4, 22)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a = 1: + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +104. Input. char of interest: '2 or a == : + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == : | if a <= 2 or a: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:20 - 5:22] +CST Stack: + {Node ERROR (4, 19) - (4, 21)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a: ++ if a <= 2 or a == : + return 1 + elif inset: + return 1 +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +105. Input. char of interest: ' or a == 1 + r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1 | if a <= 2 or a == inset: + return 1 | return 1 + elif inset: | else: + return 1 | return fib(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:23 - 7:9] +CST Stack: + {Node ERROR (4, 22) - (6, 8)} + {Node comparison_operator (4, 17) - (6, 14)} + {Node boolean_operator (4, 7) - (6, 14)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,7 +2,9 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == inset: ++ if a <= 2 or a == 1 ++ return 1 ++ elif inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +106. Input. char of interest: 'or a == 1: re': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: return 1 | if a <= 2 or a == 1: + elif inset: | return 1 + return 1 | elif inset: + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -2,8 +2,7 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1: +- return 1 ++ if a <= 2 or a == 1: return 1 + elif inset: + return 1 + else: +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +115. Input. char of interest: ': + eturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + eturn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ eturn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +116. Input. char of interest: ' + rturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + rturn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ rturn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +117. Input. char of interest: ' reurn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + reurn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ reurn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +118. Input. char of interest: ' retrn 1 + e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retrn 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retrn 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +119. Input. char of interest: ' retun 1 + el': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retun 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retun 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +120. Input. char of interest: ' retur 1 + eli': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retur 1 | 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:9 - 6:14] +CST Stack: + {Node ERROR (5, 8) - (5, 13)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- 1 ++ retur 1 + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +122. Input. char of interest: ' return + elif ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return | return + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,7 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return ++ return + elif inset: + return 1 + else: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +123. Input. char of interest: ' return 1 elif i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 elif inset: | return 1 + return 1 | else: + else: | return fib(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [6:16 - 7:15] +CST Stack: + {Node ERROR (5, 15) - (6, 14)} + {Node return_statement (5, 8) - (6, 16)} + {Node block (5, 8) - (6, 16)} + {Node if_statement (4, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,6 +3,7 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: ++ return 1 elif inset: + return 1 + else: + return fib(a - 1) + fib(a - 2) +@@ -20,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +128. Input. char of interest: 'urn 1 + lif inset:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + lif inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:8] +CST Stack: + {Node ERROR (6, 4) - (6, 7)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 8) - (7, 16)} + {Node expression_statement (6, 8) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ lif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +129. Input. char of interest: 'rn 1 + eif inset: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + eif inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:8] +CST Stack: + {Node ERROR (6, 4) - (6, 7)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 8) - (7, 16)} + {Node expression_statement (6, 8) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ eif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +130. Input. char of interest: 'n 1 + elf inset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elf inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:8] +CST Stack: + {Node ERROR (6, 4) - (6, 7)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 8) - (7, 16)} + {Node expression_statement (6, 8) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ elf inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +131. Input. char of interest: ' 1 + eli inset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + eli inset: | inset: 1 + return 1 | else: return(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +5 Recoverable errors detected: +SyntaxError: invalid syntax at [7:5 - 7:8] +CST Stack: + {Node ERROR (6, 4) - (6, 7)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [8:9 - 8:15] +CST Stack: + {Node ERROR (7, 8) - (7, 14)} + {Node assignment (6, 8) - (7, 16)} + {Node expression_statement (6, 8) - (7, 16)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [9:5 - 9:9] +CST Stack: + {Node identifier (8, 4) - (8, 8)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 8) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,10 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- inset: 1 +- else: return(a - 1) + fib(a - 2) ++ eli inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +133. Input. char of interest: ' + elif nset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif nset: | elif nset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +134. Input. char of interest: ' elif iset: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif iset: | elif iset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +135. Input. char of interest: ' elif inet: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inet: | elif inet: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +136. Input. char of interest: ' elif inst: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inst: | elif inst: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +137. Input. char of interest: ' elif inse: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inse: | elif inse: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +138. Input. char of interest: 'elif inset + r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset | elif inset: + return 1 | return fib(a - 1) + fib(a - 2) + else: | + return fib(a - 1) + fib(a - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 9:9] +CST Stack: + {Node ERROR (7, 8) - (8, 8)} + {Node elif_clause (6, 4) - (9, 38)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,7 +4,9 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: ++ elif inset ++ return 1 ++ else: + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +139. Input. char of interest: 'lif inset: re': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: return 1 | elif inset: + else: | return 1 + return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -4,8 +4,7 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset: +- return 1 ++ elif inset: return 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +148. Input. char of interest: ': + eturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + eturn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ eturn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +149. Input. char of interest: ' + rturn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + rturn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ rturn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +150. Input. char of interest: ' reurn 1 + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + reurn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ reurn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +151. Input. char of interest: ' retrn 1 + e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retrn 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retrn 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +152. Input. char of interest: ' retun 1 + el': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retun 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retun 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +153. Input. char of interest: ' retur 1 + els': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retur 1 | 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 8:14] +CST Stack: + {Node ERROR (7, 8) - (7, 13)} + {Node elif_clause (6, 4) - (7, 15)} + {Node if_statement (4, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- 1 ++ retur 1 + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +155. Input. char of interest: ' return + else:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return | return + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,7 +5,7 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return ++ return + else: + return fib(a - 1) + fib(a - 2) + +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +156. Input. char of interest: ' return 1 else: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 else: | return 1 + return fib(a - 1) + fib(a - 2) | else: return(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [9:16 - 9:19] +CST Stack: + {Node ERROR (8, 15) - (8, 18)} + {Node call (8, 8) - (8, 25)} + {Node binary_operator (8, 8) - (8, 38)} + {Node type (8, 8) - (8, 38)} + {Node assignment (7, 20) - (8, 38)} + {Node expression_statement (7, 20) - (8, 38)} + {Node block (7, 8) - (8, 38)} + {Node elif_clause (6, 4) - (8, 38)} + {Node if_statement (4, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: keyword: "else" cannot be used as identifier at [8:21 - 8:25] +CST Stack: + {Node identifier (7, 20) - (7, 24)} + {Node assignment (7, 20) - (8, 38)} + {Node expression_statement (7, 20) - (8, 38)} + {Node block (7, 8) - (8, 38)} + {Node elif_clause (6, 4) - (8, 38)} + {Node if_statement (4, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [9:9 - 9:15] +CST Stack: + {Node identifier (8, 8) - (8, 14)} + {Node call (8, 8) - (8, 25)} + {Node binary_operator (8, 8) - (8, 38)} + {Node type (8, 8) - (8, 38)} + {Node assignment (7, 20) - (8, 38)} + {Node expression_statement (7, 20) - (8, 38)} + {Node block (7, 8) - (8, 38)} + {Node elif_clause (6, 4) - (8, 38)} + {Node if_statement (4, 4) - (8, 38)} + {Node block (1, 4) - (8, 38)} + {Node function_definition (0, 0) - (8, 38)} + {Node module (0, 0) - (24, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -5,8 +5,8 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1 +- else: return(a - 1) + fib(a - 2) ++ return 1 else: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +161. Input. char of interest: 'urn 1 + lse: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + lse: | lse: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- lse: return(a - 1) + fib(a - 2) ++ lse: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +162. Input. char of interest: 'rn 1 + ese: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + ese: | ese: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- ese: return(a - 1) + fib(a - 2) ++ ese: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +163. Input. char of interest: 'n 1 + ele: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + ele: | ele: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- ele: return(a - 1) + fib(a - 2) ++ ele: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +164. Input. char of interest: ' 1 + els: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + els: | els: return(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [10:16 - 10:19] +CST Stack: + {Node ERROR (9, 15) - (9, 18)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "return" cannot be used as identifier at [10:9 - 10:15] +CST Stack: + {Node identifier (9, 8) - (9, 14)} + {Node call (9, 8) - (9, 25)} + {Node binary_operator (9, 8) - (9, 38)} + {Node type (9, 8) - (9, 38)} + {Node assignment (8, 4) - (9, 38)} + {Node expression_statement (8, 4) - (9, 38)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- els: return(a - 1) + fib(a - 2) ++ els: ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +165. Input. char of interest: '1 + else + r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else | return fib(a - 1) + fib(a - 2) + return fib(a - 1) + fib(a - 2) | + | def somethingelse(): +def somethingelse(): | pass + pass | + | def format_a_string(astring: str) -> str: +def format_a_string(astring: str) -> str: | return ','.join([x for x in astring]) + return ','.join([x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [9:5 - 9:9] +CST Stack: + {Node ERROR (8, 4) - (8, 8)} + {Node block (1, 4) - (9, 38)} + {Node function_definition (0, 0) - (9, 38)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,7 +6,8 @@ + return 1 + elif inset: + return 1 +- return fib(a - 1) + fib(a - 2) ++ else ++ return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +166. Input. char of interest: ' + else: re': + +Input: | ERRPY Recovered AST: +----------------------------------------------------| ---------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: return fib(a - 1) + fib(a - 2) | else: + | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,8 +6,7 @@ + return 1 + elif inset: + return 1 +- else: +- return fib(a - 1) + fib(a - 2) ++ else: return fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +175. Input. char of interest: ': + eturn fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + eturn fib(a - 1) + fib(a - 2) | eturn(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- eturn(a - 1) + fib(a - 2) ++ eturn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +176. Input. char of interest: ' + rturn fib(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + rturn fib(a - 1) + fib(a - 2) | rturn(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- rturn(a - 1) + fib(a - 2) ++ rturn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +177. Input. char of interest: ' reurn fib(a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + reurn fib(a - 1) + fib(a - 2) | reurn(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- reurn(a - 1) + fib(a - 2) ++ reurn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +178. Input. char of interest: ' retrn fib(a -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retrn fib(a - 1) + fib(a - 2) | retrn(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retrn(a - 1) + fib(a - 2) ++ retrn fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +179. Input. char of interest: ' retun fib(a - ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retun fib(a - 1) + fib(a - 2) | retun(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retun(a - 1) + fib(a - 2) ++ retun fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +180. Input. char of interest: ' retur fib(a - 1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retur fib(a - 1) + fib(a - 2) | retur(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:15 - 10:18] +CST Stack: + {Node ERROR (9, 14) - (9, 17)} + {Node call (9, 8) - (9, 24)} + {Node binary_operator (9, 8) - (9, 37)} + {Node expression_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- retur(a - 1) + fib(a - 2) ++ retur fib(a - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +182. Input. char of interest: ' return ib(a - 1) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return ib(a - 1) + fib(a - 2) | return ib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +183. Input. char of interest: ' return fb(a - 1) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fb(a - 1) + fib(a - 2) | return fb(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +184. Input. char of interest: ' return fi(a - 1) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fi(a - 1) + fib(a - 2) | return fi(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +185. Input. char of interest: 'return fiba - 1) + f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fiba - 1) + fib(a - 2) | return fiba - 1 + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:24 - 10:25] +CST Stack: + {Node ERROR (9, 23) - (9, 24)} + {Node binary_operator (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fiba - 1 + fib(a - 2) ++ return fiba - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +186. Input. char of interest: 'eturn fib( - 1) + fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib( - 1) + fib(a - 2) | return fib(-1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(-1) + fib(a - 2) ++ return fib( - 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +188. Input. char of interest: 'urn fib(a 1) + fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a 1) + fib(a - 2) | return fib(a) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:23 - 10:24] +CST Stack: + {Node ERROR (9, 22) - (9, 23)} + {Node argument_list (9, 18) - (9, 24)} + {Node call (9, 15) - (9, 24)} + {Node binary_operator (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a) + fib(a - 2) ++ return fib(a 1) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +190. Input. char of interest: 'n fib(a - ) + fib(a ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - ) + fib(a - 2) | return fib(a) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:22 - 10:23] +CST Stack: + {Node ERROR (9, 21) - (9, 22)} + {Node argument_list (9, 18) - (9, 24)} + {Node call (9, 15) - (9, 24)} + {Node binary_operator (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a) + fib(a - 2) ++ return fib(a - ) + fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +191. Input. char of interest: ' fib(a - 1 + fib(a -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | pass + return fib(a - 1 + fib(a - 2) | + | def format_a_string(astring: str) -> str: +def somethingelse(): | return ','.join([x for x in astring]) + pass | + | def main() -> int: +def format_a_string(astring: str) -> str: | """DOC_STRING""" + return ','.join([x for x in astring]) | somethingelse() + | fib(12) +def main() -> int: | astring = format_a_string() + """DOC_STRING""" | return 0 + somethingelse() | if __name__ == '__main__': + fib(12) | main() + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 12:21] +CST Stack: + {Node ERROR (9, 8) - (11, 20)} + {Node else_clause (8, 4) - (11, 20)} + {Node if_statement (4, 4) - (11, 20)} + {Node block (1, 4) - (12, 8)} + {Node function_definition (0, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,6 +6,10 @@ + return 1 + elif inset: + return 1 ++ else: ++ return fib(a - 1 + fib(a - 2) ++ ++def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -18,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +193. Input. char of interest: 'ib(a - 1) fib(a - 2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) fib(a - 2) | return fib(a - 1)(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:28 - 10:31] +CST Stack: + {Node ERROR (9, 27) - (9, 30)} + {Node call (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1)(a - 2) ++ return fib(a - 1) fib(a - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +195. Input. char of interest: '(a - 1) + ib(a - 2) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + ib(a - 2) | return fib(a - 1) + ib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +196. Input. char of interest: 'a - 1) + fb(a - 2) + +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fb(a - 2) | return fib(a - 1) + fb(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +197. Input. char of interest: ' - 1) + fi(a - 2) + +d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fi(a - 2) | return fib(a - 1) + fi(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +198. Input. char of interest: '- 1) + fiba - 2) + +de': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1) + fiba - 2) | def somethingelse(): + | pass +def somethingelse(): | + pass | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def main() -> int: + | """DOC_STRING""" +def main() -> int: | somethingelse() + """DOC_STRING""" | fib(12) + somethingelse() | astring = format_a_string() + fib(12) | return 0 + astring = format_a_string() | if __name__ == '__main__': + return 0 | main() +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:38] +CST Stack: + {Node ERROR (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,6 +6,8 @@ + return 1 + elif inset: + return 1 ++ else: ++ return fib(a - 1) + fiba - 2) + + def somethingelse(): + pass +@@ -20,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +199. Input. char of interest: ' 1) + fib( - 2) + +def': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib( - 2) | return fib(a - 1) + fib(-2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(-2) ++ return fib(a - 1) + fib( - 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +201. Input. char of interest: ') + fib(a 2) + +def s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a 2) | return fib(a - 1) + fib(a) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:36 - 10:37] +CST Stack: + {Node ERROR (9, 35) - (9, 36)} + {Node argument_list (9, 31) - (9, 37)} + {Node call (9, 28) - (9, 37)} + {Node binary_operator (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a) ++ return fib(a - 1) + fib(a 2) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +203. Input. char of interest: '+ fib(a - ) + +def som': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - ) | return fib(a - 1) + fib(a) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:35 - 10:36] +CST Stack: + {Node ERROR (9, 34) - (9, 35)} + {Node argument_list (9, 31) - (9, 37)} + {Node call (9, 28) - (9, 37)} + {Node binary_operator (9, 15) - (9, 37)} + {Node return_statement (9, 8) - (9, 37)} + {Node block (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,7 +7,7 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a) ++ return fib(a - 1) + fib(a - ) + + def somethingelse(): + pass +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +204. Input. char of interest: ' fib(a - 2 + +def some': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | pass + return fib(a - 1) + fib(a - 2 | + | def format_a_string(astring: str) -> str: +def somethingelse(): | return ','.join([x for x in astring]) + pass | + | def main() -> int: +def format_a_string(astring: str) -> str: | """DOC_STRING""" + return ','.join([x for x in astring]) | somethingelse() + | fib(12) +def main() -> int: | astring = format_a_string() + """DOC_STRING""" | return 0 + somethingelse() | if __name__ == '__main__': + fib(12) | main() + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 12:21] +CST Stack: + {Node ERROR (9, 8) - (11, 20)} + {Node else_clause (8, 4) - (11, 20)} + {Node if_statement (4, 4) - (11, 20)} + {Node block (1, 4) - (12, 8)} + {Node function_definition (0, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -6,6 +6,10 @@ + return 1 + elif inset: + return 1 ++ else: ++ return fib(a - 1) + fib(a - 2 ++ ++def somethingelse(): + pass + + def format_a_string(astring: str) -> str: +@@ -18,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +205. Input. char of interest: 'fib(a - 2) +def somet': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,7 +8,6 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) +- + def somethingelse(): + pass + +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +206. Input. char of interest: 'ib(a - 2) +def someth': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) +def somethingelse(): | + pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,7 +8,6 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) +- + def somethingelse(): + pass + +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +207. Input. char of interest: 'b(a - 2) + +ef somethi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +ef somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++ef somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +208. Input. char of interest: '(a - 2) + +df somethin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +df somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++df somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +209. Input. char of interest: 'a - 2) + +de something': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +de somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++de somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +211. Input. char of interest: '- 2) + +def omethingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def omethingelse(): | def omethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +212. Input. char of interest: ' 2) + +def smethingels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def smethingelse(): | def smethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +213. Input. char of interest: '2) + +def soethingelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def soethingelse(): | def soethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +214. Input. char of interest: ') + +def somthingelse(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somthingelse(): | def somthingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +215. Input. char of interest: ' + +def somehingelse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somehingelse(): | def somehingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +216. Input. char of interest: ' +def sometingelse():': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def sometingelse(): | def sometingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +217. Input. char of interest: 'def somethngelse(): +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethngelse(): | def somethngelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +218. Input. char of interest: 'ef somethigelse(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethigelse(): | def somethigelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +219. Input. char of interest: 'f somethinelse(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinelse(): | def somethinelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +220. Input. char of interest: ' somethinglse(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinglse(): | def somethinglse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +221. Input. char of interest: 'somethingese(): + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingese(): | def somethingese(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +222. Input. char of interest: 'omethingele(): + p': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingele(): | def somethingele(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +223. Input. char of interest: 'methingels(): + pa': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingels(): | def somethingels(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +224. Input. char of interest: 'ethingelse): + pas': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse): | def format_a_string(astring: str) -> str: + pass | return ','.join([x for x in astring]) + | +def format_a_string(astring: str) -> str: | def main() -> int: + return ','.join([x for x in astring]) | """DOC_STRING""" + | somethingelse() +def main() -> int: | fib(12) + """DOC_STRING""" | astring = format_a_string() + somethingelse() | return 0 + fib(12) | if __name__ == '__main__': + astring = format_a_string() | main() + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 13:9] +CST Stack: + {Node ERROR (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,6 +9,9 @@ + else: + return fib(a - 1) + fib(a - 2) + ++def somethingelse): ++ pass ++ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -19,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +225. Input. char of interest: 'thingelse(: + pass': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(: | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,7 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): ++def somethingelse(: + pass + + def format_a_string(astring: str) -> str: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +226. Input. char of interest: 'hingelse() + pass +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse() | def format_a_string(astring: str) -> str: + pass | return ','.join([x for x in astring]) + | +def format_a_string(astring: str) -> str: | def main() -> int: + return ','.join([x for x in astring]) | """DOC_STRING""" + | somethingelse() +def main() -> int: | fib(12) + """DOC_STRING""" | astring = format_a_string() + somethingelse() | return 0 + fib(12) | if __name__ == '__main__': + astring = format_a_string() | main() + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 13:9] +CST Stack: + {Node ERROR (11, 0) - (12, 8)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,6 +9,9 @@ + else: + return fib(a - 1) + fib(a - 2) + ++def somethingelse() ++ pass ++ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -19,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +227. Input. char of interest: 'ingelse(): pass + +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): pass | def somethingelse(): + | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -9,8 +9,7 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse(): +- pass ++def somethingelse(): pass + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +232. Input. char of interest: 'se(): + ass + +def f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + ass | ass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +233. Input. char of interest: 'e(): + pss + +def fo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pss | pss + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +234. Input. char of interest: '(): + pas + +def for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas | pas + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +235. Input. char of interest: '): + pas + +def form': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas | pas + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +236. Input. char of interest: ': + pass +def forma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,7 +11,6 @@ + + def somethingelse(): + pass +- + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +237. Input. char of interest: ' + pass +def format': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,7 +11,6 @@ + + def somethingelse(): + pass +- + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +238. Input. char of interest: ' pass + +ef format_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +ef format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++ef format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +239. Input. char of interest: ' pass + +df format_a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +df format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++df format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +240. Input. char of interest: ' pass + +de format_a_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +de format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++de format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +242. Input. char of interest: 'pass + +def ormat_a_st': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def ormat_a_string(astring: str) -> str: | def ormat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +243. Input. char of interest: 'ass + +def frmat_a_str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def frmat_a_string(astring: str) -> str: | def frmat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +244. Input. char of interest: 'ss + +def fomat_a_stri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def fomat_a_string(astring: str) -> str: | def fomat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +245. Input. char of interest: 's + +def forat_a_strin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forat_a_string(astring: str) -> str: | def forat_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +246. Input. char of interest: ' + +def formt_a_string': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def formt_a_string(astring: str) -> str: | def formt_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +247. Input. char of interest: ' +def forma_a_string(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forma_a_string(astring: str) -> str: | def forma_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +248. Input. char of interest: 'def formata_string(a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def formata_string(astring: str) -> str: | def formata_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +249. Input. char of interest: 'ef format__string(as': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format__string(astring: str) -> str: | def format__string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +250. Input. char of interest: 'f format_astring(ast': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_astring(astring: str) -> str: | def format_astring(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +251. Input. char of interest: ' format_a_tring(astr': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_tring(astring: str) -> str: | def format_a_tring(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +252. Input. char of interest: 'format_a_sring(astri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_sring(astring: str) -> str: | def format_a_sring(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +253. Input. char of interest: 'ormat_a_sting(astrin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_sting(astring: str) -> str: | def format_a_sting(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +254. Input. char of interest: 'rmat_a_strng(astring': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strng(astring: str) -> str: | def format_a_strng(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +255. Input. char of interest: 'mat_a_strig(astring:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strig(astring: str) -> str: | def format_a_strig(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +256. Input. char of interest: 'at_a_strin(astring: ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strin(astring: str) -> str: | def format_a_strin(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +257. Input. char of interest: 't_a_stringastring: s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_stringastring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_stringastring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +258. Input. char of interest: '_a_string(string: st': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(string: str) -> str: | def format_a_string(string: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +259. Input. char of interest: 'a_string(atring: str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(atring: str) -> str: | def format_a_string(atring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +260. Input. char of interest: '_string(asring: str)': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(asring: str) -> str: | def format_a_string(asring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +261. Input. char of interest: 'string(asting: str) ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(asting: str) -> str: | def format_a_string(asting: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +262. Input. char of interest: 'tring(astrng: str) -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrng: str) -> str: | def format_a_string(astrng: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +263. Input. char of interest: 'ring(astrig: str) ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrig: str) -> str: | def format_a_string(astrig: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +264. Input. char of interest: 'ing(astrin: str) -> ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrin: str) -> str: | def format_a_string(astrin: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +265. Input. char of interest: 'ng(astring str) -> s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring str) -> str: | def format_a_string(astring) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:29 - 15:32] +CST Stack: + {Node ERROR (14, 28) - (14, 31)} + {Node parameters (14, 19) - (14, 32)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring) -> str: ++def format_a_string(astring str) -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +267. Input. char of interest: '(astring: tr) -> str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: tr) -> str: | def format_a_string(astring: tr) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +268. Input. char of interest: 'astring: sr) -> str:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: sr) -> str: | def format_a_string(astring: sr) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +269. Input. char of interest: 'string: st) -> str: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: st) -> str: | def format_a_string(astring: st) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +270. Input. char of interest: 'tring: str -> str: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str -> str: | def format_a_string(astring: str - str): + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:35 - 15:36] +CST Stack: + {Node ERROR (14, 34) - (14, 35)} + {Node binary_operator (14, 29) - (14, 39)} + {Node type (14, 29) - (14, 39)} + {Node typed_parameter (14, 20) - (14, 39)} + {Node parameters (14, 19) - (14, 39)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str - str): ++def format_a_string(astring: str -> str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +272. Input. char of interest: 'ing: str) > str: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) > str: | def format_a_string(astring: str): + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:35 - 15:40] +CST Stack: + {Node ERROR (14, 34) - (14, 39)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str): ++def format_a_string(astring: str) > str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +273. Input. char of interest: 'ng: str) - str: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) - str: | def format_a_string(astring: str): + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:35 - 15:40] +CST Stack: + {Node ERROR (14, 34) - (14, 39)} + {Node function_definition (14, 0) - (15, 41)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,7 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str): ++def format_a_string(astring: str) - str: + return ','.join([x for x in astring]) + + def main() -> int: +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +275. Input. char of interest: ': str) -> tr: + re': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> tr: | def format_a_string(astring: str) -> tr: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +276. Input. char of interest: ' str) -> sr: + ret': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> sr: | def format_a_string(astring: str) -> sr: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +277. Input. char of interest: 'str) -> st: + retu': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> st: | def format_a_string(astring: str) -> st: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +278. Input. char of interest: 'tr) -> str + retur': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str | def format_a_string(astring: str) -> main() - + return ','.join([x for x in astring]) | """DOC_STRING""" + | somethingelse() +def main() -> int: | fib(12) + """DOC_STRING""" | astring = format_a_string() + somethingelse() | return 0 + fib(12) | if __name__ == '__main__': + astring = format_a_string() | main() + return 0 | +if __name__ == '__main__': | + main() | + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [15:38 - 18:4] +CST Stack: + {Node ERROR (14, 37) - (17, 3)} + {Node function_definition (14, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +SyntaxError: invalid syntax at [18:13 - 18:14] +CST Stack: + {Node ERROR (17, 12) - (17, 13)} + {Node binary_operator (17, 4) - (17, 17)} + {Node type (17, 4) - (17, 17)} + {Node function_definition (14, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,11 +12,14 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> main() - int: ++def format_a_string(astring: str) -> str ++ return ','.join([x for x in astring]) ++ ++def main() -> int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +279. Input. char of interest: 'r) -> str: return': + +Input: | ERRPY Recovered AST: +---------------------------------------------------------------------------------------| --------------------------------------------------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: return ','.join([x for x in astring]) | def format_a_string(astring: str) -> str: + | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -12,8 +12,7 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring]) ++def format_a_string(astring: str) -> str: return ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +284. Input. char of interest: ' str: + eturn ','.': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + eturn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ eturn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +285. Input. char of interest: 'str: + rturn ','.j': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + rturn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ rturn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +286. Input. char of interest: 'tr: + reurn ','.jo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + reurn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ reurn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +287. Input. char of interest: 'r: + retrn ','.joi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retrn ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retrn ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +288. Input. char of interest: ': + retun ','.join': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retun ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retun ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +289. Input. char of interest: ' + retur ','.join(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retur ','.join([x for x in astring]) | ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:10] +CST Stack: + {Node ERROR (15, 4) - (15, 9)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- ','.join([x for x in astring]) ++ retur ','.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +291. Input. char of interest: ' return ,'.join([x': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ,'.join([x for x in astring]) | return (, '.join([x for x in astring])) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: empty string cannot be used as identifier at [16:11 - 16:11] +CST Stack: + {Node identifier (15, 10) - (15, 10)} + {Node expression_list (15, 10) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: unterminated string literal (detected at line 16) (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return (, '.join([x for x in astring])) ++ return ,'.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +292. Input. char of interest: ' return ''.join([x ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ''.join([x for x in astring]) | return ''.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +293. Input. char of interest: ' return ',.join([x f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ',.join([x for x in astring]) | return join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:15] +CST Stack: + {Node ERROR (15, 11) - (15, 14)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return join([x for x in astring]) ++ return ',.join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +294. Input. char of interest: 'return ','join([x fo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','join([x for x in astring]) | return join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:12 - 16:15] +CST Stack: + {Node ERROR (15, 11) - (15, 14)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return join([x for x in astring]) ++ return ','join([x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +295. Input. char of interest: 'eturn ','.oin([x for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.oin([x for x in astring]) | return ','.oin([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +296. Input. char of interest: 'turn ','.jin([x for ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jin([x for x in astring]) | return ','.jin([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +297. Input. char of interest: 'urn ','.jon([x for x': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jon([x for x in astring]) | return ','.jon([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +298. Input. char of interest: 'rn ','.joi([x for x ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.joi([x for x in astring]) | return ','.joi([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +299. Input. char of interest: 'n ','.join[x for x i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join[x for x in astring]) | + | def main() -> int: +def main() -> int: | """DOC_STRING""" + """DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:41] +CST Stack: + {Node ERROR (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 17) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,6 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: ++ return ','.join[x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -21,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +300. Input. char of interest: ' ','.join(x for x in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join(x for x in astring]) | return ','.join((x for x in astring)) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:39 - 16:40] +CST Stack: + {Node ERROR (15, 38) - (15, 39)} + {Node generator_expression (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join((x for x in astring)) ++ return ','.join(x for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +301. Input. char of interest: '','.join([ for x in ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([ for x in astring]) | return ','.join([for in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +2 Recoverable errors detected: +SyntaxError: invalid syntax at [16:27 - 16:28] +CST Stack: + {Node ERROR (15, 26) - (15, 27)} + {Node comparison_operator (15, 22) - (15, 38)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} +SyntaxError: keyword: "for" cannot be used as identifier at [16:23 - 16:26] +CST Stack: + {Node identifier (15, 22) - (15, 25)} + {Node comparison_operator (15, 22) - (15, 38)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([for in astring]) ++ return ','.join([ for x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +303. Input. char of interest: ''.join([x or x in as': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x or x in astring]) | return ','.join([x or x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +304. Input. char of interest: '.join([x fr x in ast': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fr x in astring]) | return ','.join([x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:26] +CST Stack: + {Node ERROR (15, 21) - (15, 25)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x in astring]) ++ return ','.join([x fr x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +305. Input. char of interest: 'join([x fo x in astr': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fo x in astring]) | return ','.join([x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:22 - 16:26] +CST Stack: + {Node ERROR (15, 21) - (15, 25)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x in astring]) ++ return ','.join([x fo x in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +307. Input. char of interest: 'in([x for in astrin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for in astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:39] +CST Stack: + {Node ERROR (15, 23) - (15, 38)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for in astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +309. Input. char of interest: '([x for x n astring]': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x n astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:39] +CST Stack: + {Node ERROR (15, 23) - (15, 38)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for x n astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +310. Input. char of interest: '[x for x i astring])': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x i astring]) | return ','.join([x]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:24 - 16:39] +CST Stack: + {Node ERROR (15, 23) - (15, 38)} + {Node list (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x]) ++ return ','.join([x for x i astring]) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +312. Input. char of interest: ' for x in string]) + +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in string]) | return ','.join([x for x in string]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +313. Input. char of interest: 'for x in atring]) + +d': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in atring]) | return ','.join([x for x in atring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +314. Input. char of interest: 'or x in asring]) + +de': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in asring]) | return ','.join([x for x in asring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +315. Input. char of interest: 'r x in asting]) + +def': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in asting]) | return ','.join([x for x in asting]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +316. Input. char of interest: ' x in astrng]) + +def ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrng]) | return ','.join([x for x in astrng]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +317. Input. char of interest: 'x in astrig]) + +def m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrig]) | return ','.join([x for x in astrig]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +318. Input. char of interest: ' in astrin]) + +def ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrin]) | return ','.join([x for x in astrin]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +319. Input. char of interest: 'in astring) + +def mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring) | return ','.join() + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:21 - 16:40] +CST Stack: + {Node ERROR (15, 20) - (15, 39)} + {Node argument_list (15, 19) - (15, 40)} + {Node call (15, 11) - (15, 40)} + {Node return_statement (15, 4) - (15, 40)} + {Node block (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,7 +13,7 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join() ++ return ','.join([x for x in astring) + + def main() -> int: + """DOC_STRING""" +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +320. Input. char of interest: 'n astring] + +def main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring] | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 25:11] +CST Stack: + {Node ERROR (15, 4) - (24, 10)} + {Node function_definition (14, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,14 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring] ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +321. Input. char of interest: ' astring]) +def main(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,7 +14,6 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +- + def main() -> int: + """DOC_STRING""" + somethingelse() +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +322. Input. char of interest: 'astring]) +def main()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) +def main() -> int: | + """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,7 +14,6 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) +- + def main() -> int: + """DOC_STRING""" + somethingelse() +@@ -22,4 +21,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +323. Input. char of interest: 'string]) + +ef main() ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +ef main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++ef main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +324. Input. char of interest: 'tring]) + +df main() -': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +df main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++df main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +325. Input. char of interest: 'ring]) + +de main() ->': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +de main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++de main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +327. Input. char of interest: 'ng]) + +def ain() -> i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def ain() -> int: | def ain() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +328. Input. char of interest: 'g]) + +def min() -> in': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def min() -> int: | def min() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +329. Input. char of interest: ']) + +def man() -> int': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def man() -> int: | def man() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +330. Input. char of interest: ') + +def mai() -> int:': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def mai() -> int: | def mai() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +331. Input. char of interest: ' + +def main) -> int: +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main) -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main) -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +332. Input. char of interest: ' +def main( -> int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main( -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 25:11] +CST Stack: + {Node ERROR (17, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,13 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main( -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +334. Input. char of interest: 'ef main() > int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() > int: | def main(): + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:12 - 18:17] +CST Stack: + {Node ERROR (17, 11) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main(): ++def main() > int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +335. Input. char of interest: 'f main() - int: + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() - int: | def main(): + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:12 - 18:17] +CST Stack: + {Node ERROR (17, 11) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main(): ++def main() - int: + """DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +337. Input. char of interest: 'main() -> nt: + ""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> nt: | def main() -> nt: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +338. Input. char of interest: 'ain() -> it: + """': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> it: | def main() -> it: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +339. Input. char of interest: 'in() -> in: + """D': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> in: | def main() -> in: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: keyword: "in" cannot be used as identifier at [18:15 - 18:17] +CST Stack: + {Node identifier (17, 14) - (17, 16)} + {Node type (17, 14) - (17, 16)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected ':' (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +340. Input. char of interest: 'n() -> int + """DO': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int | def main() -> __name__ == '__main__': + """DOC_STRING""" | main() + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:15 - 24:3] +CST Stack: + {Node ERROR (17, 14) - (23, 2)} + {Node function_definition (17, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,5 +15,11 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> __name__ == '__main__': +- main()+def main() -> int ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +341. Input. char of interest: '() -> int: """DOC': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: """DOC_STRING""" | def main() -> int: + somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -15,11 +15,10 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int: +- """DOC_STRING""" +-somethingelse() +-fib(12) +-astring = format_a_string() +-return 0 ++def main() -> int: """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +346. Input. char of interest: ' int: + ""DOC_STRI': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + ""DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +347. Input. char of interest: 'int: + ""DOC_STRIN': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + ""DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +348. Input. char of interest: 'nt: + ""DOC_STRING': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + ""DOC_STRING""" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ ""DOC_STRING""" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +349. Input. char of interest: 't: + """OC_STRING"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """OC_STRING""" | """OC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +350. Input. char of interest: ': + """DC_STRING""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DC_STRING""" | """DC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +351. Input. char of interest: ' + """DO_STRING"""': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DO_STRING""" | """DO_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +352. Input. char of interest: ' """DOCSTRING""" +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOCSTRING""" | """DOCSTRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +353. Input. char of interest: ' """DOC_TRING""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_TRING""" | """DOC_TRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +354. Input. char of interest: ' """DOC_SRING""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_SRING""" | """DOC_SRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +355. Input. char of interest: ' """DOC_STING""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STING""" | """DOC_STING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +356. Input. char of interest: '"""DOC_STRNG""" + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRNG""" | """DOC_STRNG""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +357. Input. char of interest: '""DOC_STRIG""" + s': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIG""" | """DOC_STRIG""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +358. Input. char of interest: '"DOC_STRIN""" + so': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIN""" | """DOC_STRIN""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +359. Input. char of interest: 'DOC_STRING"" + som': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +360. Input. char of interest: 'OC_STRING"" + some': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +361. Input. char of interest: 'C_STRING"" + somet': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" | somethingelse() + somethingelse() | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,9 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: ++ """DOC_STRING"" + somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +362. Input. char of interest: '_STRING""" someth': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" somethingelse() | """DOC_STRING""" + fib(12) | somethingelse() + astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,10 +16,9 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING""" +- somethingelse() ++ """DOC_STRING""" somethingelse() + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +367. Input. char of interest: 'NG""" + omethingel': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + omethingelse() | omethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +368. Input. char of interest: 'G""" + smethingels': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + smethingelse() | smethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +369. Input. char of interest: '""" + soethingelse': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + soethingelse() | soethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +370. Input. char of interest: '"" + somthingelse(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somthingelse() | somthingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +371. Input. char of interest: '" + somehingelse()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somehingelse() | somehingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +372. Input. char of interest: ' + sometingelse() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + sometingelse() | sometingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +373. Input. char of interest: ' somethngelse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethngelse() | somethngelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +374. Input. char of interest: ' somethigelse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethigelse() | somethigelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +375. Input. char of interest: ' somethinelse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinelse() | somethinelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +376. Input. char of interest: ' somethinglse() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinglse() | somethinglse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +377. Input. char of interest: 'somethingese() + f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingese() | somethingese() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +378. Input. char of interest: 'omethingele() + fi': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingele() | somethingele() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +379. Input. char of interest: 'methingels() + fib': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingels() | somethingels() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +380. Input. char of interest: 'ethingelse) + fib(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse) | fib(12) + fib(12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:5 - 20:19] +CST Stack: + {Node ERROR (19, 4) - (19, 18)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,8 +17,9 @@ + + def main() -> int: + """DOC_STRING""" ++ somethingelse) + fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +381. Input. char of interest: 'thingelse( + fib(1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | main() + somethingelse( | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:19 - 24:27] +CST Stack: + {Node ERROR (17, 18) - (23, 26)} + {Node function_definition (17, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- main()+ """DOC_STRING""" ++ somethingelse( ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +382. Input. char of interest: 'hingelse() fib(12': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() fib(12) | somethingelse()(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [20:24 - 20:27] +CST Stack: + {Node ERROR (19, 23) - (19, 26)} + {Node call (19, 4) - (19, 30)} + {Node expression_statement (19, 4) - (19, 30)} + {Node block (18, 4) - (21, 12)} + {Node function_definition (17, 0) - (21, 12)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,8 +17,8 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse()(12) ++ somethingelse() fib(12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +387. Input. char of interest: 'lse() + ib(12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + ib(12) | ib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +388. Input. char of interest: 'se() + fb(12) + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fb(12) | fb(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +389. Input. char of interest: 'e() + fi(12) + a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fi(12) | fi(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +390. Input. char of interest: '() + fib12) + as': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib12) | astring = format_a_string() + astring = format_a_string() | return 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:11] +CST Stack: + {Node ERROR (20, 4) - (20, 10)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,7 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() ++ fib12) + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +391. Input. char of interest: ') + fib(2) + ast': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(2) | fib(2) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +392. Input. char of interest: ' + fib(1) + astr': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(1) | fib(1) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +393. Input. char of interest: ' fib(12 + astri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | main() + somethingelse() | + fib(12 | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:19 - 24:27] +CST Stack: + {Node ERROR (17, 18) - (23, 26)} + {Node function_definition (17, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,10 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- main()+ """DOC_STRING""" ++ somethingelse() ++ fib(12 ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +394. Input. char of interest: ' fib(12) astrin': + +Input: | ERRPY Recovered AST: +-----------------------------------------------| ----------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) astring = format_a_string() | fib(12) + return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,8 +18,7 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12) +- astring = format_a_string() ++ fib(12) astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +399. Input. char of interest: 'b(12) + string = f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + string = format_a_string() | string = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + string = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +400. Input. char of interest: '(12) + atring = fo': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + atring = format_a_string() | atring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + atring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +401. Input. char of interest: '12) + asring = for': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + asring = format_a_string() | asring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + asring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +402. Input. char of interest: '2) + asting = form': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + asting = format_a_string() | asting = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + asting = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +403. Input. char of interest: ') + astrng = forma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrng = format_a_string() | astrng = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astrng = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +404. Input. char of interest: ' + astrig = format': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrig = format_a_string() | astrig = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astrig = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +405. Input. char of interest: ' astrin = format_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrin = format_a_string() | astrin = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astrin = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +407. Input. char of interest: ' astring format_a_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring format_a_string() | format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:12] +CST Stack: + {Node ERROR (21, 4) - (21, 11)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- format_a_string() ++ astring format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +409. Input. char of interest: 'astring = ormat_a_st': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = ormat_a_string() | astring = ormat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = ormat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +410. Input. char of interest: 'string = frmat_a_str': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = frmat_a_string() | astring = frmat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = frmat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +411. Input. char of interest: 'tring = fomat_a_stri': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = fomat_a_string() | astring = fomat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = fomat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +412. Input. char of interest: 'ring = forat_a_strin': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forat_a_string() | astring = forat_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = forat_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +413. Input. char of interest: 'ing = formt_a_string': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = formt_a_string() | astring = formt_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = formt_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +414. Input. char of interest: 'ng = forma_a_string(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forma_a_string() | astring = forma_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = forma_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +415. Input. char of interest: 'g = formata_string()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = formata_string() | astring = formata_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = formata_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +416. Input. char of interest: ' = format__string() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format__string() | astring = format__string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format__string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +417. Input. char of interest: '= format_astring() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_astring() | astring = format_astring() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_astring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +418. Input. char of interest: ' format_a_tring() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_tring() | astring = format_a_tring() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_tring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +419. Input. char of interest: 'format_a_sring() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_sring() | astring = format_a_sring() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_sring() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +420. Input. char of interest: 'ormat_a_sting() + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_sting() | astring = format_a_sting() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_sting() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +421. Input. char of interest: 'rmat_a_strng() + r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strng() | astring = format_a_strng() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_strng() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +422. Input. char of interest: 'mat_a_strig() + re': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strig() | astring = format_a_strig() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_strig() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +423. Input. char of interest: 'at_a_strin() + ret': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strin() | astring = format_a_strin() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_strin() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +424. Input. char of interest: 't_a_string) + retu': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string) | astring = 0 + return 0 | if __name__ == '__main__': +if __name__ == '__main__': | main() + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:15 - 23:11] +CST Stack: + {Node ERROR (21, 14) - (22, 10)} + {Node assignment (21, 4) - (22, 12)} + {Node expression_statement (21, 4) - (22, 12)} + {Node block (18, 4) - (22, 12)} + {Node function_definition (17, 0) - (22, 12)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,6 +19,7 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = 0 ++ astring = format_a_string) ++ return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +425. Input. char of interest: '_a_string( + retur': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string( | + return 0 | +if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 25:11] +CST Stack: + {Node ERROR (21, 4) - (24, 10)} + {Node block (18, 4) - (24, 10)} + {Node function_definition (17, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,4 +18,8 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12)+ fib(12) ++ astring = format_a_string( ++ return 0 ++if __name__ == '__main__': ++ main() + + +=============================================================================== +426. Input. char of interest: 'a_string() return': + +Input: | ERRPY Recovered AST: +------------------------------------------------| ------------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() return 0 | astring = format_a_string() +if __name__ == '__main__': | return 0 + main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,7 +19,6 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string() +- return 0 ++ astring = format_a_string() return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +431. Input. char of interest: 'ing() + eturn 0 +if': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + eturn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ eturn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +432. Input. char of interest: 'ng() + rturn 0 +if ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + rturn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ rturn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +433. Input. char of interest: 'g() + reurn 0 +if _': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + reurn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ reurn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +434. Input. char of interest: '() + retrn 0 +if __': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retrn 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retrn 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +435. Input. char of interest: ') + retun 0 +if __n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retun 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retun 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +436. Input. char of interest: ' + retur 0 +if __na': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retur 0 | 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 23:10] +CST Stack: + {Node ERROR (22, 4) - (22, 9)} + {Node block (18, 4) - (22, 11)} + {Node function_definition (17, 0) - (22, 11)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- 0 ++ retur 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +438. Input. char of interest: ' return +if __name': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return | return +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,6 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return ++ return + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== +439. Input. char of interest: ' return 0if __name_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0if __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [23:5 - 24:11] +CST Stack: + {Node ERROR (22, 4) - (23, 10)} + {Node block (18, 4) - (23, 10)} + {Node function_definition (17, 0) - (23, 10)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,4 +19,6 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string()+ astring = format_a_string() ++ return 0if __name__ == '__main__': ++ main() + + +=============================================================================== +440. Input. char of interest: ' return 0 +f __name__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +f __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++f __name__ == '__main__': ++ main() + + +=============================================================================== +441. Input. char of interest: 'return 0 +i __name__ ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +i __name__ == '__main__': | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 25:11] +CST Stack: + {Node ERROR (0, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++i __name__ == '__main__': ++ main() + + +=============================================================================== +443. Input. char of interest: 'turn 0 +if _name__ ==': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _name__ == '__main__': | if _name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if _name__ == '__main__': +- main()+ main() + + +=============================================================================== +444. Input. char of interest: 'urn 0 +if _name__ == ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _name__ == '__main__': | if _name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if _name__ == '__main__': +- main()+ main() + + +=============================================================================== +445. Input. char of interest: 'rn 0 +if __ame__ == '': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __ame__ == '__main__': | if __ame__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __ame__ == '__main__': +- main()+ main() + + +=============================================================================== +446. Input. char of interest: 'n 0 +if __nme__ == '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nme__ == '__main__': | if __nme__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __nme__ == '__main__': +- main()+ main() + + +=============================================================================== +447. Input. char of interest: ' 0 +if __nae__ == '__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nae__ == '__main__': | if __nae__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __nae__ == '__main__': +- main()+ main() + + +=============================================================================== +448. Input. char of interest: '0 +if __nam__ == '__m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nam__ == '__main__': | if __nam__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __nam__ == '__main__': +- main()+ main() + + +=============================================================================== +449. Input. char of interest: ' +if __name_ == '__ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ == '__main__': | if __name_ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name_ == '__main__': +- main()+ main() + + +=============================================================================== +450. Input. char of interest: 'if __name_ == '__mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ == '__main__': | if __name_ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name_ == '__main__': +- main()+ main() + + +=============================================================================== +452. Input. char of interest: ' __name__ = '__main_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = '__main__': | if '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:14] +CST Stack: + {Node ERROR (23, 3) - (23, 13)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if '__main__': +- main()+if __name__ = '__main__': ++ main() + + +=============================================================================== +453. Input. char of interest: '__name__ = '__main__': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = '__main__': | if '__main__': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:4 - 24:14] +CST Stack: + {Node ERROR (23, 3) - (23, 13)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if '__main__': +- main()+if __name__ = '__main__': ++ main() + + +=============================================================================== +455. Input. char of interest: 'name__ == __main__':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == __main__': | if __name__ == ': + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:16 - 24:24] +CST Stack: + {Node ERROR (23, 15) - (23, 23)} + {Node comparison_operator (23, 3) - (23, 24)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: unterminated string literal (detected at line 24) (, line 24) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == ': +- main()+if __name__ == __main__': ++ main() + + +=============================================================================== +456. Input. char of interest: 'ame__ == '_main__': +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_main__': | if __name__ == '_main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '_main__': +- main()+ main() + + +=============================================================================== +457. Input. char of interest: 'me__ == '_main__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_main__': | if __name__ == '_main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '_main__': +- main()+ main() + + +=============================================================================== +458. Input. char of interest: 'e__ == '__ain__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ain__': | if __name__ == '__ain__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__ain__': +- main()+ main() + + +=============================================================================== +459. Input. char of interest: '__ == '__min__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__min__': | if __name__ == '__min__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__min__': +- main()+ main() + + +=============================================================================== +460. Input. char of interest: '_ == '__man__': + ': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__man__': | if __name__ == '__man__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__man__': +- main()+ main() + + +=============================================================================== +461. Input. char of interest: ' == '__mai__': + m': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__mai__': | if __name__ == '__mai__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__mai__': +- main()+ main() + + +=============================================================================== +462. Input. char of interest: '== '__main_': + ma': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_': | if __name__ == '__main_': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main_': +- main()+ main() + + +=============================================================================== +463. Input. char of interest: '= '__main_': + mai': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_': | if __name__ == '__main_': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main_': +- main()+ main() + + +=============================================================================== +464. Input. char of interest: ' '__main__: + main': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__: | if __name__ == __main__: + main() | main() + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:16 - 24:17] +CST Stack: + {Node ERROR (23, 15) - (23, 16)} + {Node comparison_operator (23, 3) - (23, 24)} + {Node if_statement (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == __main__: +- main()+if __name__ == '__main__: ++ main() + + +=============================================================================== +465. Input. char of interest: ''__main__' + main(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__' | + main() | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 25:11] +CST Stack: + {Node ERROR (23, 0) - (24, 10)} + {Node module (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,6 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__main__' ++ main() + + +=============================================================================== +466. Input. char of interest: '__main__': main()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': main() | if __name__ == '__main__': + | main() + + +ERRPY Recovered AST diff: +--- ++++ +@@ -21,5 +21,4 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__': +- main()+if __name__ == '__main__': main() + + +=============================================================================== +471. Input. char of interest: 'n__': + ain() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + ain() | ain() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- ain()+ ain() + + +=============================================================================== +472. Input. char of interest: '__': + min() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + min() | min() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- min()+ min() + + +=============================================================================== +473. Input. char of interest: '_': + man() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + man() | man() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- man()+ man() + + +=============================================================================== +474. Input. char of interest: '': + mai() +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + mai() | mai() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- mai()+ mai() + + +=============================================================================== +475. Input. char of interest: ': + main) +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main) | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [25:5 - 25:10] +CST Stack: + {Node ERROR (24, 4) - (24, 9)} + {Node if_statement (23, 0) - (24, 9)} + {Node module (0, 0) - (25, 0)} +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 24 (, line 24) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,4 +21,5 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__':+if __name__ == '__main__': ++ main) + + +=============================================================================== +476. Input. char of interest: ' + main( +': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main( | + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 26:1] +CST Stack: + {Node ERROR (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main( + + +=============================================================================== +477. Input. char of interest: ' main()': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== diff --git a/source/errpy/tests/test_resources/error_recovery/simple.pytest.tailtest._expected_results/Simple-broad-case_expected_results b/source/errpy/tests/test_resources/error_recovery/simple.pytest.tailtest._expected_results/Simple-broad-case_expected_results new file mode 100644 index 00000000000..bd5490be1f2 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery/simple.pytest.tailtest._expected_results/Simple-broad-case_expected_results @@ -0,0 +1,10900 @@ +@generated + +Errpy makes empty AST (weird) with input prior to and including: +2.->def<- + +4.->def f<- + +5.->def fi<- + +6.->def fib<- + +7.->def fib(<- + +8.->def fib(a<- + +9.->def fib(a:<- + +11.->def fib(a: i<- + +12.->def fib(a: in<- + +13.->def fib(a: int<- + +14.->def fib(a: int)<- + +16.->def fib(a: int) -<- + +17.->def fib(a: int) -><- + +19.->def fib(a: int) -> i<- + +20.->def fib(a: int) -> in<- + +21.->def fib(a: int) -> int<- + +34.->ib(a: int) -> int: + tmp = (<- + +36.->(a: int) -> int: + tmp = (a,<- + +75.->a, bb = tmp + inset = a in {<- + +77.-> bb = tmp + inset = a in {0,<- + +185.-> + else: + return fib(<- + +198.-> return fib(a - 1) + fib(<- + +299.->) -> str: + return ','.join(<- + +300.-> -> str: + return ','.join([<- + +380.->C_STRING""" + somethingelse(<- + +390.->" + somethingelse() + fib(<- + +424.-> astring = format_a_string(<- + +475.->ame__ == '__main__': + main(<- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Input. char of interest: 'd': + +Input:| ERRPY +------| ------ +d | d + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +1. Input. char of interest: 'e': + +Input: | ERRPY R +-------| ------- +de | de + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +2. Input. char of interest: 'f': + +Input: | ERRPY Re +--------| -------- +def | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:4] +CST Stack: + {Node ERROR (0, 0) - (0, 3)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def + +=============================================================================== +4. Input. char of interest: 'f': + +Input: | ERRPY Reco +----------| ---------- +def f | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:6] +CST Stack: + {Node ERROR (0, 0) - (0, 5)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def f + +=============================================================================== +5. Input. char of interest: 'i': + +Input: | ERRPY Recov +-----------| ----------- +def fi | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:7] +CST Stack: + {Node ERROR (0, 0) - (0, 6)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fi + +=============================================================================== +6. Input. char of interest: 'b': + +Input: | ERRPY Recove +------------| ------------ +def fib | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:8] +CST Stack: + {Node ERROR (0, 0) - (0, 7)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib + +=============================================================================== +7. Input. char of interest: '(': + +Input: | ERRPY Recover +-------------| ------------- +def fib( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:9] +CST Stack: + {Node ERROR (0, 0) - (0, 8)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib( + +=============================================================================== +8. Input. char of interest: 'a': + +Input: | ERRPY Recovere +--------------| -------------- +def fib(a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:10] +CST Stack: + {Node ERROR (0, 0) - (0, 9)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a + +=============================================================================== +9. Input. char of interest: ':': + +Input: | ERRPY Recovered +---------------| --------------- +def fib(a: | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:11] +CST Stack: + {Node ERROR (0, 0) - (0, 10)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: + +=============================================================================== +11. Input. char of interest: 'i': + +Input: | ERRPY Recovered A +-----------------| ----------------- +def fib(a: i | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:13] +CST Stack: + {Node ERROR (0, 0) - (0, 12)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: i + +=============================================================================== +12. Input. char of interest: 'n': + +Input: | ERRPY Recovered AS +------------------| ------------------ +def fib(a: in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:14] +CST Stack: + {Node ERROR (0, 0) - (0, 13)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: in + +=============================================================================== +13. Input. char of interest: 't': + +Input: | ERRPY Recovered AST +-------------------| ------------------- +def fib(a: int | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:15] +CST Stack: + {Node ERROR (0, 0) - (0, 14)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int + +=============================================================================== +14. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +--------------------| -------------------- +def fib(a: int) | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:16] +CST Stack: + {Node ERROR (0, 0) - (0, 15)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) + +=============================================================================== +16. Input. char of interest: '-': + +Input: | ERRPY Recovered AST: +----------------------| ---------------------- +def fib(a: int) - | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:18] +CST Stack: + {Node ERROR (0, 0) - (0, 17)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) - + +=============================================================================== +17. Input. char of interest: '>': + +Input: | ERRPY Recovered AST: +-----------------------| ----------------------- +def fib(a: int) -> | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:19] +CST Stack: + {Node ERROR (0, 0) - (0, 18)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) -> + +=============================================================================== +19. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-------------------------| ------------------------- +def fib(a: int) -> i | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:21] +CST Stack: + {Node ERROR (0, 0) - (0, 20)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) -> i + +=============================================================================== +20. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +--------------------------| -------------------------- +def fib(a: int) -> in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:22] +CST Stack: + {Node ERROR (0, 0) - (0, 21)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) -> in + +=============================================================================== +21. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +---------------------------| --------------------------- +def fib(a: int) -> int | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:23] +CST Stack: + {Node ERROR (0, 0) - (0, 22)} + {Node module (0, 0) - (1, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1 @@ ++def fib(a: int) -> int + +=============================================================================== +22. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 1) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +23. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + | + +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1 +1 @@ +-def fib(a: int) -> int:+def fib(a: int) -> int: + + +=============================================================================== +28. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + t | t + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +29. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tm | tm + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +30. Input. char of interest: 'p': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp | tmp + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +32. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:10] +CST Stack: + {Node ERROR (1, 4) - (1, 9)} + {Node function_definition (0, 0) - (1, 9)} + {Node module (0, 0) - (2, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1 +1,2 @@ +-def fib(a: int) -> int:+def fib(a: int) -> int: ++ tmp = + +=============================================================================== +34. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | + tmp = ( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 3:1] +CST Stack: + {Node ERROR (0, 0) - (2, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,2 @@ ++def fib(a: int) -> int: ++ tmp = ( + +=============================================================================== +35. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:13] +CST Stack: + {Node ERROR (1, 4) - (1, 12)} + {Node function_definition (0, 0) - (1, 12)} + {Node module (0, 0) - (2, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1 +1,2 @@ +-def fib(a: int) -> int:+def fib(a: int) -> int: ++ tmp = (a + +=============================================================================== +36. Input. char of interest: ',': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | + tmp = (a, | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 3:1] +CST Stack: + {Node ERROR (0, 0) - (2, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,2 @@ ++def fib(a: int) -> int: ++ tmp = (a, + +=============================================================================== +38. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:5 - 2:16] +CST Stack: + {Node ERROR (1, 4) - (1, 15)} + {Node function_definition (0, 0) - (1, 15)} + {Node module (0, 0) - (2, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 1 (, line 1) +ERRPY Recovered AST diff: +--- ++++ +@@ -1 +1,2 @@ +-def fib(a: int) -> int:+def fib(a: int) -> int: ++ tmp = (a, a + +=============================================================================== +39. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +40. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,2 +1,2 @@ + def fib(a: int) -> int: +- tmp = (a, a)+ tmp = (a, a) + + +=============================================================================== +45. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + b | b + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +46. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba | ba + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +47. Input. char of interest: ',': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, | (ba,) + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,3 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba,)+ ba, + +=============================================================================== +49. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, b | (ba, b) + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,3 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, b)+ ba, b + +=============================================================================== +50. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb | (ba, bb) + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,3 @@ + def fib(a: int) -> int: + tmp = (a, a) +- (ba, bb)+ ba, bb + +=============================================================================== +52. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:13] +CST Stack: + {Node ERROR (2, 4) - (2, 12)} + {Node block (1, 4) - (2, 12)} + {Node function_definition (0, 0) - (2, 12)} + {Node module (0, 0) - (3, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,2 +1,3 @@ + def fib(a: int) -> int: +- tmp = (a, a)+ tmp = (a, a) ++ ba, bb = + +=============================================================================== +54. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = t | ba, bb = t + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +55. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tm | ba, bb = tm + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +56. Input. char of interest: 'p': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +57. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,3 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp+ ba, bb = tmp + + +=============================================================================== +62. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + i | i + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +63. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + in | in + +1 Recoverable error detected: +SyntaxError: keyword: "in" cannot be used as identifier at [4:5 - 4:7] +CST Stack: + {Node identifier (3, 4) - (3, 6)} + {Node expression_statement (3, 4) - (3, 6)} + {Node block (1, 4) - (3, 6)} + {Node function_definition (0, 0) - (3, 6)} + {Node module (0, 0) - (4, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 4) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +64. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + ins | ins + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +65. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inse | inse + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +66. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset | inset + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +68. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:12] +CST Stack: + {Node ERROR (3, 4) - (3, 11)} + {Node block (1, 4) - (3, 11)} + {Node function_definition (0, 0) - (3, 11)} + {Node module (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp+ ba, bb = tmp ++ inset = + +=============================================================================== +70. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a | inset = a + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +72. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a i | inset = i + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:13 - 4:14] +CST Stack: + {Node ERROR (3, 12) - (3, 13)} + {Node assignment (3, 4) - (3, 15)} + {Node expression_statement (3, 4) - (3, 15)} + {Node block (1, 4) - (3, 15)} + {Node function_definition (0, 0) - (3, 15)} + {Node module (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = i+ inset = a i + +=============================================================================== +73. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:17] +CST Stack: + {Node ERROR (3, 4) - (3, 16)} + {Node block (1, 4) - (3, 16)} + {Node function_definition (0, 0) - (3, 16)} + {Node module (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp+ ba, bb = tmp ++ inset = a in + +=============================================================================== +75. Input. char of interest: '{': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in { | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 5:1] +CST Stack: + {Node ERROR (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,4 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in { + +=============================================================================== +76. Input. char of interest: '0': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:20] +CST Stack: + {Node ERROR (3, 4) - (3, 19)} + {Node block (1, 4) - (3, 19)} + {Node function_definition (0, 0) - (3, 19)} + {Node module (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp+ ba, bb = tmp ++ inset = a in {0 + +=============================================================================== +77. Input. char of interest: ',': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 5:1] +CST Stack: + {Node ERROR (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,4 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, + +=============================================================================== +79. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:23] +CST Stack: + {Node ERROR (3, 4) - (3, 22)} + {Node block (1, 4) - (3, 22)} + {Node function_definition (0, 0) - (3, 22)} + {Node module (0, 0) - (4, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,3 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) +- ba, bb = tmp+ ba, bb = tmp ++ inset = a in {0, 1 + +=============================================================================== +80. Input. char of interest: '}': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +81. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,4 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} + + +=============================================================================== +86. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + i | i + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +87. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:7] +CST Stack: + {Node ERROR (4, 4) - (4, 6)} + {Node block (1, 4) - (4, 6)} + {Node function_definition (0, 0) - (4, 6)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if + +=============================================================================== +89. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:9] +CST Stack: + {Node ERROR (4, 4) - (4, 8)} + {Node block (1, 4) - (4, 8)} + {Node function_definition (0, 0) - (4, 8)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a + +=============================================================================== +91. Input. char of interest: '<': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a < | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:11] +CST Stack: + {Node ERROR (4, 4) - (4, 10)} + {Node block (1, 4) - (4, 10)} + {Node function_definition (0, 0) - (4, 10)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a < + +=============================================================================== +92. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:12] +CST Stack: + {Node ERROR (4, 4) - (4, 11)} + {Node block (1, 4) - (4, 11)} + {Node function_definition (0, 0) - (4, 11)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= + +=============================================================================== +94. Input. char of interest: '2': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:14] +CST Stack: + {Node ERROR (4, 4) - (4, 13)} + {Node block (1, 4) - (4, 13)} + {Node function_definition (0, 0) - (4, 13)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 + +=============================================================================== +96. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 o | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:16] +CST Stack: + {Node ERROR (4, 4) - (4, 15)} + {Node block (1, 4) - (4, 15)} + {Node function_definition (0, 0) - (4, 15)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 o + +=============================================================================== +97. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:17] +CST Stack: + {Node ERROR (4, 4) - (4, 16)} + {Node block (1, 4) - (4, 16)} + {Node function_definition (0, 0) - (4, 16)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 or + +=============================================================================== +99. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:19] +CST Stack: + {Node ERROR (4, 4) - (4, 18)} + {Node block (1, 4) - (4, 18)} + {Node function_definition (0, 0) - (4, 18)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 or a + +=============================================================================== +101. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:21] +CST Stack: + {Node ERROR (4, 4) - (4, 20)} + {Node block (1, 4) - (4, 20)} + {Node function_definition (0, 0) - (4, 20)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 or a = + +=============================================================================== +102. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:22] +CST Stack: + {Node ERROR (4, 4) - (4, 21)} + {Node block (1, 4) - (4, 21)} + {Node function_definition (0, 0) - (4, 21)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 or a == + +=============================================================================== +104. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +----------------------------| ---------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [5:5 - 5:24] +CST Stack: + {Node ERROR (4, 4) - (4, 23)} + {Node block (1, 4) - (4, 23)} + {Node function_definition (0, 0) - (4, 23)} + {Node module (0, 0) - (5, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -1,4 +1,5 @@ + def fib(a: int) -> int: + tmp = (a, a) + ba, bb = tmp +- inset = a in {0, 1}+ inset = a in {0, 1} ++ if a <= 2 or a == 1 + +=============================================================================== +105. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 5 (, line 5) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +106. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + | + +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 5 (, line 5) +ERRPY Recovered AST diff: +--- ++++ +@@ -2,4 +2,4 @@ + tmp = (a, a) + ba, bb = tmp + inset = a in {0, 1} +- if a <= 2 or a == 1:+ if a <= 2 or a == 1: + + +=============================================================================== +115. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + r | r + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +116. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + re | re + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +117. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + ret | ret + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +118. Input. char of interest: 'u': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retu | retu + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +119. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + retur | retur + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +120. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return | return + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +122. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +123. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,4 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 + + +=============================================================================== +128. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + e | e + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +129. Input. char of interest: 'l': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + el | el + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +130. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + eli | eli + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +131. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:9] +CST Stack: + {Node ERROR (6, 4) - (6, 8)} + {Node block (1, 4) - (6, 8)} + {Node function_definition (0, 0) - (6, 8)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif + +=============================================================================== +133. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif i | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:11] +CST Stack: + {Node ERROR (6, 4) - (6, 10)} + {Node block (1, 4) - (6, 10)} + {Node function_definition (0, 0) - (6, 10)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif i + +=============================================================================== +134. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:12] +CST Stack: + {Node ERROR (6, 4) - (6, 11)} + {Node block (1, 4) - (6, 11)} + {Node function_definition (0, 0) - (6, 11)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif in + +=============================================================================== +135. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif ins | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:13] +CST Stack: + {Node ERROR (6, 4) - (6, 12)} + {Node block (1, 4) - (6, 12)} + {Node function_definition (0, 0) - (6, 12)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif ins + +=============================================================================== +136. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inse | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:14] +CST Stack: + {Node ERROR (6, 4) - (6, 13)} + {Node block (1, 4) - (6, 13)} + {Node function_definition (0, 0) - (6, 13)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif inse + +=============================================================================== +137. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [7:5 - 7:15] +CST Stack: + {Node ERROR (6, 4) - (6, 14)} + {Node block (1, 4) - (6, 14)} + {Node function_definition (0, 0) - (6, 14)} + {Node module (0, 0) - (7, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -3,4 +3,5 @@ + ba, bb = tmp + inset = a in {0, 1} + if a <= 2 or a == 1: +- return 1+ return 1 ++ elif inset + +=============================================================================== +138. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + +Output AST is not valid according to CPython: expected an indented block after 'elif' statement on line 7 (, line 7) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +139. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + | + +Output AST is not valid according to CPython: expected an indented block after 'elif' statement on line 7 (, line 7) +ERRPY Recovered AST diff: +--- ++++ +@@ -4,4 +4,4 @@ + inset = a in {0, 1} + if a <= 2 or a == 1: + return 1 +- elif inset:+ elif inset: + + +=============================================================================== +148. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + r | r + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +149. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + re | re + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +150. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + ret | ret + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +151. Input. char of interest: 'u': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retu | retu + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +152. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + retur | retur + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +153. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return | return + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +155. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +156. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,4 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 + + +=============================================================================== +161. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + e | e + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +162. Input. char of interest: 'l': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + el | el + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +163. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + els | els + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +164. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [9:5 - 9:9] +CST Stack: + {Node ERROR (8, 4) - (8, 8)} + {Node block (1, 4) - (8, 8)} + {Node function_definition (0, 0) - (8, 8)} + {Node module (0, 0) - (9, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,5 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else + +=============================================================================== +165. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,5 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: + +=============================================================================== +166. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,5 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: + + +=============================================================================== +175. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + r | r + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +176. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + re | re + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +177. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + ret | ret + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +178. Input. char of interest: 'u': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retu | retu + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +179. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + retur | retur + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +180. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return | return + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +182. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return f | return f + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +183. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fi | return fi + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +184. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib | return fib + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +185. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 11:1] +CST Stack: + {Node ERROR (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,10 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib( + +=============================================================================== +186. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:21] +CST Stack: + {Node ERROR (9, 8) - (9, 20)} + {Node else_clause (8, 4) - (9, 20)} + {Node if_statement (4, 4) - (9, 20)} + {Node block (1, 4) - (9, 20)} + {Node function_definition (0, 0) - (9, 20)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a + +=============================================================================== +188. Input. char of interest: '-': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:23] +CST Stack: + {Node ERROR (9, 8) - (9, 22)} + {Node else_clause (8, 4) - (9, 22)} + {Node if_statement (4, 4) - (9, 22)} + {Node block (1, 4) - (9, 22)} + {Node function_definition (0, 0) - (9, 22)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - + +=============================================================================== +190. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +-----------------------------| ----------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:25] +CST Stack: + {Node ERROR (9, 8) - (9, 24)} + {Node else_clause (8, 4) - (9, 24)} + {Node if_statement (4, 4) - (9, 24)} + {Node block (1, 4) - (9, 24)} + {Node function_definition (0, 0) - (9, 24)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - 1 + +=============================================================================== +191. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +------------------------------| ------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) | return fib(a - 1) + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +193. Input. char of interest: '+': + +Input: | ERRPY Recovered AST: +--------------------------------| -------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1) + | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:28] +CST Stack: + {Node ERROR (9, 8) - (9, 27)} + {Node else_clause (8, 4) - (9, 27)} + {Node if_statement (4, 4) - (9, 27)} + {Node block (1, 4) - (9, 27)} + {Node function_definition (0, 0) - (9, 27)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - 1) + + +=============================================================================== +195. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------| ---------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + f | return fib(a - 1) + f + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +196. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-----------------------------------| ----------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fi | return fib(a - 1) + fi + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +197. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +------------------------------------| ------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib | return fib(a - 1) + fib + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +198. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +-------------------------------------| ------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 11:1] +CST Stack: + {Node ERROR (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,10 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib( + +=============================================================================== +199. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +--------------------------------------| -------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1) + fib(a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:34] +CST Stack: + {Node ERROR (9, 8) - (9, 33)} + {Node else_clause (8, 4) - (9, 33)} + {Node if_statement (4, 4) - (9, 33)} + {Node block (1, 4) - (9, 33)} + {Node function_definition (0, 0) - (9, 33)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - 1) + fib(a + +=============================================================================== +201. Input. char of interest: '-': + +Input: | ERRPY Recovered AST: +----------------------------------------| ---------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1) + fib(a - | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:36] +CST Stack: + {Node ERROR (9, 8) - (9, 35)} + {Node else_clause (8, 4) - (9, 35)} + {Node if_statement (4, 4) - (9, 35)} + {Node block (1, 4) - (9, 35)} + {Node function_definition (0, 0) - (9, 35)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - 1) + fib(a - + +=============================================================================== +203. Input. char of interest: '2': + +Input: | ERRPY Recovered AST: +------------------------------------------| ------------------------------------------ +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | + return fib(a - 1) + fib(a - 2 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [10:9 - 10:38] +CST Stack: + {Node ERROR (9, 8) - (9, 37)} + {Node else_clause (8, 4) - (9, 37)} + {Node if_statement (4, 4) - (9, 37)} + {Node block (1, 4) - (9, 37)} + {Node function_definition (0, 0) - (9, 37)} + {Node module (0, 0) - (10, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -5,4 +5,6 @@ + if a <= 2 or a == 1: + return 1 + elif inset: +- return 1+ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2 + +=============================================================================== +204. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +205. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,4 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) + + +=============================================================================== +206. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,5 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ + + +=============================================================================== +207. Input. char of interest: 'd': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | d +d | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,4 +8,5 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) ++ + d + +=============================================================================== +208. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | de +de | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -8,4 +8,5 @@ + return 1 + else: + return fib(a - 1) + fib(a - 2) ++ + de + +=============================================================================== +209. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:4] +CST Stack: + {Node ERROR (11, 0) - (11, 3)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def + +=============================================================================== +211. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def s | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:6] +CST Stack: + {Node ERROR (11, 0) - (11, 5)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def s + +=============================================================================== +212. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def so | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:7] +CST Stack: + {Node ERROR (11, 0) - (11, 6)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def so + +=============================================================================== +213. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def som | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:8] +CST Stack: + {Node ERROR (11, 0) - (11, 7)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def som + +=============================================================================== +214. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def some | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:9] +CST Stack: + {Node ERROR (11, 0) - (11, 8)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def some + +=============================================================================== +215. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somet | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:10] +CST Stack: + {Node ERROR (11, 0) - (11, 9)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somet + +=============================================================================== +216. Input. char of interest: 'h': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def someth | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:11] +CST Stack: + {Node ERROR (11, 0) - (11, 10)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def someth + +=============================================================================== +217. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethi | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:12] +CST Stack: + {Node ERROR (11, 0) - (11, 11)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethi + +=============================================================================== +218. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethin | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:13] +CST Stack: + {Node ERROR (11, 0) - (11, 12)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethin + +=============================================================================== +219. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def something | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:14] +CST Stack: + {Node ERROR (11, 0) - (11, 13)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def something + +=============================================================================== +220. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethinge | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:15] +CST Stack: + {Node ERROR (11, 0) - (11, 14)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethinge + +=============================================================================== +221. Input. char of interest: 'l': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingel | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:16] +CST Stack: + {Node ERROR (11, 0) - (11, 15)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethingel + +=============================================================================== +222. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingels | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:17] +CST Stack: + {Node ERROR (11, 0) - (11, 16)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethingels + +=============================================================================== +223. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:18] +CST Stack: + {Node ERROR (11, 0) - (11, 17)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse + +=============================================================================== +224. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:19] +CST Stack: + {Node ERROR (11, 0) - (11, 18)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse( + +=============================================================================== +225. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse() | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [12:1 - 12:20] +CST Stack: + {Node ERROR (11, 0) - (11, 19)} + {Node module (0, 0) - (12, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -7,4 +7,6 @@ + elif inset: + return 1 + else: +- return fib(a - 1) + fib(a - 2)+ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse() + +=============================================================================== +226. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + +Output AST is not valid according to CPython: expected an indented block after function definition on line 12 (, line 12) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +227. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + | + +Output AST is not valid according to CPython: expected an indented block after function definition on line 12 (, line 12) +ERRPY Recovered AST diff: +--- ++++ +@@ -9,4 +9,4 @@ + else: + return fib(a - 1) + fib(a - 2) + +-def somethingelse():+def somethingelse(): + + +=============================================================================== +232. Input. char of interest: 'p': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + p | p + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +233. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pa | pa + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +234. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pas | pas + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +235. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +236. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,4 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass + + +=============================================================================== +237. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,5 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ + + +=============================================================================== +238. Input. char of interest: 'd': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | d +d | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,4 +11,5 @@ + + def somethingelse(): + pass ++ + d + +=============================================================================== +239. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | de +de | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -11,4 +11,5 @@ + + def somethingelse(): + pass ++ + de + +=============================================================================== +240. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:4] +CST Stack: + {Node ERROR (14, 0) - (14, 3)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def + +=============================================================================== +242. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def f | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:6] +CST Stack: + {Node ERROR (14, 0) - (14, 5)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def f + +=============================================================================== +243. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def fo | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:7] +CST Stack: + {Node ERROR (14, 0) - (14, 6)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def fo + +=============================================================================== +244. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def for | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:8] +CST Stack: + {Node ERROR (14, 0) - (14, 7)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def for + +=============================================================================== +245. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def form | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:9] +CST Stack: + {Node ERROR (14, 0) - (14, 8)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def form + +=============================================================================== +246. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def forma | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:10] +CST Stack: + {Node ERROR (14, 0) - (14, 9)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def forma + +=============================================================================== +247. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:11] +CST Stack: + {Node ERROR (14, 0) - (14, 10)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format + +=============================================================================== +248. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:12] +CST Stack: + {Node ERROR (14, 0) - (14, 11)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_ + +=============================================================================== +249. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:13] +CST Stack: + {Node ERROR (14, 0) - (14, 12)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a + +=============================================================================== +250. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:14] +CST Stack: + {Node ERROR (14, 0) - (14, 13)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_ + +=============================================================================== +251. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_s | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:15] +CST Stack: + {Node ERROR (14, 0) - (14, 14)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_s + +=============================================================================== +252. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_st | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:16] +CST Stack: + {Node ERROR (14, 0) - (14, 15)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_st + +=============================================================================== +253. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_str | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:17] +CST Stack: + {Node ERROR (14, 0) - (14, 16)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_str + +=============================================================================== +254. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_stri | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:18] +CST Stack: + {Node ERROR (14, 0) - (14, 17)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_stri + +=============================================================================== +255. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_strin | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:19] +CST Stack: + {Node ERROR (14, 0) - (14, 18)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_strin + +=============================================================================== +256. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:20] +CST Stack: + {Node ERROR (14, 0) - (14, 19)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string + +=============================================================================== +257. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:21] +CST Stack: + {Node ERROR (14, 0) - (14, 20)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string( + +=============================================================================== +258. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:22] +CST Stack: + {Node ERROR (14, 0) - (14, 21)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(a + +=============================================================================== +259. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(as | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:23] +CST Stack: + {Node ERROR (14, 0) - (14, 22)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(as + +=============================================================================== +260. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(ast | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:24] +CST Stack: + {Node ERROR (14, 0) - (14, 23)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(ast + +=============================================================================== +261. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astr | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:25] +CST Stack: + {Node ERROR (14, 0) - (14, 24)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astr + +=============================================================================== +262. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astri | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:26] +CST Stack: + {Node ERROR (14, 0) - (14, 25)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astri + +=============================================================================== +263. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astrin | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:27] +CST Stack: + {Node ERROR (14, 0) - (14, 26)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astrin + +=============================================================================== +264. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:28] +CST Stack: + {Node ERROR (14, 0) - (14, 27)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring + +=============================================================================== +265. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:29] +CST Stack: + {Node ERROR (14, 0) - (14, 28)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: + +=============================================================================== +267. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: s | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:31] +CST Stack: + {Node ERROR (14, 0) - (14, 30)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: s + +=============================================================================== +268. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: st | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:32] +CST Stack: + {Node ERROR (14, 0) - (14, 31)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: st + +=============================================================================== +269. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:33] +CST Stack: + {Node ERROR (14, 0) - (14, 32)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str + +=============================================================================== +270. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:34] +CST Stack: + {Node ERROR (14, 0) - (14, 33)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) + +=============================================================================== +272. Input. char of interest: '-': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) - | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:36] +CST Stack: + {Node ERROR (14, 0) - (14, 35)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) - + +=============================================================================== +273. Input. char of interest: '>': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:37] +CST Stack: + {Node ERROR (14, 0) - (14, 36)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) -> + +=============================================================================== +275. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +-------------------------------------------| ------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> s | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:39] +CST Stack: + {Node ERROR (14, 0) - (14, 38)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) -> s + +=============================================================================== +276. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +--------------------------------------------| -------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> st | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:40] +CST Stack: + {Node ERROR (14, 0) - (14, 39)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) -> st + +=============================================================================== +277. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +---------------------------------------------| --------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [15:1 - 15:41] +CST Stack: + {Node ERROR (14, 0) - (14, 40)} + {Node module (0, 0) - (15, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -10,4 +10,6 @@ + return fib(a - 1) + fib(a - 2) + + def somethingelse(): +- pass+ pass ++ ++def format_a_string(astring: str) -> str + +=============================================================================== +278. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +279. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + | + +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,4 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: + + +=============================================================================== +284. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + r | r + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +285. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + re | re + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +286. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + ret | ret + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +287. Input. char of interest: 'u': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retu | retu + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +288. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + retur | retur + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +289. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return | return + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +291. Input. char of interest: ''': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ' | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:13] +CST Stack: + {Node ERROR (15, 4) - (15, 12)} + {Node function_definition (14, 0) - (15, 12)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ' + +=============================================================================== +292. Input. char of interest: ',': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ', | return (',) + +Output AST is not valid according to CPython: unterminated string literal (detected at line 16) (, line 16) +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,4 @@ + pass + + def format_a_string(astring: str) -> str: +- return (',)+ return ', + +=============================================================================== +293. Input. char of interest: ''': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ',' | return ',' + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +294. Input. char of interest: '.': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','. | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:16] +CST Stack: + {Node ERROR (15, 4) - (15, 15)} + {Node function_definition (14, 0) - (15, 15)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','. + +=============================================================================== +295. Input. char of interest: 'j': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.j | return ','.j + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +296. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.jo | return ','.jo + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +297. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.joi | return ','.joi + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +298. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join | return ','.join + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +299. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 17:1] +CST Stack: + {Node ERROR (0, 0) - (16, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,16 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join( + +=============================================================================== +300. Input. char of interest: '[': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 17:1] +CST Stack: + {Node ERROR (0, 0) - (16, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,16 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([ + +=============================================================================== +301. Input. char of interest: 'x': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:23] +CST Stack: + {Node ERROR (15, 4) - (15, 22)} + {Node function_definition (14, 0) - (15, 22)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x + +=============================================================================== +303. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x f | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:25] +CST Stack: + {Node ERROR (15, 4) - (15, 24)} + {Node function_definition (14, 0) - (15, 24)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x f + +=============================================================================== +304. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x fo | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:26] +CST Stack: + {Node ERROR (15, 4) - (15, 25)} + {Node function_definition (14, 0) - (15, 25)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x fo + +=============================================================================== +305. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:27] +CST Stack: + {Node ERROR (15, 4) - (15, 26)} + {Node function_definition (14, 0) - (15, 26)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for + +=============================================================================== +307. Input. char of interest: 'x': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:29] +CST Stack: + {Node ERROR (15, 4) - (15, 28)} + {Node function_definition (14, 0) - (15, 28)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x + +=============================================================================== +309. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x i | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:31] +CST Stack: + {Node ERROR (15, 4) - (15, 30)} + {Node function_definition (14, 0) - (15, 30)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x i + +=============================================================================== +310. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:32] +CST Stack: + {Node ERROR (15, 4) - (15, 31)} + {Node function_definition (14, 0) - (15, 31)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in + +=============================================================================== +312. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in a | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:34] +CST Stack: + {Node ERROR (15, 4) - (15, 33)} + {Node function_definition (14, 0) - (15, 33)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in a + +=============================================================================== +313. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in as | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:35] +CST Stack: + {Node ERROR (15, 4) - (15, 34)} + {Node function_definition (14, 0) - (15, 34)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in as + +=============================================================================== +314. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in ast | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:36] +CST Stack: + {Node ERROR (15, 4) - (15, 35)} + {Node function_definition (14, 0) - (15, 35)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in ast + +=============================================================================== +315. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astr | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:37] +CST Stack: + {Node ERROR (15, 4) - (15, 36)} + {Node function_definition (14, 0) - (15, 36)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astr + +=============================================================================== +316. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astri | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:38] +CST Stack: + {Node ERROR (15, 4) - (15, 37)} + {Node function_definition (14, 0) - (15, 37)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astri + +=============================================================================== +317. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astrin | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:39] +CST Stack: + {Node ERROR (15, 4) - (15, 38)} + {Node function_definition (14, 0) - (15, 38)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astrin + +=============================================================================== +318. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:40] +CST Stack: + {Node ERROR (15, 4) - (15, 39)} + {Node function_definition (14, 0) - (15, 39)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring + +=============================================================================== +319. Input. char of interest: ']': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring] | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [16:5 - 16:41] +CST Stack: + {Node ERROR (15, 4) - (15, 40)} + {Node function_definition (14, 0) - (15, 40)} + {Node module (0, 0) - (16, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 15 (, line 15) +ERRPY Recovered AST diff: +--- ++++ +@@ -12,4 +12,5 @@ + def somethingelse(): + pass + +-def format_a_string(astring: str) -> str:+def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring] + +=============================================================================== +320. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +321. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,4 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) + + +=============================================================================== +322. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,5 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ + + +=============================================================================== +323. Input. char of interest: 'd': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | d +d | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,4 +14,5 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) ++ + d + +=============================================================================== +324. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | de +de | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -14,4 +14,5 @@ + + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) ++ + de + +=============================================================================== +325. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:4] +CST Stack: + {Node ERROR (17, 0) - (17, 3)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def + +=============================================================================== +327. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def m | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:6] +CST Stack: + {Node ERROR (17, 0) - (17, 5)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def m + +=============================================================================== +328. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def ma | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:7] +CST Stack: + {Node ERROR (17, 0) - (17, 6)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def ma + +=============================================================================== +329. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def mai | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:8] +CST Stack: + {Node ERROR (17, 0) - (17, 7)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def mai + +=============================================================================== +330. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:9] +CST Stack: + {Node ERROR (17, 0) - (17, 8)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main + +=============================================================================== +331. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:10] +CST Stack: + {Node ERROR (17, 0) - (17, 9)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main( + +=============================================================================== +332. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:11] +CST Stack: + {Node ERROR (17, 0) - (17, 10)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() + +=============================================================================== +334. Input. char of interest: '-': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() - | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:13] +CST Stack: + {Node ERROR (17, 0) - (17, 12)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() - + +=============================================================================== +335. Input. char of interest: '>': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:14] +CST Stack: + {Node ERROR (17, 0) - (17, 13)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() -> + +=============================================================================== +337. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> i | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:16] +CST Stack: + {Node ERROR (17, 0) - (17, 15)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() -> i + +=============================================================================== +338. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> in | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:17] +CST Stack: + {Node ERROR (17, 0) - (17, 16)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() -> in + +=============================================================================== +339. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [18:1 - 18:18] +CST Stack: + {Node ERROR (17, 0) - (17, 17)} + {Node module (0, 0) - (18, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -13,4 +13,6 @@ + pass + + def format_a_string(astring: str) -> str: +- return ','.join([x for x in astring])+ return ','.join([x for x in astring]) ++ ++def main() -> int + +=============================================================================== +340. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +341. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + | + +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,4 +15,4 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int:+def main() -> int: + + +=============================================================================== +346. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + " | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:6] +CST Stack: + {Node ERROR (18, 4) - (18, 5)} + {Node function_definition (17, 0) - (18, 5)} + {Node module (0, 0) - (19, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,4 +15,5 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int:+def main() -> int: ++ " + +=============================================================================== +347. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + "" | """""" + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """"""+ "" + +=============================================================================== +348. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 7)} + {Node module (0, 0) - (19, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,4 +15,5 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int:+def main() -> int: ++ """ + +=============================================================================== +349. Input. char of interest: 'D': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """D | D + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 8)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- D+ """D + +=============================================================================== +350. Input. char of interest: 'O': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DO | DO + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 9)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DO+ """DO + +=============================================================================== +351. Input. char of interest: 'C': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC | DOC + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 10)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC+ """DOC + +=============================================================================== +352. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ | DOC_ + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 11)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_+ """DOC_ + +=============================================================================== +353. Input. char of interest: 'S': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_S | DOC_S + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 12)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_S+ """DOC_S + +=============================================================================== +354. Input. char of interest: 'T': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_ST | DOC_ST + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 13)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_ST+ """DOC_ST + +=============================================================================== +355. Input. char of interest: 'R': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STR | DOC_STR + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 14)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_STR+ """DOC_STR + +=============================================================================== +356. Input. char of interest: 'I': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRI | DOC_STRI + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 15)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_STRI+ """DOC_STRI + +=============================================================================== +357. Input. char of interest: 'N': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRIN | DOC_STRIN + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 16)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_STRIN+ """DOC_STRIN + +=============================================================================== +358. Input. char of interest: 'G': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING | DOC_STRING + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:8] +CST Stack: + {Node ERROR (18, 4) - (18, 7)} + {Node function_definition (17, 0) - (18, 17)} + {Node module (0, 0) - (19, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- DOC_STRING+ """DOC_STRING + +=============================================================================== +359. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING" | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:19] +CST Stack: + {Node ERROR (18, 4) - (18, 18)} + {Node function_definition (17, 0) - (18, 18)} + {Node module (0, 0) - (19, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,4 +15,5 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int:+def main() -> int: ++ """DOC_STRING" + +=============================================================================== +360. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING"" | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [19:5 - 19:20] +CST Stack: + {Node ERROR (18, 4) - (18, 19)} + {Node function_definition (17, 0) - (18, 19)} + {Node module (0, 0) - (19, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 18 (, line 18) +ERRPY Recovered AST diff: +--- ++++ +@@ -15,4 +15,5 @@ + def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) + +-def main() -> int:+def main() -> int: ++ """DOC_STRING"" + +=============================================================================== +361. Input. char of interest: '"': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +362. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -16,4 +16,4 @@ + return ','.join([x for x in astring]) + + def main() -> int: +- """DOC_STRING"""+ """DOC_STRING""" + + +=============================================================================== +367. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + s | s + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +368. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + so | so + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +369. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + som | som + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +370. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + some | some + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +371. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somet | somet + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +372. Input. char of interest: 'h': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + someth | someth + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +373. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethi | somethi + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +374. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethin | somethin + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +375. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + something | something + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +376. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethinge | somethinge + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +377. Input. char of interest: 'l': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingel | somethingel + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +378. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingels | somethingels + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +379. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse | somethingelse + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +380. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 21:1] +CST Stack: + {Node ERROR (0, 0) - (20, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,20 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse( + +=============================================================================== +381. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +382. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,4 +17,4 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse()+ somethingelse() + + +=============================================================================== +387. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + f | f + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +388. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fi | fi + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +389. Input. char of interest: 'b': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib | fib + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +390. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 22:1] +CST Stack: + {Node ERROR (0, 0) - (21, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,21 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib( + +=============================================================================== +391. Input. char of interest: '1': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(1 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:10] +CST Stack: + {Node ERROR (20, 4) - (20, 9)} + {Node block (18, 4) - (20, 9)} + {Node function_definition (17, 0) - (20, 9)} + {Node module (0, 0) - (21, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,4 +17,5 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse()+ somethingelse() ++ fib(1 + +=============================================================================== +392. Input. char of interest: '2': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12 | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [21:5 - 21:11] +CST Stack: + {Node ERROR (20, 4) - (20, 10)} + {Node block (18, 4) - (20, 10)} + {Node function_definition (17, 0) - (20, 10)} + {Node module (0, 0) - (21, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -17,4 +17,5 @@ + + def main() -> int: + """DOC_STRING""" +- somethingelse()+ somethingelse() ++ fib(12 + +=============================================================================== +393. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +394. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,4 +18,4 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12)+ fib(12) + + +=============================================================================== +399. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + a | a + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +400. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + as | as + +1 Recoverable error detected: +SyntaxError: keyword: "as" cannot be used as identifier at [22:5 - 22:7] +CST Stack: + {Node identifier (21, 4) - (21, 6)} + {Node expression_statement (21, 4) - (21, 6)} + {Node block (18, 4) - (21, 6)} + {Node function_definition (17, 0) - (21, 6)} + {Node module (0, 0) - (22, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 22) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +401. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + ast | ast + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +402. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astr | astr + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +403. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astri | astri + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +404. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astrin | astrin + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +405. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring | astring + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +407. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [22:5 - 22:14] +CST Stack: + {Node ERROR (21, 4) - (21, 13)} + {Node block (18, 4) - (21, 13)} + {Node function_definition (17, 0) - (21, 13)} + {Node module (0, 0) - (22, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -18,4 +18,5 @@ + def main() -> int: + """DOC_STRING""" + somethingelse() +- fib(12)+ fib(12) ++ astring = + +=============================================================================== +409. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = f | astring = f + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +410. Input. char of interest: 'o': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = fo | astring = fo + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +411. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = for | astring = for + +1 Recoverable error detected: +SyntaxError: keyword: "for" cannot be used as identifier at [22:15 - 22:18] +CST Stack: + {Node identifier (21, 14) - (21, 17)} + {Node assignment (21, 4) - (21, 17)} + {Node expression_statement (21, 4) - (21, 17)} + {Node block (18, 4) - (21, 17)} + {Node function_definition (17, 0) - (21, 17)} + {Node module (0, 0) - (22, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 22) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +412. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = form | astring = form + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +413. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = forma | astring = forma + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +414. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format | astring = format + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +415. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_ | astring = format_ + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +416. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a | astring = format_a + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +417. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_ | astring = format_a_ + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +418. Input. char of interest: 's': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_s | astring = format_a_s + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +419. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_st | astring = format_a_st + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +420. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_str | astring = format_a_str + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +421. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_stri | astring = format_a_stri + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +422. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_strin | astring = format_a_strin + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +423. Input. char of interest: 'g': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string | astring = format_a_string + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +424. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 23:1] +CST Stack: + {Node ERROR (0, 0) - (22, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,22 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string( + +=============================================================================== +425. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +426. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -19,4 +19,4 @@ + """DOC_STRING""" + somethingelse() + fib(12) +- astring = format_a_string()+ astring = format_a_string() + + +=============================================================================== +431. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + r | r + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +432. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + re | re + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +433. Input. char of interest: 't': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + ret | ret + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +434. Input. char of interest: 'u': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retu | retu + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +435. Input. char of interest: 'r': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + retur | retur + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +436. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return | return + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +438. Input. char of interest: '0': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +439. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,4 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 + + +=============================================================================== +440. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +i | i + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +441. Input. char of interest: 'f': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:3] +CST Stack: + {Node ERROR (23, 0) - (23, 2)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if + +=============================================================================== +443. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if _ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:5] +CST Stack: + {Node ERROR (23, 0) - (23, 4)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if _ + +=============================================================================== +444. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:6] +CST Stack: + {Node ERROR (23, 0) - (23, 5)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __ + +=============================================================================== +445. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __n | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:7] +CST Stack: + {Node ERROR (23, 0) - (23, 6)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __n + +=============================================================================== +446. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __na | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:8] +CST Stack: + {Node ERROR (23, 0) - (23, 7)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __na + +=============================================================================== +447. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __nam | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:9] +CST Stack: + {Node ERROR (23, 0) - (23, 8)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __nam + +=============================================================================== +448. Input. char of interest: 'e': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:10] +CST Stack: + {Node ERROR (23, 0) - (23, 9)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name + +=============================================================================== +449. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name_ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:11] +CST Stack: + {Node ERROR (23, 0) - (23, 10)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name_ + +=============================================================================== +450. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:12] +CST Stack: + {Node ERROR (23, 0) - (23, 11)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ + +=============================================================================== +452. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ = | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:14] +CST Stack: + {Node ERROR (23, 0) - (23, 13)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ = + +=============================================================================== +453. Input. char of interest: '=': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:15] +CST Stack: + {Node ERROR (23, 0) - (23, 14)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == + +=============================================================================== +455. Input. char of interest: ''': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == ' | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:17] +CST Stack: + {Node ERROR (23, 0) - (23, 16)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == ' + +=============================================================================== +456. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '_ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:18] +CST Stack: + {Node ERROR (23, 0) - (23, 17)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '_ + +=============================================================================== +457. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:19] +CST Stack: + {Node ERROR (23, 0) - (23, 18)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__ + +=============================================================================== +458. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__m | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:20] +CST Stack: + {Node ERROR (23, 0) - (23, 19)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__m + +=============================================================================== +459. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__ma | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:21] +CST Stack: + {Node ERROR (23, 0) - (23, 20)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__ma + +=============================================================================== +460. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__mai | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:22] +CST Stack: + {Node ERROR (23, 0) - (23, 21)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__mai + +=============================================================================== +461. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:23] +CST Stack: + {Node ERROR (23, 0) - (23, 22)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__main + +=============================================================================== +462. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main_ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:24] +CST Stack: + {Node ERROR (23, 0) - (23, 23)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__main_ + +=============================================================================== +463. Input. char of interest: '_': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__ | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:25] +CST Stack: + {Node ERROR (23, 0) - (23, 24)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__main__ + +=============================================================================== +464. Input. char of interest: ''': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__' | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [24:1 - 24:26] +CST Stack: + {Node ERROR (23, 0) - (23, 25)} + {Node module (0, 0) - (24, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -20,4 +20,5 @@ + somethingelse() + fib(12) + astring = format_a_string() +- return 0+ return 0 ++if __name__ == '__main__' + +=============================================================================== +465. Input. char of interest: ':': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 24 (, line 24) +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +466. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + | + +Output AST is not valid according to CPython: expected an indented block after 'if' statement on line 24 (, line 24) +ERRPY Recovered AST diff: +--- ++++ +@@ -21,4 +21,4 @@ + fib(12) + astring = format_a_string() + return 0 +-if __name__ == '__main__':+if __name__ == '__main__': + + +=============================================================================== +471. Input. char of interest: 'm': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + m | m + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +472. Input. char of interest: 'a': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + ma | ma + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +473. Input. char of interest: 'i': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + mai | mai + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +474. Input. char of interest: 'n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main | main + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +475. Input. char of interest: '(': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | + tmp = (a, a) | + ba, bb = tmp | + inset = a in {0, 1} | + if a <= 2 or a == 1: | + return 1 | + elif inset: | + return 1 | + else: | + return fib(a - 1) + fib(a - 2) | + | +def somethingelse(): | + pass | + | +def format_a_string(astring: str) -> str: | + return ','.join([x for x in astring]) | + | +def main() -> int: | + """DOC_STRING""" | + somethingelse() | + fib(12) | + astring = format_a_string() | + return 0 | +if __name__ == '__main__': | + main( | + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 26:1] +CST Stack: + {Node ERROR (0, 0) - (25, 0)} + +ERRPY Recovered AST diff: +--- ++++ +@@ -0,0 +1,25 @@ ++def fib(a: int) -> int: ++ tmp = (a, a) ++ ba, bb = tmp ++ inset = a in {0, 1} ++ if a <= 2 or a == 1: ++ return 1 ++ elif inset: ++ return 1 ++ else: ++ return fib(a - 1) + fib(a - 2) ++ ++def somethingelse(): ++ pass ++ ++def format_a_string(astring: str) -> str: ++ return ','.join([x for x in astring]) ++ ++def main() -> int: ++ """DOC_STRING""" ++ somethingelse() ++ fib(12) ++ astring = format_a_string() ++ return 0 ++if __name__ == '__main__': ++ main( + +=============================================================================== +476. Input. char of interest: ')': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + + +ERRPY Recovered AST diff: +No difference - AST matches, fully recovered! + +=============================================================================== +477. Input. char of interest: '\n': + +Input: | ERRPY Recovered AST: +----------------------------------------------| ---------------------------------------------- +def fib(a: int) -> int: | def fib(a: int) -> int: + tmp = (a, a) | tmp = (a, a) + ba, bb = tmp | ba, bb = tmp + inset = a in {0, 1} | inset = a in {0, 1} + if a <= 2 or a == 1: | if a <= 2 or a == 1: + return 1 | return 1 + elif inset: | elif inset: + return 1 | return 1 + else: | else: + return fib(a - 1) + fib(a - 2) | return fib(a - 1) + fib(a - 2) + | +def somethingelse(): | def somethingelse(): + pass | pass + | +def format_a_string(astring: str) -> str: | def format_a_string(astring: str) -> str: + return ','.join([x for x in astring]) | return ','.join([x for x in astring]) + | +def main() -> int: | def main() -> int: + """DOC_STRING""" | """DOC_STRING""" + somethingelse() | somethingelse() + fib(12) | fib(12) + astring = format_a_string() | astring = format_a_string() + return 0 | return 0 +if __name__ == '__main__': | if __name__ == '__main__': + main() | main() + | + + +ERRPY Recovered AST diff: +--- ++++ +@@ -22,4 +22,4 @@ + astring = format_a_string() + return 0 + if __name__ == '__main__': +- main()+ main() + + +=============================================================================== diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest b/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest new file mode 100644 index 00000000000..69fb1762c44 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest @@ -0,0 +1,18 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Examples of invalid Python grammar that we are able to partially accept +# but for which we may wish to consider outputting a notification for that +# shows the input as being partially syntatically imperfect + +## Confusion with dot operator and def +a.b def something(): + doith() + +## lhs assignment is incorrect +a.b.c.3 = 9 + +## Used to blow up the parser +a=3\ng=7 diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest_expected_results b/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest_expected_results new file mode 100644 index 00000000000..3f8b73d92ce --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/invalid_grammar.pytest_expected_results @@ -0,0 +1,30 @@ +@generated + +##Confusion with dot operator and def +def something(): + doith() + +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:4] +CST Stack: + {Node ERROR (0, 0) - (0, 3)} + {Node module (0, 0) - (2, 0)} + +##lhs assignment is incorrect +9 +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:1 - 1:10] +CST Stack: + {Node ERROR (0, 0) - (0, 9)} + {Node module (0, 0) - (1, 0)} + +##Used to blow up the parser +a = g = 7 +1 Recoverable error detected: +SyntaxError: invalid syntax at [1:3 - 1:6] +CST Stack: + {Node ERROR (0, 2) - (0, 5)} + {Node assignment (0, 0) - (0, 8)} + {Node expression_statement (0, 0) - (0, 8)} + {Node module (0, 0) - (1, 0)} + diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest b/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest new file mode 100644 index 00000000000..910646ee6ea --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest @@ -0,0 +1,82 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# This is a series of tests which try focusing on error recovery which try to capture the +# minimum functionality required of ERRPY in order to be considered useable for +# Pyre. + +# Note: we require Class support before the performance of error recovery for these instances can be improved + +## Milestone 1 - Error correction for powering navigation on unsaved files +# we should be able to recover at least the surrounding functions from within a class +# which has a syntax error within one of its functions +class Thing: + def ok1(self, slice_elements: MyObject) -> str: + thing = slice_elements.thing() + return thing + + def broken(self): + # localized error in broken + this_is_ok = [a for a in [1,2,3]] + thing = [a for a in in [1,2,3]] + this_part_is_ok = 34 + 8 + + def ok2(self, slice_elements: MyObject, b) -> None: + thing = slice_elements.something(b) + + +## M2 - Autocomplete on trailing `.` +# standard trailing dot +def myfunc(): + thing = slice_elements. + + +## M2 - autocomplete common case +# where user adds a dot in between existing lhs and dot + +def myfunc(): + thing = slice_elements. .pop() # for dot completion + return thing + + +## Milestone 3 - Signature help for Function and Method Signatures +class Thing: + def ok1(self, slice_elements: MyObject) -> str: + thing = slice_elements.thing() + return thing + + def broken(self): + # here is the open param without close... + self.call_something( + + def ok2(self, slice_elements: MyObject, b) -> None: + # should still be ok + thing = slice_elements.something(b) + + +## M3 - we must gracefully handle this... +apple = 55 +acid = “citric” +a = foo(x: int = + + +## M3 - this must also be gracefully handled +apple = 55 +acid = “citric” +a = foo(x: int = 42, a + +## M3 - we must gracefully handle this... +apple = 55 +acid = “citric” +a = foo( + a| + + +## M3 - this must also be gracefully handled +apple = 55 +acid = “citric” +a = foo( + x: int = 42, + a| diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest_expected_results b/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest_expected_results new file mode 100644 index 00000000000..c4ca28e7788 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/milestone_tests.pytest_expected_results @@ -0,0 +1,116 @@ +@generated + +##Milestone 1 - Error correction for powering navigation on unsaved files +class Thing: + + def ok1(self, slice_elements: MyObject) -> str: + thing = slice_elements.thing() + return thing + + def broken(self): + this_is_ok = [a for a in [1, 2, 3]] + thing = [a for a in in[1, 2, 3]] + this_part_is_ok = 34 + 8 + + def ok2(self, slice_elements: MyObject, b) -> None: + thing = slice_elements.something(b) + + +1 Recoverable error detected: +SyntaxError: keyword: "in" cannot be used as identifier at [11:29 - 11:31] +CST Stack: + {Node identifier (10, 28) - (10, 30)} + {Node subscript (10, 28) - (10, 38)} + {Node for_in_clause (10, 19) - (10, 38)} + {Node list_comprehension (10, 16) - (10, 39)} + {Node assignment (10, 8) - (10, 39)} + {Node expression_statement (10, 8) - (10, 39)} + {Node block (9, 8) - (11, 32)} + {Node function_definition (7, 4) - (11, 32)} + {Node block (3, 4) - (14, 43)} + {Node class_definition (2, 0) - (14, 43)} + {Node module (2, 0) - (15, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 9) + +##M2 - Autocomplete on trailing `.` +def myfunc(): + thing = slice_elements. + +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:28] +CST Stack: + {Node ERROR (2, 4) - (2, 27)} + {Node function_definition (1, 0) - (2, 27)} + {Node module (1, 0) - (3, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) + +##M2 - autocomplete common case +def myfunc(): + thing = slice_elements..pop() + return thing + +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:29 - 4:30] +CST Stack: + {Node ERROR (3, 28) - (3, 29)} + {Node attribute (3, 12) - (3, 32)} + {Node call (3, 12) - (3, 34)} + {Node assignment (3, 4) - (3, 34)} + {Node expression_statement (3, 4) - (3, 34)} + {Node block (3, 4) - (4, 16)} + {Node function_definition (2, 0) - (4, 16)} + {Node module (2, 0) - (5, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 2) + +##Milestone 3 - Signature help for Function and Method Signatures +class Thing: + + def ok1(self, slice_elements: MyObject) -> str: + thing = slice_elements.thing() + return thing + + def broken(self): + + +1 Recoverable error detected: +SyntaxError: invalid syntax at [8:9 - 12:44] +CST Stack: + {Node ERROR (7, 8) - (11, 43)} + {Node function_definition (5, 4) - (11, 43)} + {Node block (1, 4) - (11, 43)} + {Node class_definition (0, 0) - (11, 43)} + {Node module (0, 0) - (12, 0)} +Output AST is not valid according to CPython: expected an indented block after function definition on line 7 (, line 9) + +##M3 - we must gracefully handle this... +apple = 55 +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:1 - 3:17] +CST Stack: + {Node ERROR (1, 0) - (2, 16)} + {Node module (0, 0) - (3, 0)} + +##M3 - this must also be gracefully handled +apple = 55 +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:1 - 3:23] +CST Stack: + {Node ERROR (1, 0) - (2, 22)} + {Node module (0, 0) - (3, 0)} + +##M3 - we must gracefully handle this... +apple = 55 +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:1 - 4:7] +CST Stack: + {Node ERROR (1, 0) - (3, 6)} + {Node module (0, 0) - (4, 0)} + +##M3 - this must also be gracefully handled +apple = 55 +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:1 - 5:7] +CST Stack: + {Node ERROR (1, 0) - (4, 6)} + {Node module (0, 0) - (5, 0)} + diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest b/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest new file mode 100644 index 00000000000..4afc51f3448 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest @@ -0,0 +1,16 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# This is a series of tests which try focusing on error recovery which look +# at the specific way ERRPY acts in cases where there are recoverable errors +# in input on the likes of block statements, sub-expressions, tuples, +# arguments etc + + +## Avoid panic on function artuments having incorrect expression syntax +def testcase(): + f = 9 + foo(1, 2, a.3, 4, identifier1 identifier2, 6, 7, identifier 8, 9, 10) + d=9 diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest_expected_results b/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest_expected_results new file mode 100644 index 00000000000..5dfdaf4ba8b --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/node_dropping.pytest_expected_results @@ -0,0 +1,37 @@ +@generated + +##Avoid panic on function artuments having incorrect expression syntax +def testcase(): + f = 9 + foo(1, 2, a, 4, identifier1, 6, 7, identifier, 9, 10) + d = 9 + +3 Recoverable errors detected: +SyntaxError: invalid syntax at [3:16 - 3:18] +CST Stack: + {Node ERROR (2, 15) - (2, 17)} + {Node argument_list (2, 7) - (2, 73)} + {Node call (2, 4) - (2, 73)} + {Node expression_statement (2, 4) - (2, 73)} + {Node block (1, 4) - (3, 7)} + {Node function_definition (0, 0) - (3, 7)} + {Node module (0, 0) - (4, 0)} +SyntaxError: invalid syntax at [3:35 - 3:46] +CST Stack: + {Node ERROR (2, 34) - (2, 45)} + {Node argument_list (2, 7) - (2, 73)} + {Node call (2, 4) - (2, 73)} + {Node expression_statement (2, 4) - (2, 73)} + {Node block (1, 4) - (3, 7)} + {Node function_definition (0, 0) - (3, 7)} + {Node module (0, 0) - (4, 0)} +SyntaxError: invalid syntax at [3:65 - 3:66] +CST Stack: + {Node ERROR (2, 64) - (2, 65)} + {Node argument_list (2, 7) - (2, 73)} + {Node call (2, 4) - (2, 73)} + {Node expression_statement (2, 4) - (2, 73)} + {Node block (1, 4) - (3, 7)} + {Node function_definition (0, 0) - (3, 7)} + {Node module (0, 0) - (4, 0)} + diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest b/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest new file mode 100644 index 00000000000..02763219664 --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest @@ -0,0 +1,95 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Collection of tests from https://github.com/davidhalter/parso/blob/master/test/test_error_recovery.py +# Parso is able to handle these instances, at the very least ERRPY should be +# able to recover a reasonable AST for these instances + +## test_with_stmt +code = before + +with x: f. +a + +code = after + +## test_one_line_function +code = before + +def x(): f. + +code = after + +## test_one_line_function 2 +code = before + +def x(a: + +code = after + +## test_if_else +code = before + +if x: + f. +else: + g( + +code = after + +## test_if_stmt +code = before + +if x: f. +else: g( + +code = after + +## test_invalid_token +code = before + +a + ? + b + +code = after + +## test_invalid_token_in_fstr +code = before + +f"{a + ? + b}" + +code = after + +## test_dedent_issues1 +code = before + +class C: + @property + f + g + end + +code = after + +## test_dedent_issues2 +code = before + +class C: + @property + if 1: + g + else: + h + end + +code = after + +## test_dedent_issues3 +code = before + +class C: + f + g + +code = after diff --git a/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest_expected_results b/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest_expected_results new file mode 100644 index 00000000000..8bd12eef4ab --- /dev/null +++ b/source/errpy/tests/test_resources/error_recovery_specific_tests/parso_error_recovery_tests.pytest_expected_results @@ -0,0 +1,117 @@ +@generated + +##test_with_stmt +code = before +with x: + f.a +code = after + +##test_one_line_function +code = before + +def x(): + f.code = after + +##test_one_line_function 2 +code = before +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:1 - 5:13] +CST Stack: + {Node ERROR (2, 0) - (4, 12)} + {Node module (0, 0) - (5, 0)} + +##test_if_else +code = before +if x: + f. +2 Recoverable errors detected: +SyntaxError: invalid syntax at [4:5 - 4:7] +CST Stack: + {Node ERROR (3, 4) - (3, 6)} + {Node if_statement (2, 0) - (7, 12)} + {Node module (0, 0) - (8, 0)} +SyntaxError: invalid syntax at [6:5 - 8:13] +CST Stack: + {Node ERROR (5, 4) - (7, 12)} + {Node else_clause (4, 0) - (7, 12)} + {Node if_statement (2, 0) - (7, 12)} + {Node module (0, 0) - (8, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 3) + +##test_if_stmt +code = before +if x: + f. +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:1 - 6:13] +CST Stack: + {Node ERROR (2, 0) - (5, 12)} + {Node module (0, 0) - (6, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 3) + +##test_invalid_token +code = before +a + +b +code = after +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:5 - 3:6] +CST Stack: + {Node ERROR (2, 4) - (2, 5)} + {Node binary_operator (2, 0) - (2, 9)} + {Node expression_statement (2, 0) - (2, 9)} + {Node module (0, 0) - (5, 0)} + +##test_invalid_token_in_fstr +code = before +f'{a + +b}' +code = after +1 Recoverable error detected: +SyntaxError: invalid syntax at [3:8 - 3:9] +CST Stack: + {Node ERROR (2, 7) - (2, 8)} + {Node binary_operator (2, 3) - (2, 12)} + {Node interpolation (2, 2) - (2, 13)} + {Node string (2, 0) - (2, 14)} + {Node expression_statement (2, 0) - (2, 14)} + {Node module (0, 0) - (5, 0)} + +##test_dedent_issues1 +code = before + +class C: + f + g + end +code = after +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:14] +CST Stack: + {Node ERROR (3, 4) - (3, 13)} + {Node class_definition (2, 0) - (6, 7)} + {Node module (0, 0) - (9, 0)} + +##test_dedent_issues2 +code = before + +class C: + if 1: + g + else: + h + end +code = after +1 Recoverable error detected: +SyntaxError: invalid syntax at [4:5 - 4:14] +CST Stack: + {Node ERROR (3, 4) - (3, 13)} + {Node class_definition (2, 0) - (8, 7)} + {Node module (0, 0) - (11, 0)} + +##test_dedent_issues3 +code = before + +class C: + f +g +code = after + diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest new file mode 100644 index 00000000000..a39803a3e8d --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest @@ -0,0 +1,39 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct rejection of syntatically incorrect input given grammar defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar + + +## keyword cant be identifer +and + +## empty space cannot be identifier +a[] # reject empty space identifer + +## async and await are keywords +x = xx.async # keyword +x = xx.await # keyword + + +## keywords cant be imported +import a.def +import def +import a.async +import async +from and import a +from a import and +from a import f as and +from ...and.bar import a as b, c + +def and(): + pass + +class and(): + pass + +def foo(and): + pass + +foo(and) diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest_expected_results b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest_expected_results new file mode 100644 index 00000000000..9ad4061b640 --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_identifiers.pytest_expected_results @@ -0,0 +1,137 @@ +@generated + +##keyword cant be identifer +and +1 Recoverable error detected: +SyntaxError: keyword: "and" cannot be used as identifier at [1:1 - 1:4] +CST Stack: + {Node identifier (0, 0) - (0, 3)} + {Node expression_statement (0, 0) - (0, 3)} + {Node module (0, 0) - (1, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) + +##empty space cannot be identifier +a[] +1 Recoverable error detected: +SyntaxError: empty string cannot be used as identifier at [1:3 - 1:3] +CST Stack: + {Node identifier (0, 2) - (0, 2)} + {Node subscript (0, 0) - (0, 3)} + {Node expression_statement (0, 0) - (0, 3)} + {Node module (0, 0) - (1, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) + +##async and await are keywords +x = xx.async +x = xx.await +2 Recoverable errors detected: +SyntaxError: keyword: "async" cannot be used as identifier at [1:8 - 1:13] +CST Stack: + {Node identifier (0, 7) - (0, 12)} + {Node attribute (0, 4) - (0, 12)} + {Node assignment (0, 0) - (0, 12)} + {Node expression_statement (0, 0) - (0, 12)} + {Node module (0, 0) - (2, 0)} +SyntaxError: keyword: "await" cannot be used as identifier at [2:8 - 2:13] +CST Stack: + {Node identifier (1, 7) - (1, 12)} + {Node attribute (1, 4) - (1, 12)} + {Node assignment (1, 0) - (1, 12)} + {Node expression_statement (1, 0) - (1, 12)} + {Node module (0, 0) - (2, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) + +##keywords cant be imported +import a.def +import def +import a.async +import async +from and import a +from a import and +from a import f as and +from ...and.bar import a as b, c + +def and(): + pass + +class and: + pass + +def foo(and): + pass +foo(and) +12 Recoverable errors detected: +SyntaxError: keyword: "def" cannot be used as identifier at [1:10 - 1:13] +CST Stack: + {Node identifier (0, 9) - (0, 12)} + {Node dotted_name (0, 7) - (0, 12)} + {Node import_statement (0, 0) - (0, 12)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "def" cannot be used as identifier at [2:8 - 2:11] +CST Stack: + {Node identifier (1, 7) - (1, 10)} + {Node dotted_name (1, 7) - (1, 10)} + {Node import_statement (1, 0) - (1, 10)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "async" cannot be used as identifier at [3:10 - 3:15] +CST Stack: + {Node identifier (2, 9) - (2, 14)} + {Node dotted_name (2, 7) - (2, 14)} + {Node import_statement (2, 0) - (2, 14)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "async" cannot be used as identifier at [4:8 - 4:13] +CST Stack: + {Node identifier (3, 7) - (3, 12)} + {Node dotted_name (3, 7) - (3, 12)} + {Node import_statement (3, 0) - (3, 12)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [5:6 - 5:9] +CST Stack: + {Node identifier (4, 5) - (4, 8)} + {Node dotted_name (4, 5) - (4, 8)} + {Node import_from_statement (4, 0) - (4, 17)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [6:15 - 6:18] +CST Stack: + {Node identifier (5, 14) - (5, 17)} + {Node dotted_name (5, 14) - (5, 17)} + {Node import_from_statement (5, 0) - (5, 17)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [7:20 - 7:23] +CST Stack: + {Node identifier (6, 19) - (6, 22)} + {Node aliased_import (6, 14) - (6, 22)} + {Node import_from_statement (6, 0) - (6, 22)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [8:9 - 8:12] +CST Stack: + {Node identifier (7, 8) - (7, 11)} + {Node dotted_name (7, 8) - (7, 15)} + {Node relative_import (7, 5) - (7, 15)} + {Node import_from_statement (7, 0) - (7, 32)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [10:5 - 10:8] +CST Stack: + {Node identifier (9, 4) - (9, 7)} + {Node function_definition (9, 0) - (10, 8)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [13:7 - 13:10] +CST Stack: + {Node identifier (12, 6) - (12, 9)} + {Node class_definition (12, 0) - (13, 8)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [16:9 - 16:12] +CST Stack: + {Node identifier (15, 8) - (15, 11)} + {Node parameters (15, 7) - (15, 12)} + {Node function_definition (15, 0) - (16, 8)} + {Node module (0, 0) - (19, 0)} +SyntaxError: keyword: "and" cannot be used as identifier at [19:5 - 19:8] +CST Stack: + {Node identifier (18, 4) - (18, 7)} + {Node argument_list (18, 3) - (18, 8)} + {Node call (18, 0) - (18, 8)} + {Node expression_statement (18, 0) - (18, 8)} + {Node module (0, 0) - (19, 0)} +Output AST is not valid according to CPython: invalid syntax (, line 1) + diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest new file mode 100644 index 00000000000..c7fd98b3f7e --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest @@ -0,0 +1,20 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +## cannot use general expression in place of a case pattern +match xx: + case x>2: + pass + +## various types of invalid complex numbers +match x: + case 3j + 5j: # invalud, first part must be real + pass + case -3j + 5j: # invalud, first part must be real + pass + case 3 + 5: #inlvauid, second part must be imaginary + pass + case 3 + -5j: # invalid imaginary number cannot be negative + pass diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest_expected_results b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest_expected_results new file mode 100644 index 00000000000..2cdba65cbde --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_match_case.pytest_expected_results @@ -0,0 +1,73 @@ +@generated + +##cannot use general expression in place of a case pattern +match xx: + case x: + pass + +1 Recoverable error detected: +SyntaxError: invalid syntax at [2:11 - 2:13] +CST Stack: + {Node ERROR (1, 10) - (1, 12)} + {Node case_clause (1, 4) - (2, 12)} + {Node match_statement (0, 0) - (2, 12)} + {Node module (0, 0) - (3, 0)} + +##various types of invalid complex numbers +match x: + case 3j + 5j: + pass + case -3j + 5j: + pass + case 3 + 5: + pass + case 3 + -5j: + pass + +4 Recoverable errors detected: +SyntaxError: first part of complex number must be real at [2:11 - 2:13] +CST Stack: + {Node case_literal_integer_or_float (1, 10) - (1, 12)} + {Node case_literal_pattern_complex_number (1, 10) - (1, 17)} + {Node case_literal_pattern (1, 10) - (1, 17)} + {Node case_closed_pattern (1, 10) - (1, 17)} + {Node case_or_pattern (1, 10) - (1, 17)} + {Node case_pattern (1, 10) - (1, 17)} + {Node case_clause (1, 4) - (2, 12)} + {Node match_statement (0, 0) - (8, 12)} + {Node module (0, 0) - (9, 0)} +SyntaxError: first part of complex number must be real at [4:11 - 4:14] +CST Stack: + {Node case_literal_integer_or_float (3, 10) - (3, 13)} + {Node case_literal_pattern_complex_number (3, 10) - (3, 18)} + {Node case_literal_pattern (3, 10) - (3, 18)} + {Node case_closed_pattern (3, 10) - (3, 18)} + {Node case_or_pattern (3, 10) - (3, 18)} + {Node case_pattern (3, 10) - (3, 18)} + {Node case_clause (3, 4) - (4, 12)} + {Node match_statement (0, 0) - (8, 12)} + {Node module (0, 0) - (9, 0)} +SyntaxError: second part of complex number must be a imaginary at [6:15 - 6:16] +CST Stack: + {Node case_literal_integer_or_float (5, 14) - (5, 15)} + {Node case_literal_pattern_complex_number (5, 10) - (5, 15)} + {Node case_literal_pattern (5, 10) - (5, 15)} + {Node case_closed_pattern (5, 10) - (5, 15)} + {Node case_or_pattern (5, 10) - (5, 15)} + {Node case_pattern (5, 10) - (5, 15)} + {Node case_clause (5, 4) - (6, 12)} + {Node match_statement (0, 0) - (8, 12)} + {Node module (0, 0) - (9, 0)} +SyntaxError: second part of complex number must be a positive at [8:15 - 8:18] +CST Stack: + {Node case_literal_integer_or_float (7, 14) - (7, 17)} + {Node case_literal_pattern_complex_number (7, 10) - (7, 17)} + {Node case_literal_pattern (7, 10) - (7, 17)} + {Node case_closed_pattern (7, 10) - (7, 17)} + {Node case_or_pattern (7, 10) - (7, 17)} + {Node case_pattern (7, 10) - (7, 17)} + {Node case_clause (7, 4) - (8, 12)} + {Node match_statement (0, 0) - (8, 12)} + {Node module (0, 0) - (9, 0)} +Output AST is not valid according to CPython: real number required in complex literal (, line 2) + diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest new file mode 100644 index 00000000000..36ad9a2b722 --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest @@ -0,0 +1,15 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +## cannot mix bytes and nonbytes literals +message = b"something " \ + "another {a} line" +message = "something " \ + b"another {a} line" + +## invalid string prefix +something = a"a string" +something = asdasd"a string" +something = ru"a string" diff --git a/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest_expected_results b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest_expected_results new file mode 100644 index 00000000000..69c11d31719 --- /dev/null +++ b/source/errpy/tests/test_resources/invalid_syntax_tests/invalid_types.pytest_expected_results @@ -0,0 +1,43 @@ +@generated + +##cannot mix bytes and nonbytes literals +message = 'something another {a} line' +message = b'something another {a} line' +2 Recoverable errors detected: +SyntaxError: cannot mix bytes and nonbytes literals at [1:11 - 2:29] +CST Stack: + {Node concatenated_string (0, 10) - (1, 28)} + {Node assignment (0, 0) - (1, 28)} + {Node expression_statement (0, 0) - (1, 28)} + {Node module (0, 0) - (4, 0)} +SyntaxError: cannot mix bytes and nonbytes literals at [3:11 - 4:30] +CST Stack: + {Node concatenated_string (2, 10) - (3, 29)} + {Node assignment (2, 0) - (3, 29)} + {Node expression_statement (2, 0) - (3, 29)} + {Node module (0, 0) - (4, 0)} + +##invalid string prefix +something = 'a string' +something = 'a string' +something = 'u"a string' +3 Recoverable errors detected: +SyntaxError: invalid syntax at [1:13 - 1:14] +CST Stack: + {Node ERROR (0, 12) - (0, 13)} + {Node assignment (0, 0) - (0, 23)} + {Node expression_statement (0, 0) - (0, 23)} + {Node module (0, 0) - (3, 0)} +SyntaxError: invalid syntax at [2:13 - 2:19] +CST Stack: + {Node ERROR (1, 12) - (1, 18)} + {Node assignment (1, 0) - (1, 28)} + {Node expression_statement (1, 0) - (1, 28)} + {Node module (0, 0) - (3, 0)} +UnexpectedExpression: Invalid string prefix: "ru" at [3:13 - 3:25] +CST Stack: + {Node string (2, 12) - (2, 24)} + {Node assignment (2, 0) - (2, 24)} + {Node expression_statement (2, 0) - (2, 24)} + {Node module (0, 0) - (3, 0)} + diff --git a/source/errpy/tests/test_resources/pretty_printer_tests/pretty_printer_bugs.pytest b/source/errpy/tests/test_resources/pretty_printer_tests/pretty_printer_bugs.pytest new file mode 100644 index 00000000000..1ada631adaf --- /dev/null +++ b/source/errpy/tests/test_resources/pretty_printer_tests/pretty_printer_bugs.pytest @@ -0,0 +1,158 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here wher appropriate + + +## Avoid more than one newline in nested control flow statements +# We need to avoid two newlines being output after asdasd = 8 +# i.e. not one after the final statement of the for loop immediatly followed by +# one orignating from after the for statement itself + +for x in requests.items(): + for x in requests.items(): + asdasd = 8 + dest = 3 + +## comment nesting in control loops +for a in b: + for c in d: + test(a, c) # comment0 # comment1 + # comment2 + # comment3 +# comment4 + +## with other logic straight after the comment +for a in b: + for c in d: + test(a, c) # comment0 # comment1 + # comment2 + something() + # comment3 + something() +# comment4 +something() + + +## extra dot needed on attribute access of integer +z = 123123 .b # formatted as: .b +g = 5 .thing() # formatted as: .thing() +a = 1223423423423425345345346 .z # formatted as: .z +f = 567567567567.567 . j # formatted as: .j +f = 567567567567.567j . j # formatted as: j.j + +## params are required for unambiguous pretty printing of these +h = (2 + 4) * 3 +h = 2 + 4 * 3 +h = 2 + (4 * 3) + +## mixture of Terms and arithmetic with params +g = ( 1 + 2 ) * 3 +g = 1 + (2 * 3) +g = 1 + 2 * 3 + +## Complex case which showed bug concerning params around boolean operators +a = not a if (4**3 / 2) > 4 else (3 and 4) % (1 + 3) * 2 + +## boolean operator param placement +(3 and 4) % (1 + 3) +(3 and 4) % 1 + 3 +3 and 4 % (1 + 3) +3 and (4 % 1) + 3 +3 and 4 % 1 + 3 + +## pow operator is right associative +(a + b) ** ( c + d) +a + (b ** c) + d +(a + b ** c) + d +a + (b ** c + d) + +## compare operators can be tricky +a < b < c +a < (b < c) +(a < b) < c + +## preserve params on parenthesized_expression +a.thing() +a().thing() +(a+b).thing() + +## indentation for try except statement +def do_thing(): + try: + something() + except Exception as e: + print(e) + +## indentation for try finally statement + +def do_thing(): + try: + something() + finally: + something_else(e) + +## indentation for try else statement + +def do_thing2(): + try: + something() + except e: + something_err() + else: + something_else(e) + +## improve newline placement for async functions +class Bar: + def bar(self): + pass + + def bar(self): + pass + +class Foo: + async def bar(self): + pass + + async def bar(self): + pass + +## indentation for functions with annotations +class Bar: + @annot + def bar(self): + pass + + @annot + def bar(self): + pass + +class Foo: + @annot + async def bar(self): + pass + + @annot + async def bar(self): + pass + +## formatting of if-else starting with an if +if cond1 == 2: + pass +else: # this is turned into an elif + if cond2 == "py2": + pass + # as the block just contains an if + +if cond1 == 2: + pass +else: # this is not turned into elif + if cond2 == "py2": + pass + x = 3 # because the block contains other things besides an if + +## no comma popping for empty tuples +a[b] = ((), c) diff --git a/source/errpy/tests/test_resources/test_config.json b/source/errpy/tests/test_resources/test_config.json new file mode 100644 index 00000000000..06b48a436ba --- /dev/null +++ b/source/errpy/tests/test_resources/test_config.json @@ -0,0 +1 @@ +{ "TEST_ERRPY_RESULTS_NEWFILE" : true } diff --git a/source/errpy/tests/test_resources/unit_tests/ast_async_and_await.pytest b/source/errpy/tests/test_resources/unit_tests/ast_async_and_await.pytest new file mode 100644 index 00000000000..dd18095a643 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_async_and_await.pytest @@ -0,0 +1,39 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## AsyncFunctionDef(name, args, body, decorator_list, returns, type_comment) + +## Await(value) +async def f(): + await other_func() + +## AsyncFor(target, iter, body, orelse, type_comment) +async for a in y: + somethign() + +async for a in y: + somethign() +else: + ysss() + +## AsyncWith(items, body, type_comment) +async with a: + something(a) + +async with a, c as d: + something(b, c, d) + +async with a as b, c as d: + something(b, d) + +async with open('file_path', 'w') as file: + file.write('hello world !') + +async with A() as a, B() as b, C() as c: + doSomething(a,b,c) diff --git a/source/errpy/tests/test_resources/unit_tests/ast_control_flow.pytest b/source/errpy/tests/test_resources/unit_tests/ast_control_flow.pytest new file mode 100644 index 00000000000..a955d75cf0f --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_control_flow.pytest @@ -0,0 +1,233 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## If(test, body, orelse) +# Parsers can struggle here... +if x: + doSomething() + doSomething() + +if x: + doSomething() + doSomething() +else: + somethignElse() + somethignElse() + +if x: + doSomething() + doSomething() +elif y: + somethignElse() + somethignElse() +else: + uhoh() + uhoh() + +if x: + doSomething() + doSomething() +elif y: + somethignElse() + somethignElse() +elif y2: + somethignElse2() + somethignElse2() +else: + uhoh() + uhoh() + +## if with nested nodes of if type +# seems unlikely that there could be a bug here but had a hunch (there was no bug ;)) +if x > 3: + something() +elif y < 5: + if xx == 3: + another_thing() + else: + thing() +else: + giveup() + +## For(target, iter, body, orelse, type_comment) +for a in y: + somethign() + +for a in y: + somethign() +else: + ysss() + +## For - target being list +for [name, request] in items: + pass + +## For - target being tuple +for (name, request) in items: + pass + +## For - target tuple with one item only +for (name, ) in items: + pass + +## For - target list with one item only +for [name, ] in items: + pass + +## For - target attribute access +for a.b in items: + pass + +## For - target subscript access +for a[b] in items: + pass + +## For - nested lists and tuples +for (a, [b, c], d) in XXX : + pass + +for [a, (b, c), d] in XXX : + pass + +for [a, [b, c], d] in XXX : + pass + +for (a, (b, c), d) in XXX : + pass + +## For - attribute and subsciprts in lists and tuples +for (a[b], c.d) in XXX: + pass + +for [a[b], c.d] in XXX: + pass + +## While(test, body, orelse) +while x: + dosomething() + +while x: + dosomething() +else: + ohuph() + +while x > 34: + dosomething() +else: + ohuph() + +## Break +for a in b: + if a > 5: + break + else: + continue + +## Continue +for a in b: + if a > 5: + break + else: + continue + +## Try(body, handlers, orelse, finalbody) +try: + something() +except Exception: + pass +except OtherException as e: + react() +except (OtherException, Another): + react2() +except (OtherException, Another) as ee: + react3() +else: + elablock() +finally: + andForver() + +## ExceptHandler(type, name, body) +try: + a+1 +except TypeError: + pass + +## With(items, body, type_comment) +with a: + something(b) + +## withitem(context_expr, optional_vars) +with a, c as d: + something(b, c, d) + +with a as b, c as d: + something(b, d) + +with open('file_path', 'w') as file: + file.write('hello world !') + +with A() as a, B() as b, C() as c: + doSomething(a,b,c) + +## With - target being list +with something() as [a, b]: + pass + +## With - target being tuple +with something() as (a, b): + pass + +## With - target being tuple with one item only +with something() as (a, ): + pass + +## With - target being list with one item only +with something() as [a, ]: + pass + +## With - target attribute access +with something() as a.b: + pass + +## With - target subscript access +with something() as a[b]: + pass + +## With - nested lists and tuples +with something() as (a, [b, c], d): + pass + +with something() as [a, (b, c), d]: + pass + +with something() as [a, [b, c], d]: + pass + +with something() as (a, (b, c), d): + pass + +## with having withitems having extra comma +with (foo as a, bar as b,): + c = a + b + +## with having many comma seperated as +with open('d') as d, open('e') as e: + f + +## with having many as cluases within tuple-like syntax +with (open('d') as d, open('e') as e): + f + +## with having many as cluases within tuple-like syntax plus normal expression +with (open('d') as d, open('e') as e, bar(), open('f') as f): + f + +## with having if else statement on it +with open('a') if True else open('b') as f : + f diff --git a/source/errpy/tests/test_resources/unit_tests/ast_expressions.pytest b/source/errpy/tests/test_resources/unit_tests/ast_expressions.pytest new file mode 100644 index 00000000000..67e92b58200 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_expressions.pytest @@ -0,0 +1,319 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + +## Expr(value) +-a + +## UnaryOp(op, operand) +~a + +## UAdd ++a + +## USub +-a + +## Not +not true +not a + +## Invert +not y + +## BinOp(left, op, right) +x + y + +## Add +x + y + +## Sub +x - y + +## Mult +x * y + +## Div +x / y + +## FloorDiv +x // y + +## Mod +x % y + +## Pow +x ** y + +## LShift +x << 2 + +## RShift +x >> 2 + +## BitOr +a | b + +## BitXor +a ^ b + +## BitAnd +a & b + +## MatMult +a @ b + +## BoolOp(op, values) +x or y + +## And +a and b + +## Or +a or b + +## And Not +a and not b + +## Not And +not a and b + +## And ~ +a and ~b + +## Compare(left, ops, comparators) +1 <= a < 10 + +## Eq +a == b + +## NotEq +a != h + +## Lt +a < b + +## LtE +a <= b + +## Gt +a > b + +## GtE +a >=g + +## Is +a is None + +## IsNot +a is not g + +## In +a in zzz + +## NotIn +a not in zzz + +## Call(func, args, keywords, starargs, kwargs) +func(a, b=c, *d, **e,) +func(a, b=c, *d, **e) + +## keyword(arg, value) +func(a, b=c, *d, **e) + +## IfExp(test, body, orelse) +a if b else c + +## Attribute(value, attr, ctx) +snake.colour +a.b.c +snake.colour = 'green' +a.b.c = 3 +a.b.c = a.b.d + +## NamedExpr(target, value) +(x := 4) + +## Subscript(value, slice, ctx) +la[1:2, 3] + +## Slice(lower, upper, step) +la[1:2] + +## more complex subscript cases +la[2] +la[2:] +la[2::-1] +la[2, 9 ] +la[2, 2,] +la[1:2, 1:2] +la[1:2, 1:2,] +la[1:2, 1:2, ] +la[1:2, 2] +la[1:2, 2,] +la[1:2] +lalala[10:20:1] +lalala[10:] +lalala[:20] +lalala[::-1] +lalala[1::-1] +lalala[:] + +## subscript slices may be tuples +oool = a[b,] +oool = a[b ,] +oool = a[b, ] +oool = a[(b,)] + +## subscript value is always with ctx=Load even if on lhs or on rhs of assignment +a[1] = 6 +a[1] = a[2] +(a[1])[1] = 6 + +## subscript slices are always with ctx=Load +# here `requests` is a expected to be with ctx=Load(), and `name` should be with ctx=Load() +requests[name] = package + +## more subscript slices are always with ctx=Load +a[b[c]] = d +a[b][c] = d +*a[b] = c + +## multiline subscripts start end line column info +# multiline subscripts need to reference start and end lines and column +# information based on the first and last elements of the subscript +Union[ + str, + int + ] + +## ListComp(elt, generators) +[x for x in numbers] +[x for x in numbers if x > 2] +[x async for x in numbers if x > 2] +[ord(c) for line in file for c in line] +[n**2 for n in it if n>5 if n<10] + +## SetComp(elt, generators) +{x for x in numbers} + +## GeneratorExp(elt, generators) +(n**2 for n in it if n>5 if n<10) + +## DictComp(key, value, generators) +{x: x**2 for x in numbers} + +## comprehension(target, iter, ifs, is_async) +[ord(c) for line in file for c in line] +(n**2 for n in it if n>5 if n<10) +[i async for i in soc] + +## generator expression in function calls +x = sum( x for x in items ) + +## generator expression in function calls with guard +x = sum( x for x in items if x > 2 ) + +## Return(value) +return 6 + +## Yield(value) +yield +yield xx00 +yield (x,y) + +## YieldFrom(value) +yield from yy +yield from (x,y) + +## Yield, YieldFrom and Await with inside a parenthesized expression +(yield) +(yield 1) +(yield from x) +(yield (await x)) +(yield from (await x)) +await (yield x) +await (yield from x) + +## Global(names) +global x,y,z + +## Nonlocal(names) +nonlocal x,y,z + +## BoolOp(op, values) - boolean operators simple +a and b +a or b + +## BoolOp(op, values) - boolean operators collapsed +a or b or c +a or (b or c) + +# AST's for the above differ because: +# "Consecutive operations with the same operator, such as a or b or c, +# are collapsed into one node with several values." +# Wrapping boolean operators within params prevents the collapsing + +a and b and c +a and (b and c) + +## BoolOp(op, values) - boolean operators combine and + or +a or (b and c) +a or b and c + +a and (b or c) +a and b or c + +## Assign - mixed tuple list assignment +([b, c], ) = f # single item tuple +[(b, c), ] = f # single item list + +a1 = (a, [b, c], d) +a2 = [a, (b, c), d] +a3 = [a, [b, c], d] +a4 = (a, (b, c), d) + +(a, [b, c], d) = a1 +[a, (b, c), d] = a2 +[a, [b, c], d] = a3 +(a, (b, c), d) = a4 + +## Assign - tuple assign with and without parentheses +a, z = d +a, (b, c) = d +(a, (b, c)) = d + +## Assign - with starred on right hand side +a, b, *c = *d, None, None +f = *d, + +## splats and dict splats appearing at the same time +foo(0, *[1], **{'a': 2}) + +## list_splat_pattern four versions +*a = b +*print = b +*a[b] = c +*a.b = c + +## list_splat for lists, sets and tuples with list splat +x = ["string", "another", identifier, *overrides] +z = {"string", "another", identifier, *overrides} +x = ("string", "another", identifier, *overrides) + +## comma seperated expressions - return +return a, b + +## comma seperated expressions - yield +yield a, b + +## comma seperated expressions - delete +del a, b + +## comma seperated expressions - for +for a in a, b: + pass diff --git a/source/errpy/tests/test_resources/unit_tests/ast_functions_and_classes.pytest b/source/errpy/tests/test_resources/unit_tests/ast_functions_and_classes.pytest new file mode 100644 index 00000000000..65148e11ce6 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_functions_and_classes.pytest @@ -0,0 +1,302 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## FunctionDef(name, args, body, decorator_list, returns, type_comment) +def myfun(a): + return a + +def myfun(a=9): + return a + +def myfun(a=9): + return a + +## more fomplex funcDefs + +def f1(a) -> 'return annotation': + pass + +def f1(a, b=33): + c = a + b + return a+c + +def f1(a: int, *d: int, **e: int): + pass + +def f1(a: int, b: int=33): + c = a + b + return a+c + +@decorator1 +@decorator2 +def f1(a) -> 'return annotation': + pass + +@decorator1 +@decorator2 +def f1(print) -> 'return annotation': + pass + +@decorator1 +@decorator2 +def f(a: 'annotation', b=1, c=2, *d, e, f=3, **g) -> 'return annotation': + pass + +def myfun(a): + return a + +def myfun(a: int) -> int: + return a + +def myfun(a=9): + return a + + +## docstrings +def something(): + """docstring""" + pass + +def something2(): + '''docstring''' + pass + +def something3(): + 'docstring' + pass + +def something4(): + '''docstring + multi + line''' + pass + +## funcdefs with positional seperator and keyword seperator +def f(a, b, c:int, /, d, e:int): pass +def f(a, b, c:int=7, /): pass +def f(a, b, c:int=7, /, d=8): pass +def f(a, b, b:int, /, d, e:int, *, kwonly1, kwdonly2): pass + +## funcdefs with args more than one char +def thing(asdasd=6767): + pass + +## Lambda(args, body) +lambda x,y: ... +x = lambda x,y: ... +xy = lambda x,y: x+7 + +## lambda with no parameters +ret = lambda: 34 + +## arguments(posonlyargs, args, vararg, kwonlyargs, kw_defaults, kwarg, defaults) +@decorator1 +@decorator2 +def f(a: 'annotation', b=1, c=2, *d, e, f=3, **g) -> 'return annotation': + pass + +@decorator1 +@decorator2 +def f(a: int, b=1, c=2, *d, e, f=3, **g) -> int: + pass + +##ast.Call(func, args) +func(a, b, c) + +##ast.Call(func, keywords) +func(a=2, b=5, c=33) + +##ast.Call(func, starargs) +func(*d, *e) + +##ast.Call(func, kwargs) +func(**e, **f) + +## ClassDef(name, bases, keywords, starargs, kwargs, body, decorator_list) +@decorator1 +@decorator2 +class Foo(base1, base2, metaclass=meta): + pass + +## lots of classdefs and functions mixed +# Python, ast.unparse is very sensitive regarding newline placement in pretty print +# where there are many classes (with or without bodies) and functions mixed together +class Foo: + pass + + +class Foo(base1): + pass + +class Foo(base1): + classvar=9 + + +@decorator1 +@decorator2 +class Foo(base1): + pass + + +def func1(): + return 22 + +def func2(): + return 3 + + +@decorator1 +@decorator2 +class Foo(base1, base2, metaclass=meta): + def foo(self, thing: int) -> int: + return thing + 2 + + def bar(self, thing: int) -> int: + return thing + 2 + + +@decorator1 +@decorator2 +class Foo(metaclass=meta, metaclass2=meta): + def foo(self, thing: int) -> int: + return thing + 2 + + +@decorator1 +@decorator2 +class Foo(base1, base2, metaclass=meta): + classvar = 7 + +def another(): + pass + +## nested classes + +class MyClass: + class ChildClass: + def __init__(self, thing): + self.thing + + def foo(self): + return self.thing + + def do_thing(self): + inner = ChildClass(12) + return inner.foo() + +## nested classes preceeded by variables +f = 99 + +class Foo(base1, base2, metaclass=meta): + f = 99 + + class NestedFoo(base1, base2, metaclass=meta): + pass + +## more than one nested class +class Foo(base1, base2, metaclass=meta): + + class NestedFoo(base1, base2, metaclass=meta): + pass + + class NestedFoo2(base1, base2, metaclass=meta): + pass + + +## nested funcdefs + +def outerFunc(a: int) -> int: + a = a + 1 + def inner(b: int) -> int: + return b + 1 + return inner(a) + + +def outerFunc(a: int) -> int: + def inner(b: int) -> int: + return b + 1 + return inner(a) + +## class immediatly after variable declared +f = 99 +class Foo(base1, base2, metaclass=meta): + pass + + +## newlines for variables declared before and after class and function blocks +f = 99 + +class Foo(base1, base2, metaclass=meta): + f = 99 + g = 12 + + class NestedFoo(base1, base2, metaclass=meta): + pass + +class Foo(base1, base2, metaclass=meta): + + class NestedFoo(base1, base2, metaclass=meta): + pass + + class NestedFoo2(base1, base2, metaclass=meta): + pass + +class MyClass: + + class ChildClass: + + def __init__(self, thing): + self.thing + + def foo(self): + return self.thing + + def do_thing(self): + inner = ChildClass(12) + return inner.foo() +f = 99 + +class Foo(base1, base2, metaclass=meta): + f = 99 + + class NestedFoo(base1, base2, metaclass=meta): + pass + + +## more newlines for variables declared before and after class and function blocks +f = 99 + +class Thing: + + def fib(a: int) -> int: + if a <= 2 or a == 1: + return 1 + + def fib2(a: int) -> int: + if a <= 2 or a == 1: + return 1 +j = 99 + +def another(): + 99 + +def another2(): + 99 +o = 999 +j = 99 + +def another(): + + def nested(): + return 33 + + def nested2(): + return 33 + return nested() + nested2() +o = 999 diff --git a/source/errpy/tests/test_resources/unit_tests/ast_literals.pytest b/source/errpy/tests/test_resources/unit_tests/ast_literals.pytest new file mode 100644 index 00000000000..e1087e571e5 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_literals.pytest @@ -0,0 +1,736 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## Constant(value) +123123 +123.4124 +'a string' + +## FormattedValue(value, conversion, format_spec) +f"sin({a}) is {sin(a):.3}" + +## JoinedStr(values) +f"sin({a}) is {sin(a):.3}" + +## List(elts, ctx) +[1, 2, 3] + +## List assign +# [a,b] = 2, 3 + +## Tuple(elts, ctx) +(1, 2, 3) + +## single element tuple +thing = 1, +thing = (1,) + +## tuples without parenthesis +1,2 +1,2, + +## expression statement postfixed with comma +# The following is treated as a tuple due to the trailing comma +Union[ + str, + int + ], + +## Set(elts) +{1, 2, 3} + +## Dict(keys, values) +{'a':1, 'd':5} + +## Dict with dictionary_splat +f = {**arg1, **arg2} + +## Dict with dictionary_splat and normal keys +f = {**arg1, 'a': 55} + +## strings with nested ' or " + +x='bb "a" cc' +y="bb 'a' cc" + +## string variants +a='a string' +b="a string" # should be converted to 'a string' + +## more tricky string variants +x='bb "a" cc' +y="bb 'a' cc" + +y="bb \"a\" cc" # should be converted to 'bb "a" cc' +y="bb \'a\' cc" # \ should be removed +z = "\n" + +## complex string variants with multiline + +x='''bb "a" cc''' +y="""bb 'a' cc""" + +a = 'baaa' +b = "baaa" +c = '''baaa''' +d = """baaa""" +multiline = ''' +asdas + +asdads + + pass + +''' + +multiline2 = """ +asdas + +asdads + + pass + +""" + +## Ellipsis +... + +## None +None + + +## fstring which behave like normal strings +f'nothing' +f"nothing" + +f'nothing "thing" ' +f"nothing 'thing' " + +## f string simple cases +f"sin({a+b}) is {sin(a):.3}" +f'sin({a+b}) is {sin(a):.3}' + +## f string simple cases with initial offset +m = f"something{sin(a)} " +m = f"something" + +## f string simple cases +f"sin({a+b}) i's {sin(a):.3}" +f'sin({a+b}) i"s {sin(a):.3}' + +## f string simple cases w remainder at end +f"sin({a+b}) is {sin(a):.3} plus remainder" +f'sin({a+b}) is {sin(a):.3} plus remainder' + +f"Magic wand: {bag['wand']:^10}" +f'Magic wand: {bag["wand"]:^10}' + +## f string these f strings require special quote treatment +f"{a['b']}" +f'{a["b"]}' + +f"a '' {b} c" +f'a "" {b} c' +f"a {b} c" +f'a {b} c' + +## f string more examples +f'He said his name is {name!r}.' +f"sin({a}) is {sin(a):.3}" # nothing after final } +f'Results of the {year} {event}' +f"{a} is {sin(a):.3}" # at start +f"ּּ{a}≤" #unicode char in the end +f"ּּ≤{a}" #unicode char in the beginning +f"ּּ{a}≤{a}" #unicode char in center +f"ּּ≤" #unicode char + +## f strings - nested +f" f'hi' " +f" {f'hi'} " + +## f strings - multi-line +f"""sin({a}) is {sin(a):.3} plus remainder {also} something else {here}""" +f"""sin({a}) is {sin(a):.3} plus remainder {also} something else {here} """ +f"""sin({a}) is {sin(a):.3} plus remainder {also} something else {here} remainder""" + +f"""is plus remainder something else something else """ + +f"""is + plus remainder + something else + something else""" + +f"""is + plus remainder + something else + something else """ + +f""""{a}""" + + +f"""{a +} +""" + +## f string - multi-line nested +f""" '{b["c"]}' d """ +# f""" "a" '{b["c"]}' "d" """ TODO: Result: f" "a" "{b['c']}" "d" " Expected: f""" "a" "{b['c']}" "d" """ +# f""""{b["c"]}" d """ TODO: Result: f""{b['c']}" d " Expected: f'''"{b['c']}" d ''' +# f''' "{b["c"]}" d ''' TODO: Result: f" "{b['c']}" d " Expected: f''' "{b['c']}" d ''' +f''' '{b['c']}' d ''' +f""" + '{b["c"]}' +""" +f''' + '{b["c"]}' +''' + +## potential CPython bug here, +# column offsets for interpolation nodes for +# nodes on the nth (where n>0) line are off by one +f'''{sin(a+b)} is + {cos(b+c):.3} plus remainder + {tan(a):.3} plus remainder''' + + +f"""sin({a}) is +{ccos(a):.3} plus remainder +something else {here} +something +else {here} +{also +} something else {here}""" + +f"""sin({a}) is + {sin(a):.3} plus remainder + something else {here} + something + else {here} + {also + } something else {here}""" + +f"""{ +something}""" + +if True: + f""" +{ + a}""" + +f"""something{( + here +)}and there""" + +## string concatenated - regular strings + +message = "something " \ + "another {a} line" + +message = "something " \ + "another ' line" # stored with double quote " in ast + +message = 'something ' \ + 'another {a} line' + +message = 'something ' \ + 'another \' line' # stored with double quote " in ast + +## string concatenated - byte strings + +message = b"something " \ + b"another {a} line" + +message = b"something " \ + b"another ' line" # stored with double quote " in ast + +message = b'something ' \ + b'another {a} line' + +message = b'something ' \ + b'another \' line' # stored with double quote " in ast + +## string concatenated - f strings +message = f"something " \ + f"another ' {a} line" + +message = f"something{sin(a)} " \ + f"another {a} line" \ + f"another line" \ + "another line with no f string" \ + + +message = "something " \ + f"another {a} line" + +message = "something " \ + f"another ' {a} line" + + +## f-string concatenated + +message = f"Hi {name}. " \ + f"You are a {profession}. " \ + f"You were in {affiliation}." + +## f-string concatenated tricky cases with {} escape formatting + +message = f"something " \ + "another {{a}} line" + +message = f"something " \ + "another {a} line" + +## f-string {{}} escape formatting +"{{{a}}}" +f"{{{{55}}}}" +f"{{55}}" +f"{k} {{55}}" +f"{{{55}}}" +f"{{{{70 + 4}}}}" + +## strings with unicode escape sequences +emoji = "\U0001F4A9" +symbol = "\u261c" +something_else = "\u0001F4A9" +another_something_else = "\U00000001" +string_with_emoji = "words before \U0001F4A9 words after" +multiline = """ +this is a line +this is an emoji \U0001F4A9 on a line +this is another line +""" + +## strings with invalid unicode escape sequences +x = "\uDC80" # formatted in AST as: "\udc80" + +## f-string with tabulation +f""" + A +""" +f''' + A +''' +f"\t" +f'\t' + +## raw string with unicode escape sequence +raw_emoji = r"\U0001F4A9" + +## f-strings with unicode escape sequences +f_string = f"{symbol} is \U0001F4A9" +f_string2 = f"{something_else} is \u0001F4A9" +f_string3 = f"{symbol} is \U0001F4A9 { symbol } " + +## f-strings with unicode escape sequences not just at the end of the f string +msg = 'a message' +unicode_f_string = f"\u274C {msg} \u274C\u274C \u1210x { msg }" +unicode_f_string = f"\u274C {msg}" + +## f-strings with backslash x not just at the end of the f string +msg = 'a message' +unicode_f_string = f"\x09{msg} \x09 {msg} \x09" + +## f-strings with mixed unicode escape sequences and backslash x not just at the end of the f string +msg = 'a message' +unicode_f_string = f"\u274C \x09 {msg} \x09" + +## f-strings with unusual unicode escape sequences +xx = f"{title_string},\u00B1\u00B1{a_variable:>3.3f}More String" + +## byte string with unicode escape sequence +byte_string = b"Bj\xc3\xb6rk" # should not be converted. Expected: b'Bj\xc3\xb6rk' +byte_string = b'Bj\xc3\xb6rk' + +## tricky ascii characters +something = "\x01" +something_else = "\x8f" +tab = "\x09" +tab2 = "\u0009" +newline = "\x0a" +newline2 = "\U0000000a" +cr = "\x0d" +backslash = "\x5c" + +## multiline strings with unicode escape sequences +xx = f"""\x40 +{another_variable} +""" + +## long integers +timestamp1 = 9223372036854775810 +timestamp2 = -9223372036854775810 + +## complex numbers +complex_half = 0.0302988j + +c = 1 + 2.j +c = 1 + 2j +c = 1 + 2.J +c = 1 + 2J +real = c.real +imag = c.imag + +## very long floats +timestamp = 0.33333333333333334444444444444444356456456456456456457457456456456456456456 +timestamp = 123123123.94856098745609847560987450968734986745096874509867405968740598674509867405968456 + +## long floats - big exponent +timestamp3 = 9223372036854775810. +timestamp4 = -9223372036854775810. + +## long floats - scientific if exponent > 16 digits + +not_scientific = 1111111111111111. +scientific = 11111111111111111. + +not_scientific = -1111111111111111. +scientific = -11111111111111111. + +## long floats - scientific if exponent > 16 digits with mantissa + +not_scientific_mantissa = 1111111111111111.123 +scientific_mantissa = 11111111111111111.123 + +not_scientific_mantissa = -1111111111111111.123 +scientific_mantissa = -11111111111111111.123 + +## format complex numbers with exponent if more then 16 significant digits +c1 = 1 + 20000.j +c2 = 1 + 20000j +c3 = 1 + 20000.J +c4 = 1 + 20000J + +c5 = 1 + 20000000000000000000000.j +c6 = 1 + 20000000000000000000000j +c7 = 1 + 20000000000000000000000.J +c8 = 1 + 20000000000000000000000J + +## format complex numbers with exponent if more then 16 significant digits with mantissa +m1 = 1 + 2000000.123j +m2 = 1 + 2000000.123J + +m3 = 1 + 2000000000000000000.123j +m4 = 1 + 2000000000000000000.123J + +## ensure complex numbers which look like integers are correctly formatted +c6 = 1 + 2000000j +c8 = 1 + 2000000J + +c6 = 1 + 2000000000000j +c8 = 1 + 2000000000000J + +c6 = 1 + 200000000000000000000j +c8 = 1 + 200000000000000000000J + +## b strings single and multiline variants +v1 = b'a b string' +v2 = b"a b string" + +h = b"""asasd""" +h = b'''asasd''' + +## regex strings single and multiline variants +v1 = r'a b string' +v2 = r"a b string" + +h = r"""asasd""" +h = r'''asasd''' + +## raw multiline strings +s = r"""a +b +c +""" +t = b"""a +b +c +""" + +## strings with line continuations +a = """\ +""" +b = '''\ +''' +c = "\ +" +d = '\ +' + +## multiline strings with escaped line continuations +a = """ +Text \\ +Text +""" + +b = '''\\ +''' + +c = """ +Text \\\ +Text +""" + +d = """\\\ +""" + +e = '''\\\ +''' + +## string with tabulation +""" + A +""" +# ''' +# A +# ''' +# "\t" +# '\t' + +## raw strings with trailing slashes that shouldn't be treated as line continuations +a = r"""\ +""" +b = r'''\ +''' +c = r"\ +" +d = r'\ +' +h = r"""a\ +b\ +c +""" + +## byte strings with line continuations +a = b"""\ +""" +b = b'''\ +''' +c = b"\ +" +d = b'\ +' +h = b"""a\ +b\ +c +""" + +## strings wrapping ' and " +a = '"' +b = "'" +c = "\"'" +d = '\'"' + +## b strings wrapping ' and " +a = b'"' +b = b"'" +c = b"\"'" +d = b'\'"' + +## raw strings wrapping ' and " +a = r'"' +b = r"'" +c = r"\"'" +d = r'\'"' + +## empty strings +a = """""" +a = "" +a = '' + +## strings backslashes +a = '\\' +b = "\\" +c = '\"' +d = "\'" +e = "\"" +f = '\'' +g = """\\\"""" + +## b-strings backslashes +a = b'\\' +b = b"\\" +c = b'\"' +d = b"\'" + +## raw strings backslashes +a = r'\"' +b = r'\'' + +## small floating point numbers need scientific representation +p = 0.1 +p = 0.01 +p = 0.001 +p = 0.0001 +p = 0.00001 +p = 0.000001 +p = 0.0000001 +p = 0.00000001 +p = 0.000000001 +p = 0.0000000001 +p = 0.00000000001 +p = 0.000000000001 +p = 0.0000000000001 +p = 0.00000000000001 +m = -0.00000000000001 +m = -0.0000000000001 +m = -0.000000000001 +m = -0.00000000001 +m = -0.0000000001 +m = -0.000000001 +m = -0.00000001 +m = -0.0000001 +m = -0.000001 +m = -0.00001 +m = -0.0001 +m = -0.001 +m = -0.01 +m = -0.1 + +## boundry problem on floating point numbers +0.000001 # 1e-06 +0.000002 # 2e-06 +0.000003 # 3e-06 +0.000004 # 4e-06 +0.000005 # 5e-06 +0.000006 # 6e-06 +0.000007 # 7e-06 +0.000008 # 8e-06 +0.000009 # 9e-06 +0.000010 # 1e-05 +0.000020 # 2e-05 +0.000030 # 3e-05 +0.000040 # 4e-05 +0.000050 # 5e-05 +0.000060 # 6e-05 +0.000070 # 7e-05 +0.000080 # 8e-05 +0.000090 # 9e-05 +0.000100 # 0.0001 + +## zero should not be shown in scientific format +xx = 0.0 # not to be shown in scientific format + +## complex type annotation +# this was the source of a few bugs + +SearchUnion = Union[ + List[ + Union[ + Dict[str, Union[List[FlowRunStatus], str]], + Dict[str, Union[List[str], str]], + Dict[str, str], + ], + ], + str, +] + +## binary integers +x = 0b10101 +f = 0B10101 + +## hexadecimal integers +x = 0x1a +x = 0XaBc + +## octal integers +x = 0o13 +x = 0O13 + +## ints and flaots with underscores +x = 00_0 +x = 1_01 +x = 0b0_1 +x = 1_0.1_01 +x = 1e1_0j +x = 0b0_1 + +## string wrapping with escape string character +a = '\\"' +b = "\\'" +c = '"\\' +d = '"\\A"' +e = "'\\A'" +f = '\\A' +g = "\\A" + +## string wrapping within f-strings +f"\"{a}\"" +f"\'{a}\'" +f"'{a}'" +f"\"a\"" +f"\'a\'" +f"'a'" + +## tuple end col offset mismatch caused by comments not getting filtered out ("comment") +class classname(param): + varname1: Datatype1 = function( + "var description", marker=marker_head.NOT_UII + ) + varname2: Datatype1 = function( + """var description "for var 2\"""", marker=marker_head.NOT_UII + ) + varname3: Struct[ + Field("attribute1", Datatype2), # comment + Field("attribute2", Datatype2), # comment + ] = function( + "assign value", + marker=marker_head.NOT_UII_REMOVE, + ) + +## escaping special and non special characters +a = '\c' +b = '\\c' +c = '\\\c' +d = '\\0' +e = '\\x' + +a = '\0' +b = '\1' +c = '\2' +d = '\3' +e = '\4' +f = '\5' +g = '\6' +h = '\7' +i = '\a' +j = '\b' +k = '\f' +l = '\n' +m = '\r' +n = '\t' +o = '\v' +p = '\ ' +q = '\'' +r = '\"' +s = '\\' + +# octal characters +a = '\0' # '\x00' +b = '\5' # '\x05' +c = '\06' # '\x06' +d = '\007' # '\x07' +e = '\11' # '\t' +f = '\12' # '\n' +g = '\15' # "\r" +h = '\33' # '\x1b' +i = '\42' # "\"" +j = '\45' # '%' +k = '\47' # '\'' +l = '\134' # "\\", +l = '\200' # "\x80" +m = '\733' # 'Ǜ' +n = '\8' # "\\8" +n = '\238' # "\x138" +n = '\7777' # "ǿ7" + +## Raw + f-string +a = fr"\[{a}" +b = fr'\[{a}' +c = rf"\[{a}" +d = rf'\[{a}' diff --git a/source/errpy/tests/test_resources/unit_tests/ast_pattern_matching.pytest b/source/errpy/tests/test_resources/unit_tests/ast_pattern_matching.pytest new file mode 100644 index 00000000000..1aa8b95c0fe --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_pattern_matching.pytest @@ -0,0 +1,381 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate with references +# to the relevant PEP's etc + + +## match_case(pattern, guard, body) +match xx: + case [x] if x >0: + something() + case tuple(): + atuple() + +## MatchValue(value) +match x: + case "Relevant": + thing() + + +match x: + case "Relevant": + thing() + case "Relevant2": + thing() + +## MatchSingleton(value) +match x: + case None: + thing() +match x: + case None: + thing1() + case True: + thing2() + case False: + thing3() + +## MatchSequence(patterns) +match x: + case [1, 2]: + seqmatch() + +## MatchStar(name) +match x: + case [1, 2, *rest]: + thecase1() + case [*_]: + thecase2() + +## MatchMapping(keys, patterns, rest) +match x: + case {1: _, 2: _}: + dsfsdfsdF() + case {**rest}: + serser() + +## MatchClass(cls, patterns, kwd_attrs, kwd_patterns) +match x: + case Something(): # no args + foo1() + case Something.Else(): # more complex class name + foo2() + case Point2D(0, 1, 2): # three args + foo3() + case Point3D(x=0, y=0, z=0): # kw args + foo4() + case Point3D(34, x=0, y=0, z=0): # positional + kw args + foo5() + case Point2D(0, 1, 2,): # three args + trail comma + foo6() + case Point3D(x=0, y=0, z=0,): # kw args + trail comma + foo7() + case Point3D(34, x=0, y=0, z=0,): # positional + kw args + trail comma + foo8() + +## MatchAs(pattern, name) +match x: + case [x] as y: + sdfsdfsdf234234() + case _: + sdfsdfsdf() + +## MatchOr(patterns) +match x: + case [x] | (y): + orthing() + +## MatchOr(patterns) more complex to pretty print +match x: + case [x] | (y): + orthing() + case [x] | (y) | ( a | b | c): + # prety printer needs to add extra params for above + orthing() + +## dotted_name as case pattern +match x: + case x: + f=99 + case a.b.c.d: + f=99 + +## MatchOr +match x: + case x | y: + a=10 + +## Pattern guards +match x: + case x if y > 2: + a=10 + +## MatchSequence's +match xx: + case [x]: + something(x) + case [x, y]: + something(x, y) + case (x, y): + something(x, y) + +## MatchAs +match xx: + case y as f: + dd() + case [x] as y: + gg() + +# The next set of tests are taken from [PEP 636](https://peps.python.org/pep-0636/) + +##PEP 636 - simple +match command.split(): + case [action, obj]: + ... # interpret action, obj + +##PEP 636 - simple multiple patterns +match command.split(): + case [action]: + ... # interpret single-verb action + case [action, obj]: + ... # interpret action, obj + +##PEP 636 - specific values +match command.split(): + case ["quit"]: + print("Goodbye!") + quit_game() + case ["look"]: + current_room.describe() + case ["get", obj]: + character.get(obj, current_room) + case ["go", direction]: + current_room = current_room.neighbor(direction) + # The rest of your commands go here + +##PEP 636 - multple values +match command.split(): + case ["drop", *objects]: + for obj in objects: + character.drop(obj, current_room) + # The rest of your commands go here + +##PEP 636 - adding a wildcard +match command.split(): + case ["quit"]: ... # Code omitted for brevity + case ["go", direction]: ... + case ["drop", *objects]: ... + case _: + print(f"Sorry, I couldn't understand {command!r}") + +##PEP 636 - or patterns +match command.split(): + case ["north"] | ["go", "north"]: + current_room = current_room.neighbor("north") + case ["get", obj] | ["pick", "up", obj] | ["pick", obj, "up"]: + ... # Code for picking up the given object + +##PEP 636 - sub patterns 1 +match command.split(): + case ["go", ("north" | "south" | "east" | "west")]: + current_room = current_room.neighbor(...) + # how do I know which direction to go? + +##PEP 636 - sub patterns 2 +match command.split(): + case ["go", ("north" | "south" | "east" | "west") as direction]: + current_room = current_room.neighbor(direction) + +##PEP 636 - conditions +match command.split(): + case ["go", direction] if direction in current_room.exits: + current_room = current_room.neighbor(direction) + case ["go", _]: + print("Sorry, you can't go that way") + +##PEP 636 - matching objects +match event.get(): + case Click(position=(x, y)): + handle_click_at(x, y) + case KeyPress(key_name="Q") | Quit(): + game.quit() + case KeyPress(key_name="up arrow"): + game.go_north() + case KeyPress(): + pass # Ignore other keystrokes + case other_event: + raise ValueError(f"Unrecognized event: {other_event}") + +##PEP 636 - positional arguments +from dataclasses import dataclass + +@dataclass +class Click: + position: tuple + button: Button + +match event.get(): + case Click((x, y)): + handle_click_at(x, y) + +##PEP 636 - constants and enums +class Click: + __match_args__ = ("position", "button") + def __init__(self, pos, btn): + self.position = pos + self.button = btn + +match event.get(): + case Click((x, y), button=Button.LEFT): # This is a left click + handle_click_at(x, y) + case Click(): + pass # ignore other clicks + +##PEP 636 - dict mappings +for action in actions: + match action: + case {}: + nothing() + case {'text': message, 'color': c}: + ui.set_text_color(c) + ui.display(message) + case {'sleep': duration}: + ui.wait(duration) + case {'sound': url, 'format': 'ogg'}: + ui.play(url) + case {'sound': _, 'format': _}: + warning('Unsupported audio format') + case {'something': _, **others}: + warning('Another Unsupported audio format') + case {**just_double_star}: + warning('just double star') + +##PEP 636 - builtin classes +for action in actions: + match action: + case {"text": str(message), "color": str(c)}: + ui.set_text_color(c) + ui.display(message) + case {"sleep": float(duration)}: + ui.wait(duration) + case {"sound": str(url), "format": "ogg"}: + ui.play(url) + case {"sound": _, "format": _}: + warning("Unsupported audio format") + + +##PEP 636 - quick intro: literals 1 +def http_error(status): + match status: + case 400: + return "Bad request" + case 404: + return "Not found" + case 418: + return "I'm a teapot" + case _: + return "Something's wrong with the Internet" + +##PEP 636 - quick intro: literals 2 +match something(): + case 401 | 403 | 404: + return "Not allowed" + +##PEP 636 - quick intro: unpacking +# point is an (x, y) tuple +match point: + case (0, 0): + print("Origin") + case (0, y): + print(f"Y={y}") + case (x, 0): + print(f"X={x}") + case (x, y): + print(f"X={x}, Y={y}") + case _: + raise ValueError("Not a point") + +##PEP 636 - quick intro: attribute capture +from dataclasses import dataclass + +@dataclass +class Point: + x: int + y: int + +def where_is(point): + match point: + case Point(x=0, y=0): + print("Origin") + case Point(x=0, y=y): + print(f"Y={y}") + case Point(x=x, y=0): + print(f"X={x}") + case Point(): + print("Somewhere else") + case _: + print("Not a point") + +##PEP 636 - quick intro: nesting +match points: + case []: + print("No points") + case [Point(0, 0)]: + print("The origin") + case [Point(x, y)]: + print(f"Single point {x}, {y}") + case [Point(0, y1), Point(0, y2)]: + print(f"Two on the Y axis at {y1}, {y2}") + case _: + print("Something else") + +##PEP 636 - quick intro: guard +match point: + case Point(x, y) if x == y: + print(f"Y=X at {x}") + case Point(x, y): + print(f"Not on the diagonal") + +##PEP 636 - quick intro: enum +from enum import Enum +class Color(Enum): + RED = 0 + GREEN = 1 + BLUE = 2 + +match color: + case Color.RED: + print("I see red!") + case Color.GREEN: + print("Grass is green") + case Color.BLUE: + print("I'm feeling the blues :(") + +## Match value - negative numbers + match xx: + case 3 | -3: + pass + case 3. | -3.: + pass + +## Match complex numbers +match x: + case -3 + 5j: + pass + case -3 + 5j as b2: + pass + case 3j as b1, -3 + 5j as b2: + pass + case -3. + 5j: + pass + case 3 - 5.j: + pass + +## Maybe sequence pattern right hand side precedence validation +match a: + case a1, *a2, a3: + pass diff --git a/source/errpy/tests/test_resources/unit_tests/ast_statements.pytest b/source/errpy/tests/test_resources/unit_tests/ast_statements.pytest new file mode 100644 index 00000000000..199e4cede51 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_statements.pytest @@ -0,0 +1,130 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## Raise(exc, cause) +raise +raise gg +raise x from y + +## Assert(test, msg) +assert x +assert x,y + + +## Delete(targets) +del x,y,z + +## Pass +def thing(): + pass + +## Import(names) +import x,y,z + +## ImportFrom(module, names, level) +from y import x,y,z + +## import from with params +from y import (x,y,z) + +## alias(name, asname) +from ..foo.bar import a as b, c +from .foo.bar import a as b, c +from ...foo.bar import a as b, c + +## future import from (yes, we use this in fbcode) +from __future__ import annotations +from __future__ import absolute_import, division, print_function, unicode_literals + +## comments in places other than on their own lines or after statements +# comment - this is here because at first I forgot to add a newline for +# comments without anything preceeding them which messed up the AST +# line numbers + +def foo( + a=34, + # a comment here + skip_loads=True, +): + pass + + +a = (# comment in strange place + 1 , 2, 3) + +"some # comment (hash) character in a string" +'another # comment (hash) character in a string' + +""" +some multiline string # this is not a comment +""" + +## Tuple unpacking inside list comprehension +a = [f"{i}{j}" for (i, j) in [("alpha", "beta"), ("one", "two")]] + +## multiline format string with format on first line +format_string = f"""{a} +""" + +format_string = f"""{a +} +""" + +## multiline format string with format on second line +format_string = f""" +{b} +""" + +format_string = f""" +{b} {c} +""" + +format_string = f'''{sin(a+b)} is + {cos(b+c):.3} plus remainder + {tan(a):.3} plus remainder''' + +## multiline format string with format on second line continuation + +format_string = f""" +{b} {c} \ +""" + +format_string = f" a \ +b {c} \ +d {e}" + + +## formatted value test +format_string = f"{v=!r:->8s}" +format_string = f"{v=:->8s}" +format_string = f"{v=!r}" +format_string = f"{v=}" +format_string = f"{v!r:->8s}" +format_string = f"{v:->8s}" +format_string = f"{v!r}" +format_string = f"{v}" + +format_string = f"sometext {v=!r:->8s}" +format_string = f"sometext {v=:->8s}" +format_string = f"sometext {v=!r}" +format_string = f"sometext {v=}" +format_string = f"sometext {v!r:->8s}" +format_string = f"sometext {v:->8s}" +format_string = f"sometext {v!r}" +format_string = f"sometext {v}" + +##PEP 448 – Additional Unpacking Generalizations +print(*[1], *[2], 3) +x=dict(**{'x': 1}, y=2, **{'z': 3}) +x=*range(4), 4 +x=[*range(4), 4] +x={*range(4), 4} +x={'x': 1, **{'y': 2}} +x={**{'x': 2}, 'x': 1} +ranges = [range(i) for i in range(5)] diff --git a/source/errpy/tests/test_resources/unit_tests/ast_variables.pytest b/source/errpy/tests/test_resources/unit_tests/ast_variables.pytest new file mode 100644 index 00000000000..10685f98afc --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/ast_variables.pytest @@ -0,0 +1,73 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Ensure correct AST creation given units defined under: https://docs.python.org/3/library/ast.html :: 3.10.7 grammar +# Note: the guide referenced above is not complete, so we've extended it here where appropriate + + +## Name(id, ctx) +a + +## Load +a + +## Store +a = 1 # lhs has store applied, rhs is load + +## Del +del a +del a, b, c + +## Starred(value, ctx) +a, *b = it + +## simple assignments +a=9 +b=a + +## simple assignments 2 +a=9 +b=a + +## Assign(targets, value, type_comment) +a = b = 1 +a,b = c + +b = 99 +a = 88 +c = d = 6 + +## AnnAssign(target, annotation, value, simple) +c: int +aa: int = 99 +(a): int = 1 +a.b: int +a[1]: int + +## AugAssign(target, op, value) +x += 2 + +## tuple and list assignments rhs and lhs +(a,b) = xxx +a, b = xxx +[a,b] = xxx + +xx = [1,2] +xx = (1,2) +xx = 1,2 + +xx = {1,2} + +## yield on rhs of assignment +ff = yield +ff = yield yy +ff = yield from yy + +## bugfix 1 item tuple, should resolve to just name unless ended with comma +b = (a) +b = (a,) + +(a) = 3 +(a, ) = 3 diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest new file mode 100644 index 00000000000..f2d260f0b49 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest @@ -0,0 +1,198 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + + +## This sample tests basic parsing of match statements as described in PEP 634. + +from typing import Any + +value_obj: Any = 4 + +class Foo: + x: int + + +match (1, ): + case a1, b1 if True: + pass + + case (a2, b2): + pass + + case [a3, b3]: + pass + + case () | []: + pass + + # This should generate an error because of a missing pattern. + case : + pass + + # This should generate an error because it is an irrefutable pattern + # and is not at the end. + case (a4): + pass + + case (a5,): + pass + + case [a6,]: + pass + + case a7 as b7, c7 as d7 if True: + pass + + case (a8, b8, ) as c8 if 1 == 3: + pass + + case a9, *b8: + pass + + # This should generate an error because multiple star + # patterns in a sequence are not allowed. + case *a10, *b10: + pass + + # This should generate an error because star + # patterns cannot be used with "as". + case *a11 as b11, b12: + pass + + case value_obj.a, value_obj.b: + pass + + # This should generate an error because star + # patterns can't be used with |. + case (3 as b13) | (4 as b13) | *b13: + pass + + case *a14, b14: + pass + + case (a20, (b20,), [c20, *d20]) as e20: + pass + + case 3 | -3: + pass + + case 3.2 - 2.1j | -3.2 + 2.1j | 3j: + pass + + # This should generate an error because the grammar + # indicates that imaginary number must come second. + case 2j + 4: + pass + + # This should generate an error because the grammar + # indicates that imaginary number must come second. + case - 2j + 4: + pass + + case "hi" """hi""" | r"hi" r"""hi""": + pass + + # This should generate an error because f-strings are + # not allowed. + case "hi" f"""hi""": + pass + + # This should generate an error. + case {}: + pass + + case {"a": 3, -3 + 4j: a30, value_obj.a: b30, **c30}: + pass + + # This should generate an error because only one ** expression + # can be used. + case {"a": 3, **a31, "b": -3j, **b31}: + pass + + # This should generate an error because ** cannot be used with + # wildcard "_". + case {"a": 3, **_, "b": -3}: + pass + + case (3 as x) as y: + pass + + case int(): + pass + + case Foo(1, a40, value_obj.b as b40, c40=3|-2 + 5j|"hi" as d40, y=[e40, f40] as g40,): + pass + + # This should generate an error because positional arguments + # cannot appear after keyword arguments. + case Foo(1, a41, x=3, value_obj.b as b41, c41=3, y=[d41, e41] as f41): + pass + + # This should generate three errors because irrefutable patterns + # must appear only as the last entry in an or pattern. + case (_ as x) | x: + pass + + # This should generate an error because it's an irrefutable pattern + # but is not the last case statement. + case _: + pass + + # This should generate an error because it's an irrefutable pattern + # but is not the last case statement. + case (x): + pass + + case _ if value_obj: + pass + + # This should generate an error because or patterns must target the + # same names. + case 3 | x: + pass + + case _: + pass + + + +def func1(): + match = Foo() + + # This should be treated as an expression statement, not a match statement. + match.x + + +def func2(): + match = [3] + + # This should be treated as an expression statement, not a match statement. + match[0] + + match [0]: + case _: + pass + +def func3(): + def match(a: int): ... + + # This should be treated as a call statement. + match(0) + + match (0): + case _: + pass + +def func4(): + match 1, 2, "3": + case _: + pass + +def func5(match: Any): + # This should be treated as a list, not a match statement. + match[2:8, 2:8] = 0 diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest.expect_fails b/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest.expect_fails new file mode 100644 index 00000000000..e5e5b687416 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match1.pytest.expect_fails @@ -0,0 +1 @@ +This sample tests basic parsing of match statements as described in PEP 634. diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match10.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match10.pytest new file mode 100644 index 00000000000..9282c05eff6 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match10.pytest @@ -0,0 +1,124 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests the reportMatchNotExhaustive diagnostic check. + +from types import NoneType +from typing import Literal +from enum import Enum + + +def func1(subj: Literal["a", "b"], cond: bool): + # This should generate an error if reportMatchNotExhaustive is enabled. + match subj: + case "a": + pass + + case "b" if cond: + pass + + +def func2(subj: object): + # This should generate an error if reportMatchNotExhaustive is enabled. + match subj: + case int(): + pass + + +def func3(subj: object): + match subj: + case object(): + pass + + +def func4(subj: tuple[str] | tuple[int]): + match subj[0]: + case str(): + pass + + case int(): + pass + + +def func5(subj: Literal[1, 2, 3]): + # This should generate an error if reportMatchNotExhaustive is enabled. + match subj: + case 1 | 2: + pass + + +class Color(Enum): + red = 0 + green = 1 + blue = 2 + + +def func6(subj: Color): + # This should generate an error if reportMatchNotExhaustive is enabled. + match subj: + case Color.red: + pass + + case Color.green: + pass + + +class ClassA: + def method1(self) -> str: + match self: + case ClassA(): + return "" + + +def func7() -> int: + match [10]: + case [*values]: + return values[0] + + +class SingleColor(Enum): + red = 0 + + +def func8(subj: SingleColor) -> int: + match subj: + case SingleColor.red: + return 1 + + +def func9(subj: int | None): + match subj: + case NoneType(): + return 1 + case int(): + return 2 + + +def func10(subj: Color | None = None) -> list[str]: + results = [""] + for x in [""]: + match subj: + case None: + results.append(x) + case Color.red: + pass + case Color.green: + pass + case Color.blue: + pass + return results + + +def func11(subj: int | float | None): + match subj: + case float(): + reveal_type(subj, expected_text="int | float") + case int(): + reveal_type(subj, expected_text="int") + case NoneType(): + reveal_type(subj, expected_text="None") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match11.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match11.pytest new file mode 100644 index 00000000000..f8c4a4ac131 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match11.pytest @@ -0,0 +1,72 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests the reportUnnecessaryComparison check when applied to match statements. + +from typing import Literal, Mapping, Sequence + +Letters = Literal["A", "B", "C"] + + +def func1(subj: Letters): + match subj: + # This should generate an error if reportUnnecessaryComparison is enabled. + case "A" | "B" | "D": + pass + case str(): + pass + # This should generate an error if reportUnnecessaryComparison is enabled. + case "C": + pass + # This should generate an error if reportUnnecessaryComparison is enabled. + case x: + print(x) + + +def func2(subj: int | dict[str, str]): + match subj: + # This should generate an error if reportUnnecessaryComparison is enabled. + case str() if subj > 4: + pass + case int() if subj > 4: + pass + case int(): + pass + # This should generate an error if reportUnnecessaryComparison is enabled. + case int(): + pass + # This should generate an error if reportUnnecessaryComparison is enabled. + case (a, b): + print(a, b) + case {"": d}: + print(d) + case dict(): + pass + # This should generate an error if reportUnnecessaryComparison is enabled. + case x: + print(x) + + +JsonValue = ( + None | bool | int | float | str | Sequence["JsonValue"] | Mapping[str, "JsonValue"] +) +JsonObject = Mapping[str, JsonValue] + + +def func3(json_object: JsonObject) -> None: + match json_object: + case { + "a": { + "b": [ + { + "c": "d", + } + ], + } + }: + pass diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest new file mode 100644 index 00000000000..3193a544b57 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest @@ -0,0 +1,72 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests narrowing of subject subexpressions in match statements. + +from typing import Literal, TypedDict + + +class TD1(TypedDict): + name: Literal["a"] + extra_value: int + + +class TD2(TypedDict): + name: Literal["b"] + other_extra_value: int + + +def func1(item: TD1 | TD2): + match item["name"]: + case "c": + reveal_type(item, expected_text="Never") + case "a": + reveal_type(item, expected_text="TD1") + case "b": + reveal_type(item, expected_text="TD2") + + +T1 = tuple[Literal[0], int] +T2 = tuple[Literal[1], str] + + +def func2(item: T1 | T2): + match item[0]: + case 0: + reveal_type(item, expected_text="tuple[Literal[0], int]") + case 1: + reveal_type(item, expected_text="tuple[Literal[1], str]") + + +def func3(a: object, b: int) -> None: + match a, b: + case (complex(), 3): + reveal_type(a, expected_text="complex") + reveal_type(b, expected_text="Literal[3]") + + +Token = ( + str + | tuple[Literal["define"], str, str] + | tuple[Literal["include"], str] + | tuple[Literal["use"], str, int, int] +) + + +def func4(token: Token): + match token: + case str(x): + reveal_type(token, expected_text="str") + case "define", _, _: + reveal_type(token, expected_text="tuple[Literal['define'], str, str]") + case "include", _: + reveal_type(token, expected_text="tuple[Literal['include'], str]") + case "use", _, _, _: + reveal_type(token, expected_text="tuple[Literal['use'], str, int, int]") + case _: + reveal_type(token, expected_text="Never") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest.expect_fails b/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest.expect_fails new file mode 100644 index 00000000000..e8fa8402df9 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match12.pytest.expect_fails @@ -0,0 +1 @@ +This sample tests narrowing of subject subexpressions in match statements. diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match2.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match2.pytest new file mode 100644 index 00000000000..584039304c4 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match2.pytest @@ -0,0 +1,381 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type checking for match statements (as described in PEP 634) that contain sequence patterns. + +from typing import Any, Generic, List, Literal, Protocol, Tuple, TypeVar, Union + +def test_unknown(value_to_match): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="Unknown") + reveal_type(a2, expected_text="Unknown") + + case *b1, b2: + reveal_type(b1, expected_text="list[Unknown]") + reveal_type(b2, expected_text="Unknown") + + case c1, *c2: + reveal_type(c1, expected_text="Unknown") + reveal_type(c2, expected_text="list[Unknown]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="Unknown") + reveal_type(d2, expected_text="list[Unknown]") + reveal_type(d3, expected_text="Unknown") + + case 3, *e1: + reveal_type(e1, expected_text="list[Unknown]") + + case "hi", *f1: + reveal_type(f1, expected_text="list[Unknown]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[Unknown]") + + +def test_list(value_to_match: List[str]): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="str") + reveal_type(a2, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case *b1, b2: + reveal_type(b1, expected_text="list[str]") + reveal_type(b2, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case c1, *c2: + reveal_type(c1, expected_text="str") + reveal_type(c2, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="str") + reveal_type(d2, expected_text="list[str]") + reveal_type(d3, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case 3, *e1: + reveal_type(e1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + +def test_open_ended_tuple(value_to_match: Tuple[str, ...]): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="str") + reveal_type(a2, expected_text="str") + reveal_type(value_to_match, expected_text="tuple[str, str]") + + case *b1, b2: + reveal_type(b1, expected_text="list[str]") + reveal_type(b2, expected_text="str") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case c1, *c2: + reveal_type(c1, expected_text="str") + reveal_type(c2, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="str") + reveal_type(d2, expected_text="list[str]") + reveal_type(d3, expected_text="str") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case 3, *e1: + reveal_type(e1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + +def test_definite_tuple(value_to_match: Tuple[int, str, float, complex]): + match value_to_match: + case a1, a2, a3, a4 if value_to_match[0] == 0: + reveal_type(a1, expected_text="int") + reveal_type(a2, expected_text="str") + reveal_type(a3, expected_text="float") + reveal_type(a4, expected_text="complex") + reveal_type(value_to_match, expected_text="tuple[int, str, float, complex]") + + case *b1, b2 if value_to_match[0] == 0: + reveal_type(b1, expected_text="list[int | str | float]") + reveal_type(b2, expected_text="complex") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case c1, *c2 if value_to_match[0] == 0: + reveal_type(c1, expected_text="int") + reveal_type(c2, expected_text="list[str | float | complex]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case d1, *d2, d3 if value_to_match[0] == 0: + reveal_type(d1, expected_text="int") + reveal_type(d2, expected_text="list[str | float]") + reveal_type(d3, expected_text="complex") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case 3, *e1: + reveal_type(e1, expected_text="list[str | float | complex]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case "hi", *f1: + reveal_type(f1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case *g1, 3j: + reveal_type(g1, expected_text="list[int | str | float]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case *h1, "hi": + reveal_type(h1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +def test_union(value_to_match: Union[Tuple[complex, complex], Tuple[int, str, float, complex], List[str], Tuple[float, ...], Any]): + match value_to_match: + case a1, a2, a3, a4 if value_to_match[0] == 0: + reveal_type(a1, expected_text="int | str | float | Any") + reveal_type(a2, expected_text="str | float | Any") + reveal_type(a3, expected_text="float | str | Any") + reveal_type(a4, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="tuple[int, str, float, complex] | List[str] | tuple[float, float, float, float] | Any") + + case *b1, b2 if value_to_match[0] == 0: + reveal_type(b1, expected_text="list[complex] | list[int | str | float] | list[str] | list[float] | list[Any]") + reveal_type(b2, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case c1, *c2 if value_to_match[0] == 0: + reveal_type(c1, expected_text="complex | int | str | float | Any") + reveal_type(c2, expected_text="list[complex] | list[str | float | complex] | list[str] | list[float] | list[Any]") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case d1, *d2, d3 if value_to_match[0] == 0: + reveal_type(d1, expected_text="complex | int | str | float | Any") + reveal_type(d2, expected_text="list[str | float] | list[str] | list[float] | list[Any]") + reveal_type(d3, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case 3, e1: + reveal_type(e1, expected_text="complex | float | Any") + reveal_type(value_to_match, expected_text="tuple[Literal[3], complex] | tuple[Literal[3], float] | Any") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str] | list[Any]") + reveal_type(value_to_match, expected_text="List[str] | Any") + + case *g1, 3j: + reveal_type(g1, expected_text="list[complex] | list[int | str | float] | list[Any]") + reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Any") + + case *h1, "hi": + reveal_type(h1, expected_text="list[str] | list[Any]") + reveal_type(value_to_match, expected_text="List[str] | Any") + + +class SupportsLessThan(Protocol): + def __lt__(self, __other: Any) -> bool: ... + def __le__(self, __other: Any) -> bool: ... + +SupportsLessThanT = TypeVar("SupportsLessThanT", bound=SupportsLessThan) + + +def sort(seq: List[SupportsLessThanT]) -> List[SupportsLessThanT]: + match seq: + case [] | [_]: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y] if x <= y: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y]: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return [y, x] + + case [x, y, z] if x <= y <= z: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y, z] if x > y > z: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return [z, y, x] + + case [p, *rest]: + a = sort([x for x in rest if x <= p]) + b = sort([x for x in rest if p < x]) + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return a + [p] + b + return seq + + +def test_exceptions(seq: Union[str, bytes, bytearray]): + match seq: + case [x, y]: + reveal_type(x, expected_text="Never") + reveal_type(y, expected_text="Never") + return seq + +def test_object(seq: object): + match seq: + case (a1, a2) as a3: + reveal_type(a1, expected_text="object") + reveal_type(a2, expected_text="object") + reveal_type(a3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (*b1, b2) as b3: + reveal_type(b1, expected_text="list[object]") + reveal_type(b2, expected_text="object") + reveal_type(b3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (c1, *c2) as c3: + reveal_type(c1, expected_text="object") + reveal_type(c2, expected_text="list[object]") + reveal_type(c3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (d1, *d2, d3) as d4: + reveal_type(d1, expected_text="object") + reveal_type(d2, expected_text="list[object]") + reveal_type(d3, expected_text="object") + reveal_type(d4, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (3, *e1) as e2: + reveal_type(e1, expected_text="list[object]") + reveal_type(e2, expected_text="Sequence[object | int]") + reveal_type(seq, expected_text="Sequence[object | int]") + + case ("hi", *f1) as f2: + reveal_type(f1, expected_text="list[object]") + reveal_type(f2, expected_text="Sequence[object | str]") + reveal_type(seq, expected_text="Sequence[object | str]") + + case (*g1, "hi") as g2: + reveal_type(g1, expected_text="list[object]") + reveal_type(g2, expected_text="Sequence[object | str]") + reveal_type(seq, expected_text="Sequence[object | str]") + + case [1, "hi", True] as h1: + reveal_type(h1, expected_text="Sequence[int | str | bool]") + reveal_type(seq, expected_text="Sequence[int | str | bool]") + + case [1, i1] as i2: + reveal_type(i1, expected_text="object") + reveal_type(i2, expected_text="Sequence[object | int]") + reveal_type(seq, expected_text="Sequence[object | int]") + +_T = TypeVar('_T') + +class A(Generic[_T]): + a: _T + +class B: ... +class C: ... + +AAlias = A + +AInt = A[int] + +BOrC = B | C + +def test_illegal_type_alias(m: object): + match m: + case AAlias(a=i): + pass + + # This should generate an error because it raises an + # exception at runtime. + case AInt(a=i): + pass + + # This should generate an error because it raises an + # exception at runtime. + case BOrC(a=i): + pass + +def test_negative_narrowing1(subj: tuple[Literal[0]] | tuple[Literal[1]]): + match subj: + case b: + reveal_type(subj, expected_text="Never") + reveal_type(b, expected_text="Never") + + +def test_negative_narrowing2(subj: tuple[int, ...]): + match subj: + case (1,*a): + reveal_type(subj, expected_text="tuple[int, ...]") + reveal_type(a, expected_text="list[int]") + + case (b,): + reveal_type(subj, expected_text="tuple[int]") + reveal_type(b, expected_text="int") + + case (*c,): + reveal_type(subj, expected_text="tuple[int, ...]") + reveal_type(c, expected_text="list[int]") + + case d: + reveal_type(subj, expected_text="Never") + reveal_type(d, expected_text="Never") + + +def test_negative_narrowing3(subj: tuple[Any, Any]): + match subj: + case (a, b): + reveal_type(a, expected_text="Any") + reveal_type(b, expected_text="Any") + + case x: + reveal_type(x, expected_text="Never") + + +def test_negative_narrowing4(a: str | None, b: str | None): + match (a, b): + case (None, _) as x: + reveal_type(x, expected_text="tuple[None, str | None]") + case (_, None) as x: + reveal_type(x, expected_text="tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing5(a: str | None, b: str | None): + match (a, b): + case (None, _) | (_, None) as x: + reveal_type(x, expected_text="tuple[None, str | None] | tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing6(a: str | None, b: str | None): + match (a, b): + case (None, None) as x: + reveal_type(x, expected_text="tuple[None, None]") + case (None, _) as x if 2 > 1: + reveal_type(x, expected_text="tuple[None, str | None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str | None, str | None]") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match3.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match3.pytest new file mode 100644 index 00000000000..c4243807cbd --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match3.pytest @@ -0,0 +1,399 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type checking for match statements (as described in PEP 634) that contain class patterns. + +from typing import Any, Generic, Literal, NamedTuple, Optional, TypeVar, Union +from dataclasses import dataclass, field + +foo = 3 + +T = TypeVar("T") + + +class ClassA: + __match_args__ = ("attr_a", "attr_b") + attr_a: int + attr_b: str + + +class ClassB(Generic[T]): + __match_args__ = ("attr_a", "attr_b") + attr_a: T + attr_b: str + + +class ClassC: + ... + + +class ClassD(ClassC): + ... + + +def test_unknown(value_to_match): + match value_to_match: + case ClassA(attr_a=a2) as a1: + reveal_type(a1, expected_text="ClassA") + reveal_type(a2, expected_text="int") + reveal_type(value_to_match, expected_text="ClassA") + + # This should generate an error because foo isn't instantiable. + case foo() as a3: + pass + + +def test_any(value_to_match: Any): + match value_to_match: + case list() as a1: + reveal_type(a1, expected_text="list[Unknown]") + reveal_type(value_to_match, expected_text="list[Unknown]") + + +def test_custom_type(value_to_match: ClassA | ClassB[int] | ClassB[str] | ClassC): + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case ClassA(attr_a=a4, attr_b=a5) as a3: + reveal_type(a3, expected_text="ClassA") + reveal_type(a4, expected_text="int") + reveal_type(a5, expected_text="str") + reveal_type(value_to_match, expected_text="ClassA") + reveal_type(value_to_match, expected_text="ClassA") + + case ClassB(a6, a7): + reveal_type(a6, expected_text="int | str") + reveal_type(a7, expected_text="str") + reveal_type(value_to_match, expected_text="ClassB[int] | ClassB[str]") + + case ClassD() as a2: + reveal_type(a2, expected_text="ClassD") + reveal_type(value_to_match, expected_text="ClassD") + + case ClassC() as a8: + reveal_type(a8, expected_text="ClassC") + reveal_type(value_to_match, expected_text="ClassC") + + +def test_literal(value_to_match: Literal[3]): + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="Literal[3]") + reveal_type(value_to_match, expected_text="Literal[3]") + + case float() as a2: + reveal_type(a2, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case str() as a3: + reveal_type(a3, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +TFloat = TypeVar("TFloat", bound=float) + + +def test_bound_typevar(value_to_match: TFloat) -> TFloat: + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="int*") + reveal_type(value_to_match, expected_text="int*") + + case float() as a2: + reveal_type(a2, expected_text="float*") + reveal_type(value_to_match, expected_text="float*") + + case str() as a3: + reveal_type(a3, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + return value_to_match + + +TInt = TypeVar("TInt", bound=int) + + +def test_union( + value_to_match: Union[TInt, Literal[3], float, str] +) -> Union[TInt, Literal[3], float, str]: + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="int* | int") + reveal_type(value_to_match, expected_text="int* | int") + + case float() as a2: + reveal_type(a2, expected_text="float") + reveal_type(value_to_match, expected_text="float") + + case str() as a3: + reveal_type(a3, expected_text="str") + reveal_type(value_to_match, expected_text="str") + + return value_to_match + + +T = TypeVar("T") + + +class Point(Generic[T]): + __match_args__ = ("x", "y") + x: T + y: T + + +def func1(points: list[Point[float] | Point[complex]]): + match points: + case [] as a1: + reveal_type(a1, expected_text="list[Point[float] | Point[complex]]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(0, 0) as b1]: + reveal_type(b1, expected_text="Point[float] | Point[complex]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(c1, c2)]: + reveal_type(c1, expected_text="float | complex") + reveal_type(c2, expected_text="float | complex") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(0, d1), Point(0, d2)]: + reveal_type(d1, expected_text="float | complex") + reveal_type(d2, expected_text="float | complex") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case _ as e1: + reveal_type(e1, expected_text="list[Point[float] | Point[complex]]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + +def func2(subj: object): + match subj: + case list() as a1: + reveal_type(a1, expected_text="list[Unknown]") + reveal_type(subj, expected_text="list[Unknown]") + + +def func3(subj: Union[int, str, dict[str, str]]): + match subj: + case int(x): + reveal_type(x, expected_text="int") + reveal_type(subj, expected_text="int") + + case str(x): + reveal_type(x, expected_text="str") + reveal_type(subj, expected_text="str") + + case dict(x): + reveal_type(x, expected_text="dict[str, str]") + reveal_type(subj, expected_text="dict[str, str]") + + +def func4(subj: object): + match subj: + case int(x): + reveal_type(x, expected_text="int") + reveal_type(subj, expected_text="int") + + case str(x): + reveal_type(x, expected_text="str") + reveal_type(subj, expected_text="str") + + +# Test the auto-generation of __match_args__ for dataclass. +@dataclass +class Dataclass1: + val1: int + val2: str = field(init=False) + val3: complex + + +@dataclass +class Dataclass2: + val1: int + val2: str + val3: float + + +def func5(subj: object): + match subj: + case Dataclass1(a, b): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="complex") + reveal_type(subj, expected_text="Dataclass1") + + case Dataclass2(a, b, c): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="str") + reveal_type(c, expected_text="float") + reveal_type(subj, expected_text="Dataclass2") + + +# Test the auto-generation of __match_args__ for named tuples. +NT1 = NamedTuple("NT1", [("val1", int), ("val2", complex)]) +NT2 = NamedTuple("NT2", [("val1", int), ("val2", str), ("val3", float)]) + + +def func6(subj: object): + match subj: + case NT1(a, b): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="complex") + reveal_type(subj, expected_text="NT1") + + case NT2(a, b, c): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="str") + reveal_type(c, expected_text="float") + reveal_type(subj, expected_text="NT2") + + +def func7(subj: object): + match subj: + case complex(real=a, imag=b): + reveal_type(a, expected_text="float") + reveal_type(b, expected_text="float") + + +T2 = TypeVar("T2") + + +class Parent(Generic[T]): + ... + + +class Child1(Parent[T]): + ... + + +class Child2(Parent[T], Generic[T, T2]): + ... + + +def func8(subj: Parent[int]): + match subj: + case Child1() as a1: + reveal_type(a1, expected_text="Child1[int]") + reveal_type(subj, expected_text="Child1[int]") + + case Child2() as b1: + reveal_type(b1, expected_text="Child2[int, Unknown]") + reveal_type(subj, expected_text="Child2[int, Unknown]") + + +T3 = TypeVar("T3") + + +def func9(v: T3) -> Optional[T3]: + match v: + case str(): + reveal_type(v, expected_text="str*") + return v + + case _: + return None + + +T4 = TypeVar("T4", int, str) + + +def func10(v: T4) -> Optional[T4]: + match v: + case str(): + reveal_type(v, expected_text="str*") + return v + + case int(): + reveal_type(v, expected_text="int*") + return v + + case list(): + reveal_type(v, expected_text="Never") + return v + + case _: + return None + + +def func11(subj: Any): + match subj: + case Child1() as a1: + reveal_type(a1, expected_text="Child1[Unknown]") + reveal_type(subj, expected_text="Child1[Unknown]") + + case Child2() as b1: + reveal_type(b1, expected_text="Child2[Unknown, Unknown]") + reveal_type(subj, expected_text="Child2[Unknown, Unknown]") + + +def func12(subj: int, flt_cls: type[float], union_val: float | int): + match subj: + # This should generate an error because int doesn't accept two arguments. + case int(1, 2): + pass + + match subj: + # This should generate an error because float doesn't accept keyword arguments. + case float(x=1): + pass + + match subj: + case flt_cls(): + pass + + # This should generate an error because it is a union. + case union_val(): + pass + + +def func13(subj: tuple[Literal[0]]): + match subj: + case tuple((1,)) as a: + reveal_type(subj, expected_text="Never") + reveal_type(a, expected_text="Never") + + case tuple((0, 0)) as b: + reveal_type(subj, expected_text="Never") + reveal_type(b, expected_text="Never") + + case tuple((0,)) as c: + reveal_type(subj, expected_text="tuple[Literal[0]]") + reveal_type(c, expected_text="tuple[Literal[0]]") + + case d: + reveal_type(subj, expected_text="Never") + reveal_type(d, expected_text="Never") + + +class ClassE(Generic[T]): + __match_args__ = ("x",) + x: list[T] + + +class ClassF(ClassE[T]): + pass + + +def func14(subj: ClassE[T]) -> T | None: + match subj: + case ClassF(a): + reveal_type(subj, expected_text="ClassF[T@func14]") + reveal_type(a, expected_text="list[T@func14]") + return a[0] + + +class IntPair(tuple[int, int]): + pass + + +def func15(x: IntPair | None) -> None: + match x: + case IntPair((y, z)): + reveal_type(y, expected_text="int") + reveal_type(z, expected_text="int") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match4.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match4.pytest new file mode 100644 index 00000000000..6408e68ca3a --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match4.pytest @@ -0,0 +1,145 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type checking for match statements (as described in PEP 634) that contain value patterns. + +from dataclasses import dataclass +from enum import Enum, auto +from typing import Annotated, Tuple, TypeVar, Union +from http import HTTPStatus + + +def handle_reply(reply: Tuple[HTTPStatus, str] | Tuple[HTTPStatus]): + match reply: + case (HTTPStatus.OK as a1, a2): + reveal_type(a1, expected_text="Literal[HTTPStatus.OK]") + reveal_type(a2, expected_text="str") + + case (HTTPStatus.NOT_FOUND as d1,): + reveal_type(d1, expected_text="Literal[HTTPStatus.NOT_FOUND]") + + +class MyEnum(Enum): + V1 = 0 + V2 = 1 + + +class MyClass: + class_var_1: "MyClass" + + def __eq__(self, object: "MyClass") -> bool: + ... + + +def test_unknown(value_to_match): + match value_to_match: + case MyEnum.V1 as a1: + reveal_type(a1, expected_text="Unknown") + reveal_type(value_to_match, expected_text="Unknown") + + +def test_enum(value_to_match: MyEnum): + match value_to_match: + case MyEnum.V1 as a1: + reveal_type(a1, expected_text="Literal[MyEnum.V1]") + reveal_type(value_to_match, expected_text="Literal[MyEnum.V1]") + + +def test_class_var(value_to_match: str): + match value_to_match: + case MyClass.class_var_1 as a1: + reveal_type(a1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +TInt = TypeVar("TInt", bound=MyEnum) + + +def test_union(value_to_match: Union[TInt, MyEnum]) -> Union[TInt, MyEnum]: + match value_to_match: + case MyEnum.V1 as a1: + reveal_type(a1, expected_text="Literal[MyEnum.V1]") + reveal_type(value_to_match, expected_text="Literal[MyEnum.V1]") + + return value_to_match + + +class Medal(Enum): + gold = 1 + silver = 2 + bronze = 3 + + +class Color(Enum): + red = 1 + blue = 2 + green = 3 + + +def test_enum_narrowing(m: Union[Medal, Color, int]): + match m: + case Medal.gold as a1: + reveal_type(a1, expected_text="Literal[Medal.gold]") + reveal_type(m, expected_text="Literal[Medal.gold]") + + case Medal.silver as b1: + reveal_type(b1, expected_text="Literal[Medal.silver]") + reveal_type(m, expected_text="Literal[Medal.silver]") + + case Color() as c1: + reveal_type(c1, expected_text="Color") + reveal_type(m, expected_text="Color") + + case d1: + reveal_type(d1, expected_text="int | Literal[Medal.bronze]") + reveal_type(m, expected_text="int | Literal[Medal.bronze]") + + +@dataclass +class DC1: + a: Annotated[Color, str] + + +def test_enum_narrowing_with_annotated(subj: DC1) -> None: + match subj.a: + case Color.red: + pass + case Color.blue: + pass + case x: + reveal_type(x, expected_text="Literal[Color.green]") + + +class Foo(Enum): + bar = auto() + + def __str__(self) -> str: + match self: + case Foo.bar: + return "bar" + + case x: + reveal_type(x, expected_text="Never") + + +class Numbers: + ZERO = 0.0 + ONE = 1 + INFINITY = float("inf") + + +def test_enum_narrowing_with_inf(subj: float): + match subj: + case Numbers.ONE: + reveal_type(subj, expected_text="Literal[1]") + case Numbers.INFINITY: + reveal_type(subj, expected_text="float") + case Numbers.ZERO: + reveal_type(subj, expected_text="float") + case f: + reveal_type(subj, expected_text="float") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match5.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match5.pytest new file mode 100644 index 00000000000..dd8064e8eb2 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match5.pytest @@ -0,0 +1,120 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type checking for match statements (as described in PEP 634) that contain mapping patterns. + +from typing import Dict, Literal, TypedDict +from typing_extensions import NotRequired + + +def test_unknown(value_to_match): + match value_to_match: + case {"hello": a1, **a2}: + reveal_type(a1, expected_text="Unknown") + reveal_type(a2, expected_text="dict[Unknown, Unknown]") + reveal_type(value_to_match, expected_text="Unknown") + + +def test_dict(value_to_match: Dict[str | int, str | int]): + match value_to_match: + case {1: a1}: + reveal_type(a1, expected_text="str | int") + reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + + case {"hi": b1, "hi2": b2, **b3}: + reveal_type(b1, expected_text="str | int") + reveal_type(b2, expected_text="str | int") + reveal_type(b3, expected_text="dict[str | int, str | int]") + reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + + case {3j: c1}: + reveal_type(c1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +class Movie(TypedDict): + title: str + release_year: int + gross_earnings: float + + +class MovieInfo: + field_of_interest: Literal["release_year", "gross_earnings"] + + +def test_typed_dict(value_to_match: Movie): + match value_to_match: + case {"title": a1, "release_year": a2, **a3}: + reveal_type(a1, expected_text="str") + reveal_type(a2, expected_text="int") + reveal_type(a3, expected_text="dict[str, Unknown]") + reveal_type(value_to_match, expected_text="Movie") + + case {3: b1, "title": b2}: + reveal_type(b1, expected_text="Never") + reveal_type(b2, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case {"director": c1}: + reveal_type(c1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case {MovieInfo.field_of_interest: d1}: + reveal_type(d1, expected_text="int | float") + reveal_type(value_to_match, expected_text="Movie") + + +def test_union(value_to_match: Dict[str | int, str | int] | Movie | str): + match value_to_match: + case {3: a1}: + reveal_type(a1, expected_text="str | int") + reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + + case {"gross_earnings": b1}: + reveal_type(b1, expected_text="str | int | float") + reveal_type( + value_to_match, expected_text="Dict[str | int, str | int] | Movie" + ) + + +class IntValue(TypedDict): + type: Literal["Int"] + int_value: int + + +class StrValue(TypedDict): + type: Literal["Str"] + str_value: str + + +class ComplexValue(TypedDict): + type: NotRequired[Literal["Complex"]] + complex_value: complex + + +def test_negative_narrowing1(value: IntValue | StrValue | ComplexValue | int) -> None: + match value: + case {"type": "Int"}: + reveal_type(value, expected_text="IntValue") + case {"type": "Str" | "Complex"}: + reveal_type(value, expected_text="StrValue | ComplexValue") + case _: + reveal_type(value, expected_text="ComplexValue | int") + + +def test_negative_narrowing2(value: StrValue | ComplexValue) -> None: + if "type" not in value: + raise + + match value: + case {"type": "Str"}: + reveal_type(value, expected_text="StrValue") + case {"type": "Complex"}: + reveal_type(value, expected_text="ComplexValue") + case _: + reveal_type(value, expected_text="Never") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest new file mode 100644 index 00000000000..722a0ab0926 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest @@ -0,0 +1,83 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type checking for match statements (as described in PEP 634) that contain literal patterns. + + +def test_unknown(value_to_match): + match value_to_match: + case 3 as a1, -3 as a2: + reveal_type(a1, expected_text="Literal[3]") + reveal_type(a2, expected_text="Literal[-3]") + reveal_type(value_to_match, expected_text="Unknown") + + case 3j as b1, -3 + 5j as b2: + reveal_type(b1, expected_text="complex") + reveal_type(b2, expected_text="complex") + reveal_type(value_to_match, expected_text="Unknown") + + case "hi" as c1, None as c2: + reveal_type(c1, expected_text="Literal['hi']") + reveal_type(c2, expected_text="None") + reveal_type(value_to_match, expected_text="Unknown") + + case True as d1, False as d2: + reveal_type(d1, expected_text="Literal[True]") + reveal_type(d2, expected_text="Literal[False]") + reveal_type(value_to_match, expected_text="Unknown") + + +def test_tuple(value_to_match: tuple[int | float | str | complex, ...]): + match value_to_match: + case (3, -3) as a1: + reveal_type(a1, expected_text="tuple[Literal[3], Literal[-3]]") + reveal_type(value_to_match, expected_text="tuple[Literal[3], Literal[-3]]") + + case (3j, -3 + 5j) as b1: + reveal_type(b1, expected_text="tuple[complex, complex]") + reveal_type(value_to_match, expected_text="tuple[complex, complex]") + + +def test_union(value_to_match: int | float | str | complex | bool | None): + match value_to_match: + case (3 | -3j) as a1: + reveal_type(a1, expected_text="bool | complex | Literal[3]") + reveal_type(value_to_match, expected_text="bool | complex | Literal[3]") + + case (True | False | 3.4 | -3 + 3j | None) as b1: + reveal_type(b1, expected_text="float | complex | bool | None") + reveal_type(value_to_match, expected_text="float | complex | bool | None") + + case ("hi" | 3.4) as c1: + reveal_type(c1, expected_text="float | Literal['hi']") + reveal_type(value_to_match, expected_text="float | Literal['hi']") + + case ((True | "True") as d1) | ((False | "False") as d1): + reveal_type(d1, expected_text="bool | Literal['True', 'False']") + reveal_type(value_to_match, expected_text="bool | Literal['True', 'False']") + + +def test_none(value_to_match: int | None): + match value_to_match: + case None as a1: + reveal_type(a1, expected_text="None") + + case a2: + reveal_type(a2, expected_text="int") + + +class A(str): + ... + + +def test_subclass(a: A): + match a: + case "TEST" as m: + reveal_type(m, expected_text="A") + case x: + reveal_type(x, expected_text="A") diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest.expect_fails b/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest.expect_fails new file mode 100644 index 00000000000..e072850cf73 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match6.pytest.expect_fails @@ -0,0 +1 @@ +This sample tests type checking for match statements (as described in PEP 634) that contain literal patterns. diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match7.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match7.pytest new file mode 100644 index 00000000000..0e7c31ab6b8 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match7.pytest @@ -0,0 +1,72 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests type narrowing of subject expressions for match statements. + + +def func1(subj: int | dict[str, str] | tuple[int] | str, cond: bool): + match subj: + case (3 | "hi"): + reveal_type(subj, expected_text="Literal[3, 'hi']") + return + + case int(y) if cond: + reveal_type(subj, expected_text="int") + return + + case int(y): + reveal_type(subj, expected_text="int") + return + + case int(): + reveal_type(subj, expected_text="Never") + return + + case str(z): + reveal_type(subj, expected_text="str") + return + + reveal_type(subj, expected_text="dict[str, str] | tuple[int]") + return subj + + +# This should generate an error because there is the potential +# for fall-through if the subject expression is a str. +def func2(subj: int | str) -> str: + match subj: + case int(): + return "int" + + reveal_type(subj, expected_text='str') + + +# This should generate an error because there is the potential +# for fall-through if the guard expressions are false. +def func3(subj: int | str) -> str: + match subj: + case str() if len(subj) > 0: + return "str" + + case int() if subj < 0: + return "int" + + reveal_type(subj, expected_text='int | str') + + +def func4(subj: int | str) -> str: + match subj: + case int(): + return "int" + + case str(): + return "str" + + case _: + # This should be ignored because the pattern has already + # been exhaustively matched. + pass diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match8.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match8.pytest new file mode 100644 index 00000000000..ec80cba2b87 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match8.pytest @@ -0,0 +1,26 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests keyword-only class pattern matching for dataclasses. + +from dataclasses import dataclass, field + +@dataclass +class Point: + optional: int | None = field(default=None, kw_only=True) + x: int + y: int + + +obj = Point(1, 2) +match obj: + case Point(x, y, optional=opt): + reveal_type(x, expected_text="int") + reveal_type(y, expected_text="int") + reveal_type(opt, expected_text="int | None") + distance = (x ** 2 + y ** 2) ** 0.5 diff --git a/source/errpy/tests/test_resources/unit_tests/more_match/match9.pytest b/source/errpy/tests/test_resources/unit_tests/more_match/match9.pytest new file mode 100644 index 00000000000..d72540c1e52 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/more_match/match9.pytest @@ -0,0 +1,60 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# These match tests are inspired by those defined for pyright under: +# https://github.com/microsoft/pyright/tree/main/packages/pyright-internal/src/tests/samples + +## This sample tests class-based pattern matching when the class is marked final and can be discriminated based on the argument patterns. + +from typing import final + + +class A: + title: str + +class B: + name: str + +class C: + name: str + +def func1(r: A | B | C): + match r: + case object(title=_): + reveal_type(r, expected_text='A | B | C') + + case object(name=_): + reveal_type(r, expected_text='A | B | C') + + case _: + reveal_type(r, expected_text='A | B | C') + +@final +class AFinal: + title: str + +@final +class BFinal: + name: str + +@final +class CFinal: + name: str + +@final +class DFinal: + nothing: str + + +def func2(r: AFinal | BFinal | CFinal | DFinal): + match r: + case object(title=_): + reveal_type(r, expected_text='AFinal') + + case object(name=_): + reveal_type(r, expected_text='BFinal | CFinal') + + case _: + reveal_type(r, expected_text='DFinal') diff --git a/source/errpy/tests/test_resources/unit_tests/sandbox.pytest b/source/errpy/tests/test_resources/unit_tests/sandbox.pytest new file mode 100644 index 00000000000..ea9c4233473 --- /dev/null +++ b/source/errpy/tests/test_resources/unit_tests/sandbox.pytest @@ -0,0 +1,8 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree + +# Tests for playing around async with [problematic?] syntax, debugging etc + +# Expected to be committed empty diff --git a/source/errpy/tests/test_sandbox.py b/source/errpy/tests/test_sandbox.py new file mode 100644 index 00000000000..e24fea8dfef --- /dev/null +++ b/source/errpy/tests/test_sandbox.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import unittest +from difflib import unified_diff +from typing import Optional + +import tools.pyre.source.errpy.tests.utils.ast_utils as ast_utils + +from tools.pyre.source.errpy.tests.utils.test_common import read_code + + +class TestSandbox(unittest.TestCase): + """The sandbox area can be used in order to test ERRPY syntax and compare + the output AST with that produced by CPython.""" + + maxDiff: Optional[int] = ( + None # this is to display large diffs which we want for this tool + ) + + def check_ast_file(self, fname: str, pretty_print: bool, flat_ast: bool) -> None: + code = read_code(fname) + expected = ast_utils.get_cpython_ast(code, pretty_print=pretty_print).strip() + + if pretty_print: + (got_ast, errors), _ = ast_utils.run_errpy( + code, + ) + else: + (got_ast, errors), _ = ast_utils.run_errpy_ast_only( + code, + ) + + if errors: + got_ast += errors + + got_ast = got_ast.strip() + + if got_ast != expected: + if not flat_ast: + got_ast = ast_utils.format_ast_with_indentation(got_ast) + expected = ast_utils.format_ast_with_indentation(expected) + + print("\n\ntest fail\n") + print("Result:\n" + got_ast) + print("\nExpect:\n" + expected) + + print( + "\nDiff:\n" + + "".join( + unified_diff( + expected.splitlines(keepends=True), + got_ast.splitlines(keepends=True), + ) + ) + + "\n" + ) + + self.assertEqual(got_ast, expected) + + def test_sandbox_ast_and_pretty(self) -> None: + self.check_ast_file("sandbox.pytest", pretty_print=True, flat_ast=False) + + def test_sandbox_just_ast(self) -> None: + self.check_ast_file("sandbox.pytest", pretty_print=False, flat_ast=False) + + def test_sandbox_flat_ast(self) -> None: + self.check_ast_file("sandbox.pytest", pretty_print=False, flat_ast=True) + + def test_sandbox_flat_ast_and_pretty(self) -> None: + self.check_ast_file("sandbox.pytest", pretty_print=True, flat_ast=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/source/errpy/tests/test_string_helpers.rs b/source/errpy/tests/test_string_helpers.rs new file mode 100644 index 00000000000..37d89b68837 --- /dev/null +++ b/source/errpy/tests/test_string_helpers.rs @@ -0,0 +1,163 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +use string_helpers::categorize_string; +use string_helpers::InvalidStringCategoryError; +use string_helpers::StringCategory; + +fn test_categorize_string( + input_string: &str, + expected_categorization: StringCategory, +) -> Result<(), InvalidStringCategoryError> { + let got_categorization = categorize_string(input_string)?; + + assert_eq!(expected_categorization, got_categorization); + Ok(()) +} +fn test_invalid_categorize_string( + input_string: &str, + expected_categorization: InvalidStringCategoryError, +) -> Result<(), InvalidStringCategoryError> { + let got_categorization = categorize_string(input_string); + + assert_eq!(Err(expected_categorization), got_categorization); + Ok(()) +} + +#[test] +fn test_simple_1_char_prefix() -> Result<(), InvalidStringCategoryError> { + test_categorize_string( + "r'astring'", + StringCategory { + is_raw: true, + ..Default::default() + }, + )?; + test_categorize_string( + "u'astring'", + StringCategory { + is_unicode: true, + ..Default::default() + }, + )?; + test_categorize_string( + "f'astring'", + StringCategory { + is_format: true, + ..Default::default() + }, + )?; + test_categorize_string( + "b'astring'", + StringCategory { + is_byte: true, + ..Default::default() + }, + )?; + Ok(()) +} + +#[test] +fn test_2_char_prefix() -> Result<(), InvalidStringCategoryError> { + test_categorize_string( + "fr'astring'", + StringCategory { + is_raw: true, + is_format: true, + ..Default::default() + }, + )?; + test_categorize_string( + "rf'astring'", + StringCategory { + is_raw: true, + is_format: true, + ..Default::default() + }, + )?; + test_categorize_string( + "br'astring'", + StringCategory { + is_byte: true, + is_raw: true, + ..Default::default() + }, + )?; + test_categorize_string( + "rb'astring'", + StringCategory { + is_raw: true, + is_byte: true, + ..Default::default() + }, + )?; + Ok(()) +} + +#[test] +fn test_capitalized_prefix() -> Result<(), InvalidStringCategoryError> { + test_categorize_string( + "B'astring'", + StringCategory { + is_byte: true, + ..Default::default() + }, + )?; + Ok(()) +} + +#[test] +fn test_nothing_strage_with_double_quote() -> Result<(), InvalidStringCategoryError> { + test_categorize_string( + "B\"astring\"", + StringCategory { + is_byte: true, + ..Default::default() + }, + )?; + Ok(()) +} + +#[test] +fn test_no_prefix() -> Result<(), InvalidStringCategoryError> { + test_categorize_string( + "'astring'", + StringCategory { + ..Default::default() + }, + )?; + Ok(()) +} + +#[test] +fn test_obvious_inavlid_prefix() -> Result<(), InvalidStringCategoryError> { + test_invalid_categorize_string( + "s'astring'", + InvalidStringCategoryError { + invalid_prefix: "s".to_string(), + }, + )?; + test_invalid_categorize_string( + "sasdAsd'astring'", + InvalidStringCategoryError { + invalid_prefix: "sasdasd".to_string(), + }, + )?; + Ok(()) +} + +#[test] +fn test_inavlid_prefix_combination() -> Result<(), InvalidStringCategoryError> { + // 'raw' 'unicode' string doesnt exist in Python + test_invalid_categorize_string( + "ur'astring'", + InvalidStringCategoryError { + invalid_prefix: "ur".to_string(), + }, + )?; + Ok(()) +} diff --git a/source/errpy/tests/utils/ast_utils.py b/source/errpy/tests/utils/ast_utils.py new file mode 100644 index 00000000000..4acddd473ac --- /dev/null +++ b/source/errpy/tests/utils/ast_utils.py @@ -0,0 +1,154 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import ast + +from tools.pyre.source.errpy import ffi_python + + +def _do_format_ast_with_indentation(to_format: str, indent: int) -> str: + """Function will transform an AST provided as a single line string into a + multi-line formatted AST which is easier to read and diff over. + + e.g. for code: `a=8` + Single line AST: + "Module(body=[Assign(targets=[Name(id='a', ctx=Store(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=1)], value=Constant(value=8, kind=None, lineno=1, col_offset=2, end_lineno=1, end_col_offset=3), type_comment=None, lineno=1, col_offset=0, end_lineno=1, end_col_offset=3)], type_ignores=[])" + + After call of _do_format_ast_with_indentation: + + Module( + body=[ + Assign( + targets=[ + Name( + id='a', + ctx=Store(), + lineno=1, + col_offset=0, + end_lineno=1, + end_col_offset=1)], + value=Constant( + value=8, + lineno=1, + col_offset=4, + end_lineno=1, + end_col_offset=5), + lineno=1, + col_offset=0, + end_lineno=1, + end_col_offset=5), + type_comment=None, + lineno=1, + col_offset=0, + end_lineno=1, + end_col_offset=3) + ], + type_ignores=[] + ) + """ + formatted = [] + current_indent = 0 + next_line_newline = False + inside_string = None + next_char_escape = False + for char in to_format: + if inside_string: + if next_char_escape: + formatted.append(char) + next_char_escape = False + continue + if inside_string == char: + inside_string = None + else: + if "\\" == char: + next_char_escape = True + + formatted.append(char) + continue + elif char in ("'", '"'): + inside_string = char + formatted.append(char) + continue + + if char == " ": + continue + + if next_line_newline and char not in (")", "]"): + formatted.append("\n") + formatted.append(" " * current_indent) + next_line_newline = False + + formatted.append(char) + if char == "(" or char == "[": + current_indent += indent + next_line_newline = True + elif char == ")" or char == "]": + current_indent -= indent + next_line_newline = False + elif char == ",": + next_line_newline = True + + return "".join(formatted) + + +def format_ast_with_indentation(ast: str, indent: int = 1) -> str: + components = ast.split("\n") + # ast should be the first line, others may be pretty printed code output + to_format = components[0] + + formatted = _do_format_ast_with_indentation(to_format, indent) + + if len(components) > 1: + return formatted + "\n" + "\n".join(components[1:]) + else: + return formatted + + +def get_cpython_ast( + source: str, + raise_exception: bool = False, + pretty_print: bool = True, +) -> str: + try: + ast_inst = ast.parse(source) + ast_dump = ast.dump(ast_inst, include_attributes=True) + if pretty_print: + return ast_dump + "\n" + ast.unparse(ast_inst) + else: + return ast_dump + except BaseException as e: + if raise_exception: + raise e + return "Invalid CPython Syntax: " + str(e) + + +def run_errpy( + source: str, just_pretty_print_ast: bool = False +) -> tuple[tuple[str, str], bool]: + """returns: (result, did_errpy_panic)""" + try: + if just_pretty_print_ast: + return ( + ffi_python.py_parse_module_print_ast_pretty_print_only(source), + False, + ) + ast, errors = ffi_python.py_parse_module_print_ast_and_pretty_print(source) + return ((ast, errors), False) + except BaseException as e: + return (("ERRPY Failure: " + str(e), ""), True) + + +def run_errpy_ast_only(source: str) -> tuple[tuple[str, str], bool]: + """returns: (result, did_errpy_panic)""" + try: + ast, errors = ffi_python.py_parse_module_print_ast(source) + return ( + (ast, errors), + False, + ) + except BaseException as e: + return (("ERRPY Failure: " + str(e), ""), True) diff --git a/source/errpy/tests/utils/error_recovery_common.py b/source/errpy/tests/utils/error_recovery_common.py new file mode 100644 index 00000000000..ecbc677d525 --- /dev/null +++ b/source/errpy/tests/utils/error_recovery_common.py @@ -0,0 +1,425 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + + +import traceback +from dataclasses import astuple, dataclass +from difflib import unified_diff +from typing import Callable, Iterator, List, Optional + +import tools.pyre.source.errpy.tests.utils.ast_utils as ast_utils +from tools.pyre.source.errpy.tests.utils.test_common import ( + ASTTestCommon, + ERROR_RECOVERY_SPECIFIC_TESTS_DIR, + ERROR_RECOVERY_TESTS_DIR, + EXPECTED_RESULTS_POSTFIX, + EXPECTED_RESULTS_POSTFIX_NEW, + format_side_by_side, + make_results_dir, + read_code, + TEST_CONFIG_FNAME, + TEST_ERRPY_RESULTS_NEWFILE_CONFIG_KEY, + WRITE_EXPECTED_RESULTS_NEWFILE, + write_file, +) + + +@dataclass +class ErrorRecoveryTestIteratorStep: + """Class for holding each iteration step of the iterator to move + through the test case input.""" + + character_number: int + current_character: str + did_errpy_panic: bool + current_body: str + got_ast: str + errors: str + last_few_chars_input: list[str] + diff: str + + +def validate_code_and_agument_errors(pprint_ast: str, errors: str) -> str: + """We validate the input pprint_ast with CPython and report if there + is at least one syntax error. The errors input parameter is updated + in place with any errors""" + try: + ast_utils.get_cpython_ast(pprint_ast, raise_exception=True) + except BaseException as e: + message = "Output AST is not valid according to CPython: " + str(e) + if errors: + errors = errors + message + else: + errors = message + return errors + + +class ErrorRecoveryCommon(ASTTestCommon): + def compare_recovered_ast_many( + self, + many_fname: str, + test_dir: str = ERROR_RECOVERY_SPECIFIC_TESTS_DIR, + ) -> None: + """Iterate through series of inputs delimited by ## and check pprint ast + of each against expected recovered pprint ast""" + + # split input into individual tests + # create directory for holding test results if not one exists already + # generate expected results in approperiate files + # gather test failures together for overall testcase failure + expected_results_fname = many_fname + EXPECTED_RESULTS_POSTFIX + + got_results = "" + for code_title, test_body in self.splitmany_test_cases(many_fname, test_dir): + if code_title.startswith("#"): + continue # skip copywrite notice + + (pprint_ast, errors), _ = ast_utils.run_errpy(test_body, True) + errors = validate_code_and_agument_errors(pprint_ast, errors) + if errors: + pprint_ast += errors + got_results += f"##{code_title}\n{pprint_ast.strip()}\n\n" + + self.check_vs_expects_file( + test_dir, many_fname, expected_results_fname, got_results + ) + + def check_error_recovery_char_by_char(self, many_fname: str) -> None: + def generator( + test_body: str, skip_comments_and_whitespace: bool + ) -> Iterator[ErrorRecoveryTestIteratorStep]: + character_number = -1 + last_few_chars_input = [] + current_body = "" + in_comment = False + for current_character in test_body: + # we progress char by char + character_number += 1 + last_few_chars_input.append(current_character) + if len(last_few_chars_input) > 30: + last_few_chars_input.pop(0) + + if skip_comments_and_whitespace: + # probably don't want to skip for CST + current_body += current_character + if current_character == " ": + continue + + if in_comment: + if current_character == "\n": + in_comment = False + else: + continue + if current_character == "#": + in_comment = True + continue + + (got_ast, errors), did_errpy_panic = ast_utils.run_errpy( + current_body.strip(), True + ) + got_ast = got_ast.strip() + + errors = validate_code_and_agument_errors(got_ast, errors) + + # show diff of input code and error recovered outcome + + diff = "".join( + unified_diff( + got_ast.splitlines(keepends=True), + current_body.splitlines(keepends=True), + ) + ) + + yield ErrorRecoveryTestIteratorStep( + character_number, + current_character, + did_errpy_panic, + current_body, + got_ast, + errors, + last_few_chars_input, + diff, + ) + + self._check_error_recovery(many_fname, ".tailtest.", generator) + + def make_progressive_test_generator( + self, insert_chars: Optional[str] = None + ) -> Callable[[str, bool], Iterator[ErrorRecoveryTestIteratorStep]]: + def generator( + test_body: str, skip_comments_and_whitespace: bool + ) -> Iterator[ErrorRecoveryTestIteratorStep]: + last_few_chars_input = [] + in_comment = False + for character_number, current_character in enumerate(test_body): + # we progress char by char + last_few_chars_input.append(current_character) + if len(last_few_chars_input) > 30: + last_few_chars_input.pop(0) + + if skip_comments_and_whitespace: + # probably don't want to skip for CST + if current_character == " ": + continue + + if in_comment: + if current_character == "\n": + in_comment = False + else: + continue + if current_character == "#": + in_comment = True + continue + + if insert_chars is not None: + current_body = ( + test_body[:character_number] + + insert_chars + + test_body[character_number:] + ) + else: + # remove nth test + current_body = ( + test_body[:character_number] + test_body[character_number + 1 :] + ) + + region_of_interest = current_body[ + max(character_number - 10, 0) : character_number + 10 + ] + + (got_ast, errors), did_errpy_panic = ast_utils.run_errpy( + current_body.strip(), True + ) + got_ast = got_ast.strip() + + errors = validate_code_and_agument_errors(got_ast, errors) + + # show diff of input code and error recovered outcome + + diff = "".join( + unified_diff( + got_ast.splitlines(keepends=True), + current_body.splitlines(keepends=True), + ) + ) + + yield ErrorRecoveryTestIteratorStep( + character_number, + region_of_interest, + did_errpy_panic, + current_body, + got_ast, + errors, + last_few_chars_input, + diff, + ) + + return generator + + def check_error_recovery_insert_keyword(self, many_fname: str) -> None: + self._check_error_recovery( + many_fname, + ".insert_keyword.", + self.make_progressive_test_generator(" def "), + ) + + def check_error_recovery_insert_garbage(self, many_fname: str) -> None: + self._check_error_recovery( + many_fname, + ".insert_garbage.", + self.make_progressive_test_generator(" garbage "), + ) + + def check_error_recovery_insert_whitespace(self, many_fname: str) -> None: + self._check_error_recovery( + many_fname, + ".insert_whitespace.", + self.make_progressive_test_generator(" "), + ) + + def check_error_recovery_nth_removed(self, many_fname: str) -> None: + self._check_error_recovery( + many_fname, ".nth_removed.", self.make_progressive_test_generator() + ) + + def _check_error_recovery( + self, + many_fname: str, + test_name: str, + generator: Callable[[str, bool], Iterator[ErrorRecoveryTestIteratorStep]], + flavour: str = ERROR_RECOVERY_TESTS_DIR, + skip_comments_and_whitespace: bool = True, + ) -> None: + """Runs a series of tests to investigate error recovery in the following scenarios for the given input: + 1. Progressively building up the input to the parser char by char and seeing how much of an AST can be built for any particular input. - check_error_recovery_char_by_char + 2. Inserting a whitespace ` ` character char by char on the overall input. - check_error_recovery_insert_whitespace + 3. Trying the input with nth character from the input stream removed. - check_error_recovery_nth_removed + + the scenarious of implemented as generators operating over the given input + + We must ensure that: + 1. ERRPY doesn't panic, + 2. ERRPY doesn't produce an empty AST + 3. and we must also ensure that the AST output is as desired in order to satisfy the requirements of the client's + e.g. supporting dot completion, partial function argument narrowing, etc""" + # basic 'sanity check' to ensue final state of input will produce a valid AST before continuing + sanitized_test_cases = self.check_many_cases_in_file( + many_fname, flavour=flavour + ) + + # split input into individual tests + # create directory for holding test results if not one exists already + # generate expected results in approperiate files + # gather test failures together for overall testcase failure + expected_results_dir = make_results_dir( + many_fname + test_name + EXPECTED_RESULTS_POSTFIX, flavour + ) + + fail_cases = [] + + for code_title, test_body in sanitized_test_cases: + if code_title.startswith("#"): + continue # skip copywrite notice + + # we prevoiusly validated that the input code is syntatically valid. + # now we ensure that the input code for the test is formatted as par the + # implicit formatting scheme of our ast pretty printer - which outputs + # Python code from the AST. + # We do this by writing over the test_body with the output of ERRPPY + (test_body, _), _ = ast_utils.run_errpy(test_body, True) + + expected_results_fname = ( + expected_results_dir + + code_title.replace(" ", "-") + + EXPECTED_RESULTS_POSTFIX + ) + + expected_results = None + try: + expected_results = read_code(expected_results_fname, flavour=flavour) + except Exception: + pass + + results = "" # help diff review tool undestand this to be generated + did_errpy_panics = [] # we want to avoid these + empty_asts = [] # this is usually a bad thing + + for iteration in generator(test_body, skip_comments_and_whitespace): + ( + character_number, + current_character, + did_errpy_panic, + current_body, + got_ast, + got_ast_errors, + last_few_chars_input, + diff, + ) = astuple(iteration) + if diff.strip() == "": + diff = "No difference - AST matches, fully recovered!" + + results += "{}. Input. char of interest: '{}':\n\n{}\n{}\nERRPY Recovered AST diff:\n{}\n\n===============================================================================\n".format( + character_number, + "\\n" if current_character == "\n" else current_character, + format_side_by_side(current_body, got_ast), + got_ast_errors, + diff, + ) + if did_errpy_panic: + did_errpy_panics.append( + "{}.->{}<-".format( + character_number, "".join(last_few_chars_input) + ) + ) + + if got_ast == "": + empty_asts.append( + "{}.->{}<-".format( + character_number, "".join(last_few_chars_input) + ) + ) + + if empty_asts: + results = "Errpy makes empty AST (weird) with input prior to and including:\n{}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n{}".format( + "\n\n".join(empty_asts), + results, + ) + + if did_errpy_panics: + results = "Errpy panics (really bad) with input prior to and including:\n{}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n{}".format( + "\n\n".join(did_errpy_panics), + results, + ) + + results = ( + "@" + "generated\n\n" + results + ) # help diff review tool undestand this to be generated + + self._compare_results( + code_title, + expected_results, + results, + expected_results_fname, + flavour, + fail_cases, + ) + + if fail_cases: + self.fail("Following subtests failed: %s" % (fail_cases)) + + def _compare_results( + self, + code_title: str, + expected_results: Optional[str], + results: str, + expected_results_fname: str, + flavour: str, + fail_cases: List[str], + ) -> None: + if expected_results is None: + write_file(expected_results_fname, results, flavour=flavour) + print( + "No '%s' file defined, so created a new one! Check this document and ensure results match expectation. Future runs will treat contents as correct test result" + % (expected_results_fname) + ) + fail_cases.append(code_title) + else: + # great now we can check the results against what's expected + if expected_results != results: + if WRITE_EXPECTED_RESULTS_NEWFILE: + new_results_fname = ( + expected_results_fname + EXPECTED_RESULTS_POSTFIX_NEW + ) + print( + "test config variable: '{}' is set in '{}'. Writing results to new file: '{}' (for diffing etc)".format( + TEST_ERRPY_RESULTS_NEWFILE_CONFIG_KEY, + TEST_CONFIG_FNAME, + new_results_fname, + ) + ) + try: + write_file(new_results_fname, results, flavour=flavour) + print("new file write complete") + except Exception: + print( + "new file write failed due to: {}".format( + traceback.format_exc() + ) + ) + + print("test code: %s failed..." % code_title) + print("\n\ntest fail\n") + + diff = unified_diff( + results.splitlines(keepends=True), + expected_results.splitlines(keepends=True), + ) + print("".join(diff), end="") + + print("\n\n") + + fail_cases.append(code_title) diff --git a/source/errpy/tests/utils/test_common.py b/source/errpy/tests/utils/test_common.py new file mode 100644 index 00000000000..abd8147936e --- /dev/null +++ b/source/errpy/tests/utils/test_common.py @@ -0,0 +1,245 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# pyre-strict + +import json +import os +import traceback +import unittest +from os.path import exists +from typing import List, Optional, Tuple + +import tools.pyre.source.errpy.tests.utils.ast_utils as ast_utils + +EXPECTED_FAILS_POSTFIX: str = ".expect_fails" +RESOURCES_DIR: str = "tools/pyre/source/errpy/tests/test_resources/" +UNIT_TESTS_DIR: str = "unit_tests/" +PRETTY_PRINTER_TESTS_DIR: str = "pretty_printer_tests/" +ERROR_RECOVERY_TESTS_DIR: str = "error_recovery/" +ERROR_RECOVERY_SPECIFIC_TESTS_DIR: str = "error_recovery_specific_tests/" +INVALID_SYNTAX_TESTS_DIR: str = "invalid_syntax_tests/" +EXPECTED_RESULTS_POSTFIX: str = "_expected_results" +EXPECTED_RESULTS_POSTFIX_NEW: str = ".new" + +TEST_CONFIG_FNAME: str = RESOURCES_DIR + "test_config.json" + +TEST_ERRPY_RESULTS_NEWFILE_CONFIG_KEY: str = "TEST_ERRPY_RESULTS_NEWFILE" + +WRITE_EXPECTED_RESULTS_NEWFILE: bool = False + + +def load_test_config() -> None: + global WRITE_EXPECTED_RESULTS_NEWFILE + try: + with open(TEST_CONFIG_FNAME) as fobj: + config = fobj.read() + params = json.loads(config) + WRITE_EXPECTED_RESULTS_NEWFILE = params[ + TEST_ERRPY_RESULTS_NEWFILE_CONFIG_KEY + ] + + except Exception: + print("Cannot load_test_config due to: {}".format(traceback.format_exc())) + + +load_test_config() + + +def read_code( + fname: str, flavour: str = UNIT_TESTS_DIR, return_if_not_exist: Optional[str] = None +) -> str: + to_open = RESOURCES_DIR + flavour + fname + + if not exists(to_open) and return_if_not_exist is not None: + return return_if_not_exist + + with open(to_open) as fobj: + return fobj.read() + + +def write_file(fname: str, to_write: str, flavour: str = UNIT_TESTS_DIR) -> None: + with open(RESOURCES_DIR + flavour + fname, "w") as fobj: + fobj.write(to_write) + + +def make_results_dir(dirname: str, flavour: str = UNIT_TESTS_DIR) -> str: + full_dir_path = RESOURCES_DIR + flavour + dirname + "/" + os.makedirs(full_dir_path, exist_ok=True) + return dirname + "/" + + +def format_side_by_side(left_input: str, right_input: str) -> str: + """Print existing and replacement text side by side""" + ret = "" + + width = max(len(x) for x in left_input.split("\n")) + 5 + + leftx = "Input:\n" + "".join(["-"] * width) + "\n" + left_input + rightx = "ERRPY Recovered AST:\n" + "".join(["-"] * width) + "\n" + right_input + + left = [x[0 : min(len(x), width)].ljust(width) for x in leftx.split("\n")] + right = [x[0 : min(len(x), width)].ljust(width) for x in rightx.split("\n")] + + for i in range(len(left)): + ret += left[i] + ret += "| " + if i < len(right): + ret += right[i] + ret += "\n" + return ret + + +class ASTTestCommon(unittest.TestCase): + def check_vs_expects_file( + self, + test_dir: str, + failed_for: str, + expected_results_fname: str, + got_results: str, + ) -> None: + """ + This method supports 'expect' style tests where we compare the output of a test, 'got_results' against what was expected which is persisted + in a file 'expected_results_fname'. + + Three things can happen wihtin this flow: + - If there is no expected results already persisted in 'expected_results_fname' then this is created using the obtained 'got_results' results + and the calling unit test fails. + - If the two test outputs differ (obtained and expected) then a new 'expected_results_fname' file is committed to disk and the test fails. + - If the two test outputs match then this part of the test passes, horray!. + """ + + got_results = ( + "@" + "generated\n\n" + got_results + ) # help diff review tool undestand this to be generated + + expected_results = None + try: + expected_results = read_code(expected_results_fname, flavour=test_dir) + except Exception: + write_file(expected_results_fname, got_results, flavour=test_dir) + self.fail( + "No '%s' file defined, so created a new one! Check this document and ensure results match expectation. Future runs will treat contents as correct test result" + % (expected_results_fname) + ) + + # great now we can check the results against what's expected + if expected_results != got_results: + expected_results = ast_utils.format_ast_with_indentation(expected_results) + got_results = ast_utils.format_ast_with_indentation(got_results) + + if WRITE_EXPECTED_RESULTS_NEWFILE: + new_results_fname = ( + expected_results_fname + EXPECTED_RESULTS_POSTFIX_NEW + ) + print( + "test config variable: '{}' is set in '{}'. Writing results to new file: '{}' (for diffing etc)".format( + TEST_ERRPY_RESULTS_NEWFILE_CONFIG_KEY, + TEST_CONFIG_FNAME, + new_results_fname, + ) + ) + try: + write_file(new_results_fname, got_results, flavour=test_dir) + print(f"new file write of: {new_results_fname} complete") + except Exception: + print( + "new file write failed due to: {}".format( + traceback.format_exc() + ) + ) + + print("Test for: %s failed:\n" % (failed_for)) + + self.fail("Test for: %s failed" % (failed_for)) + + def splitmany_test_cases( + self, many_fname: str, flavour: str + ) -> List[Tuple[str, str]]: + all_tests_Split = read_code(many_fname, flavour).split("##") + sanitized_test_cases = [] + for caze in all_tests_Split: + caze = caze.strip() + lines = caze.split("\n") + code_title = lines[0].strip() + test_body = "\n".join(lines[1:]).strip() + sanitized_test_cases.append((code_title, test_body)) + return sanitized_test_cases + + def check_many_cases_in_file( + self, many_fname: str, flavour: str = UNIT_TESTS_DIR + ) -> list[tuple[str, str]]: + """Test many code blocks delimiatated by ##'s in many_fname + We expect all code blocks in test resource to be cases syntatically compliant with 3.10 syntax + May OPTIONALLY provide '.expect_fails' postfixed file for tests which are expected to fail - which specifies + a newline delimitated list of test cases expected to fail - normally expected to be empty but a + handy tool during development process""" + + failed_cases_file = many_fname + EXPECTED_FAILS_POSTFIX + failed_cases_file_contents = read_code( + failed_cases_file, flavour, return_if_not_exist="" + ) + + expect_fails = [] + if failed_cases_file_contents: + expect_fails = [ + x.strip() for x in failed_cases_file_contents.split("\n") if x + ] + + expect_fails_set = set(expect_fails) + fails = [] + unexpected_fails_postfix = [] + + # split into individual tests + sanitized_test_cases = self.splitmany_test_cases(many_fname, flavour) + + for code_title, test_body in sanitized_test_cases: + expected_ast = ast_utils.get_cpython_ast(test_body).strip() + (got_ast, errors), _ = ast_utils.run_errpy(test_body) + + if errors: + got_ast += errors + got_ast = got_ast.strip() + if expected_ast != got_ast: + got_ast = ast_utils.format_ast_with_indentation(got_ast) + expected_ast = ast_utils.format_ast_with_indentation(expected_ast) + + fails.append(code_title) + if code_title not in expect_fails_set: + unexpected_fails_postfix += [code_title] + print("test code: %s failed..." % code_title) + print("\n\ntest fail\n") + print("Result:\n" + got_ast) + print("\nExpect:\n" + expected_ast) + print("\n\n") + + if unexpected_fails_postfix: + failed_instances = "Unexpected failures:\n%s\n" % "\n".join( + sorted(unexpected_fails_postfix) + ) + print(failed_instances) + self.fail( + "\n%s out of %s tests failed, with %s being unexpected in: %s%s- %s" + % ( + len(fails), + len(sanitized_test_cases) - 1, + len(unexpected_fails_postfix), + many_fname, + ( + " (add these to `{}{}`) ".format( + many_fname, EXPECTED_FAILS_POSTFIX + ) + ), + unexpected_fails_postfix, + ) + ) + else: + self.assertEqual( + sorted(fails), + sorted(expect_fails), + "Failed cases don't match expectation defined in: " + failed_cases_file, + ) + + return sanitized_test_cases diff --git a/source/errpy/vendor/ocaml/interop/.cargo/config.toml b/source/errpy/vendor/ocaml/interop/.cargo/config.toml new file mode 100644 index 00000000000..5f17852ebab --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/.cargo/config.toml @@ -0,0 +1,13 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under both the MIT license found in the +# LICENSE-MIT file in the root directory of this source tree and the Apache +# License, Version 2.0 found in the LICENSE-APACHE file in the root directory +# of this source tree. + +[build] +rustflags = [ + "-Drust-2018-idioms", + "-Dwarnings", + "-Dunused-crate-dependencies" +] diff --git a/source/errpy/vendor/ocaml/interop/.circleci/config.yml b/source/errpy/vendor/ocaml/interop/.circleci/config.yml new file mode 100644 index 00000000000..2d0a103f7be --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/.circleci/config.yml @@ -0,0 +1,185 @@ +aliases: + - &is_main_branch + equal: [ main, << pipeline.git.branch >> ] + +commands: + install_rust_toolchain: + description: Install a rust toolchain + steps: + - run: + name: Download rust + command: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain nightly-2023-12-11 -y + + init_opam: + description: Initialize opam + steps: + - run: + name: Init opam + command: | + opam init --compiler=5.1.0 --disable-sandboxing -y + + setup_ocaml_tp: + description: Write symlinks shim/third-party/ocaml + steps: + - run: + name: Setup third-party/ocaml directory + command: | + # Assumes OPAM_SWITCH_PREFIX has been set already. + ./ocaml-setup.sh + + setup_linux_env: + description: Linux installation steps + steps: + - install_rust_toolchain + - run: + name: Aptitude install + command: | + sudo apt-get update + sudo apt-get install libssl-dev cmake clang lld opam zstd + - init_opam + - run: + name: Set environment variables + command: | + echo 'source "$HOME"/.cargo/env' >> "$BASH_ENV" + echo 'eval $(opam env)' >> "$BASH_ENV" + - setup_ocaml_tp + + setup_macos_env: + description: macOS installation steps + steps: + - install_rust_toolchain + - run: + name: Brew install + command: | + brew install cmake coreutils opam llvm zstd wget + - init_opam + - run: + name: Set environment variables + command: | + echo 'source "$HOME"/.cargo/env' >> "$BASH_ENV" + echo 'export PATH=/usr/local/opt/llvm/bin:/opt/homebrew/bin:"$PATH"' >> "$BASH_ENV" + echo 'eval $(opam env)' >> "$BASH_ENV" + - setup_ocaml_tp + + cargo: + description: Use cargo to build & test + steps: + - run: + name: Cargo build & test + command: | + cargo build + cargo test + + install_buck: + description: Download latest buck2 + parameters: + triple: + type: string + steps: + - run: + name: Install buck + command: | + wget https://github.com/facebook/buck2/releases/download/latest/buck2-<>.zst + zstd -d buck2-<>.zst -o buck2 + chmod +x buck2 + sudo ln -s $(pwd)/buck2 /usr/local/bin/buck2 + + install_reindeer: + description: Use cargo to install reindeer + steps: + - run: + name: Install reindeer + command: | + cargo install --git https://github.com/facebookincubator/reindeer.git reindeer --force + + reindeer: + description: Use reindeer to vendor & buckify rust 3rd-party deps + steps: + - run: + name: Run reindeer steps + command: | + reindeer --third-party-dir shim/third-party/rust vendor + reindeer --third-party-dir shim/third-party/rust buckify + + buck_tp: + description: Use buck to build third-party deps + steps: + - run: + name: Build 3rd party rust. + command: | + buck2 build shim//third-party/... -v 2 + + buck_ocamlrep: + description: Use buck to build ocamlrep + steps: + - run: + name: Build ocamlrep. + command: | + buck2 build root//... -v 2 + +version: 2.1 +orbs: + rust: circleci/rust@1.6.0 +jobs: + linux-cargo-build-and-test: + description: | + Linux cargo build & test + docker: + - image: cimg/rust:1.65.0 + resource_class: xlarge + steps: + - checkout + - setup_linux_env + - cargo + + macos-cargo-build-and-test: + description: | + macOS cargo build & test + macos: + xcode: "14.2.0" + resource_class: macos.m1.medium.gen1 + steps: + - checkout + - setup_macos_env + - cargo + + linux-buck-build: + description: | + Linux buck build + docker: + - image: cimg/rust:1.65.0 + resource_class: xlarge + steps: + - checkout + - setup_linux_env + - install_buck: + triple: "x86_64-unknown-linux-gnu" + - install_reindeer + - reindeer + - buck_tp + - buck_ocamlrep + + macos-buck-build: + description: | + macOS buck build + macos: + xcode: "14.2.0" + resource_class: macos.m1.medium.gen1 + steps: + - checkout + - setup_macos_env + - install_buck: + triple: "aarch64-apple-darwin" + - install_reindeer + - reindeer + - buck_tp + - buck_ocamlrep + +workflows: + build-test: + jobs: + - linux-cargo-build-and-test + - macos-cargo-build-and-test + - linux-buck-build + - macos-buck-build diff --git a/source/errpy/vendor/ocaml/interop/CHANGELOG.md b/source/errpy/vendor/ocaml/interop/CHANGELOG.md new file mode 100644 index 00000000000..fa4599a80db --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/CHANGELOG.md @@ -0,0 +1,2 @@ +### 0.alpha (December, 2022) +Creation of the repository diff --git a/source/errpy/vendor/ocaml/interop/CODE_OF_CONDUCT.md b/source/errpy/vendor/ocaml/interop/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..3232ed66556 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/CODE_OF_CONDUCT.md @@ -0,0 +1,80 @@ +# Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic +address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a +professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when +an individual is representing the project or its community in public spaces. +Examples of representing a project or community include using an official +project e-mail address, posting via an official social media account, or acting +as an appointed representative at an online or offline event. Representation of +a project may be further defined and clarified by project maintainers. + +This Code of Conduct also applies outside the project spaces when there is a +reasonable belief that an individual's behavior may have a negative impact on +the project or its community. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/source/errpy/vendor/ocaml/interop/CONTRIBUTING.md b/source/errpy/vendor/ocaml/interop/CONTRIBUTING.md new file mode 100644 index 00000000000..747c24bc275 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# Contributing to ocamlrep +We want to make contributing to this project as easy and transparent as +possible. + +## Our Development Process +The project is in its early steps and the process is not yet finalized. + +## Pull Requests +We actively welcome your pull requests. + +1. Fork the repo and create your branch from `main`. +2. Code shall pass our test-suite. +3. If you've changed APIs, update the documentation. +4. If you haven't already, complete the Contributor License Agreement ("CLA"). + +## Contributor License Agreement ("CLA") +In order to accept your pull request, we need you to submit a CLA. You only need +to do this once to work on any of Facebook's open source projects. + +Complete your CLA here: + +## Issues +We use GitHub issues to track public bugs. Please ensure your description is +clear and has sufficient instructions to be able to reproduce the issue. + +Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe +disclosure of security bugs. In those cases, please go through the process +outlined on that page and do not file a public issue. + +## Coding Style +* 2 spaces for indentation rather than tabs +* 80 character line length if possible + +## License +By contributing to ocamlrep, you agree that your contributions will be licensed +under the LICENSE file in the root directory of this source tree. diff --git a/source/errpy/vendor/ocaml/interop/Cargo.toml b/source/errpy/vendor/ocaml/interop/Cargo.toml new file mode 100644 index 00000000000..3d514fe8676 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/Cargo.toml @@ -0,0 +1,27 @@ +[workspace] + +exclude = [ + # This directory relates to the buck build, not the cargo build. + "shim/third-party/rust", +] + +members = [ + "macro_test_util", + "ocamlrep", + "ocamlrep_caml_builtins", + "ocamlrep_custom", + "ocamlrep_derive", + "ocamlrep_ocamlpool", + "rust_to_ocaml/attr_parser", + "rust_to_ocaml/rust_to_ocaml", + "rust_to_ocaml/rust_to_ocaml_attr", + "signed_source", + + "cargo_test_utils", + "ocamlrep_custom/test", + "ocamlrep_ocamlpool/test", + "ocamlrep/test/test_bindings", + "ocamlrep/test/test_from_ocamlrep", + "ocamlrep/test/test_from_ocamlrep_in", + "ocamlrep/test/test_add_root", +] diff --git a/source/errpy/vendor/ocaml/interop/LICENSE b/source/errpy/vendor/ocaml/interop/LICENSE new file mode 100644 index 00000000000..b93be90515c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Meta Platforms, Inc. and affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/source/errpy/vendor/ocaml/interop/README.md b/source/errpy/vendor/ocaml/interop/README.md new file mode 100644 index 00000000000..fef99e0e0ea --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/README.md @@ -0,0 +1,21 @@ +# ocamlrep: Interop OCaml and Rust code [![facebook](https://circleci.com/gh/facebook/ocamlrep.svg?style=svg)](https://app.circleci.com/pipelines/github/facebook/ocamlrep) + +The goal of this project is to make OCaml and Rust code interoperable. While in its early stage of development, this library is actively used by the [HHVM](https://github.com/facebook/hhvm) project, mostly in the Hack type checker, to enable OCaml code to rely on Rust. + +## Requirements +This project is stand-alone and requires or works with: + - OCaml 4.14.0; + - A rust nightly toolchain. + +## Building ocamlrep + +There are two build methods. One way is to use [Cargo](https://doc.rust-lang.org/cargo/guide/cargo-home.html) and the other is to use [Buck2](https://buck2.build/). + +- Cargo: Install OPAM then `cargo build`. +- Buck2: See this guide for [Building ocamlrep with Buck2](README-BUCK.md). + +## Contributing +See the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out. + +## License +ocamlrep has an MIT license. See the LICENSE file included in this distribution. diff --git a/source/errpy/vendor/ocaml/interop/cargo_test_utils/Cargo.toml b/source/errpy/vendor/ocaml/interop/cargo_test_utils/Cargo.toml new file mode 100644 index 00000000000..49b3624a977 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/cargo_test_utils/Cargo.toml @@ -0,0 +1,11 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/cargo_test_utils:cargo_test_utils + +[package] +name = "cargo_test_utils" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "cargo_test_utils.rs" diff --git a/source/errpy/vendor/ocaml/interop/cargo_test_utils/cargo_test_utils.rs b/source/errpy/vendor/ocaml/interop/cargo_test_utils/cargo_test_utils.rs new file mode 100644 index 00000000000..7e5400bcdcf --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/cargo_test_utils/cargo_test_utils.rs @@ -0,0 +1,48 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. +#![feature(exit_status_error)] + +use std::process::Command; +use std::process::ExitStatusError; + +pub fn cmd(prog: &str, args: &[&str], dir: Option<&std::path::Path>) -> Command { + let mut prog_cmd = Command::new(prog); + if let Some(path) = dir { + prog_cmd.current_dir(path); + } + prog_cmd.args(args); + prog_cmd +} + +pub fn workspace_dir(ds: &[&str]) -> std::path::PathBuf { + let mut cargo_cmd = cmd( + "cargo", + &["locate-project", "--workspace", "--message-format=plain"], + None, + ); + let output = cargo_cmd.output().unwrap().stdout; + let root_cargo_toml = std::path::Path::new(std::str::from_utf8(&output).unwrap().trim()); + let mut p = root_cargo_toml.parent().unwrap().to_path_buf(); + for d in ds { + p.push(d); + } + p +} + +pub fn run(mut cmd: Command) -> Result<(), ExitStatusError> { + cmd.spawn().unwrap().wait().ok().unwrap().exit_ok() +} + +pub fn fmt_exit_status_err(err: ExitStatusError) -> String { + format!("error status: {err}") +} + +pub fn build_flavor() -> &'static str { + if cfg!(debug_assertions) { + "debug" + } else { + "release" + } +} diff --git a/source/errpy/vendor/ocaml/interop/macro_test_util/Cargo.toml b/source/errpy/vendor/ocaml/interop/macro_test_util/Cargo.toml new file mode 100644 index 00000000000..f56754a3275 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/macro_test_util/Cargo.toml @@ -0,0 +1,16 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/macro_test_util:macro_test_util + +[package] +name = "macro_test_util" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "macro_test_util.rs" +test = false +doctest = false + +[dependencies] +proc-macro2 = { version = "1.0.70", features = ["span-locations"] } diff --git a/source/errpy/vendor/ocaml/interop/macro_test_util/macro_test_util.rs b/source/errpy/vendor/ocaml/interop/macro_test_util/macro_test_util.rs new file mode 100644 index 00000000000..7e212874b52 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/macro_test_util/macro_test_util.rs @@ -0,0 +1,74 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::fmt::Display; + +use proc_macro2::TokenStream; +use proc_macro2::TokenTree; + +fn mismatch(ta: Option, tb: Option, ax: &TokenStream, bx: &TokenStream) -> ! { + panic!( + "Mismatch!\nLeft: {}\nRight: {}\nwhen comparing\nLeft: {}\nRight: {}\n", + ta.map_or("None".into(), |t| t.to_string()), + tb.map_or("None".into(), |t| t.to_string()), + ax, + bx + ); +} + +pub fn assert_pat_eq(a: Result, b: TokenStream) { + let a = match a { + Err(err) => { + panic!("Unexpected error '{}'", err); + } + Ok(ok) => ok, + }; + + fn inner_cmp(a: TokenStream, b: TokenStream, ax: &TokenStream, bx: &TokenStream) { + let mut ia = a.into_iter(); + let mut ib = b.into_iter(); + + loop { + let t_a = ia.next(); + let t_b = ib.next(); + if t_a.is_none() && t_b.is_none() { + break; + } + if t_a.is_none() || t_b.is_none() { + mismatch(t_a, t_b, ax, bx); + } + let t_a = t_a.unwrap(); + let t_b = t_b.unwrap(); + + match (&t_a, &t_b) { + (TokenTree::Ident(a), TokenTree::Ident(b)) if a == b => {} + (TokenTree::Literal(a), TokenTree::Literal(b)) + if a.to_string() == b.to_string() => {} + (TokenTree::Punct(a), TokenTree::Punct(b)) if a.to_string() == b.to_string() => {} + (TokenTree::Group(ga), TokenTree::Group(gb)) + if ga.delimiter() == gb.delimiter() => + { + inner_cmp(ga.stream(), gb.stream(), ax, bx); + } + (TokenTree::Group(_), _) + | (TokenTree::Ident(_), _) + | (TokenTree::Punct(_), _) + | (TokenTree::Literal(_), _) => mismatch(Some(t_a), Some(t_b), ax, bx), + } + } + } + + inner_cmp(a.clone(), b.clone(), &a, &b); +} + +pub fn assert_error(a: Result, b: &str) { + match a { + Ok(a) => panic!("Expected error but got:\n{}", a), + Err(e) => { + let a = format!("{}", e); + assert_eq!(a, b, "Incorrect error") + } + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep/Cargo.toml new file mode 100644 index 00000000000..f8c53b22204 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/Cargo.toml @@ -0,0 +1,20 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep:ocamlrep + +[package] +name = "ocamlrep" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "lib.rs" +doctest = false + +[dependencies] +bstr = { version = "1.4.0", features = ["serde", "std", "unicode"] } +bumpalo = { version = "3.14.0", features = ["allocator_api", "collections"] } +indexmap = { version = "2.2.6", features = ["arbitrary", "rayon", "serde"] } +ocamlrep_derive = { path = "../ocamlrep_derive" } +rustc-hash = "1.1.0" +serde = { version = "1.0.185", features = ["derive", "rc"] } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/arena.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/arena.rs new file mode 100644 index 00000000000..e77fa06976e --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/arena.rs @@ -0,0 +1,277 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::cell::RefCell; +use std::cmp::max; +use std::sync::atomic::AtomicUsize; +use std::sync::atomic::Ordering; + +use crate::block::Header; +use crate::Allocator; +use crate::BlockBuilder; +use crate::MemoizationCache; +use crate::ToOcamlRep; +use crate::Value; + +struct Chunk { + data: Box<[Value<'static>]>, + index: usize, + + /// Pointer to the prev arena segment. + prev: Option>, +} + +impl Chunk { + fn with_capacity(capacity: usize) -> Self { + Self { + index: 0, + data: vec![Value::int(0); capacity].into_boxed_slice(), + prev: None, + } + } + + fn capacity(&self) -> usize { + self.data.len() + } + + fn can_fit(&self, requested_size: usize) -> bool { + self.index + requested_size <= self.data.len() + } + + #[inline] + pub fn alloc(&mut self, requested_size: usize) -> &mut [Value<'static>] { + let previous_index = self.index; + self.index += requested_size; + &mut self.data[previous_index..self.index] + } +} + +// The generation number is used solely to identify which arena a cached value +// belongs to in `RcOc`. +// +// We use usize::max_value() / 2 here to avoid colliding with ocamlpool and +// SlabAllocator generation numbers (ocamlpool starts at 0, and SlabAllocator +// starts at usize::max_value() / 4). This generation trick isn't sound with the +// use of multiple generation counters, but this mitigation should make it +// extremely difficult to mix up values allocated with ocamlpool, Arena, and +// SlabAllocator in practice (one would have to serialize the same value with +// multiple Allocators, and only after increasing the generation of one by an +// absurd amount). +// +// If we add more allocators, we might want to rethink this strategy. +static NEXT_GENERATION: AtomicUsize = AtomicUsize::new(usize::max_value() / 2); + +/// An [`Allocator`](trait.Allocator.html) which builds values in Rust-managed +/// memory. The memory is freed when the Arena is dropped. +pub struct Arena { + generation: usize, + current_chunk: RefCell, + cache: MemoizationCache, +} + +impl Default for Arena { + /// Create a new Arena with 4KB of capacity preallocated. + fn default() -> Self { + Arena::new() + } +} + +impl Arena { + /// Create a new Arena with 4KB of capacity preallocated. + pub fn new() -> Self { + Self::with_capacity(1024 * 4) + } + + /// Create a new Arena with `capacity_in_bytes` preallocated. + pub fn with_capacity(capacity_in_bytes: usize) -> Self { + let generation = NEXT_GENERATION.fetch_add(1, Ordering::SeqCst); + let capacity_in_words = max(2, capacity_in_bytes / std::mem::size_of::>()); + Self { + generation, + current_chunk: RefCell::new(Chunk::with_capacity(capacity_in_words)), + cache: MemoizationCache::new(), + } + } + + #[inline] + #[allow(clippy::mut_from_ref)] + fn alloc<'a>(&'a self, requested_size: usize) -> &'a mut [Value<'a>] { + if !self.current_chunk.borrow().can_fit(requested_size) { + let prev_chunk_capacity = self.current_chunk.borrow().capacity(); + let prev_chunk = self.current_chunk.replace(Chunk::with_capacity(max( + requested_size * 2, + prev_chunk_capacity, + ))); + self.current_chunk.borrow_mut().prev = Some(Box::new(prev_chunk)); + } + let mut chunk = self.current_chunk.borrow_mut(); + let slice = chunk.alloc(requested_size); + // Transmute the 'static lifetime to 'a, to allow Values which point to + // blocks allocated using this Arena to be stored in other such blocks. + // The lifetime ensures that callers cannot allow such Values to outlive + // the arena (and therefore outlive the block they point to). This + // transmute violates the 'static lifetime in Chunk, so it is critical + // for safety that we never expose a view of those Values to code + // outside this module (using the type `Value<'static>`). + // Also transmute the unnamed lifetime referring to the mutable borrow + // of `chunk` to 'a. This allows callers to hold multiple mutable blocks + // at once. This is safe because the blocks handed out by Chunk::alloc + // are non-overlapping, so there is no aliasing. + unsafe { std::mem::transmute::<&'_ mut [Value<'static>], &'a mut [Value<'a>]>(slice) } + } + + #[inline(always)] + pub fn add<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + value.to_ocamlrep(self) + } + + #[inline(always)] + pub fn add_root<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + Allocator::add_root(self, value) + } +} + +impl Allocator for Arena { + #[inline(always)] + fn generation(&self) -> usize { + self.generation + } + + fn block_with_size_and_tag(&self, size: usize, tag: u8) -> BlockBuilder<'_> { + let block = self.alloc(size + 1); + let header = Header::new(size, tag); + // Safety: We need to make sure that the Header written to index 0 of + // this slice is never observed as a Value. We guarantee that by not + // exposing raw Chunk memory--only allocated Values. + block[0] = unsafe { Value::from_bits(header.to_bits()) }; + let slice = &mut block[1..]; + BlockBuilder::new(slice) + } + + #[inline(always)] + fn set_field<'a>(&self, block: &mut BlockBuilder<'a>, index: usize, value: Value<'a>) { + unsafe { *self.block_ptr_mut(block).add(index) = value } + } + + unsafe fn block_ptr_mut<'a>(&self, block: &mut BlockBuilder<'a>) -> *mut Value<'a> { + block.address() as *mut _ + } + + fn memoized<'a>( + &'a self, + ptr: usize, + size: usize, + f: impl FnOnce(&'a Self) -> Value<'a>, + ) -> Value<'a> { + let bits = self.cache.memoized(ptr, size, || f(self).to_bits()); + // SAFETY: The only memoized values in the cache are those computed in + // the closure on the previous line. Since f returns Value<'a>, any + // cached bits must represent a valid Value<'a>, + unsafe { Value::from_bits(bits) } + } + + fn add_root<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + self.cache.with_cache(|| value.to_ocamlrep(self)) + } +} + +#[cfg(test)] +mod tests { + use std::io::Write; + use std::time::Instant; + + use super::*; + + #[test] + fn test_alloc_byte_string_with_len() { + let arena = Arena::with_capacity(1000); + + let msg: &[u8] = b"Hello world!"; + let mut w = arena.byte_string_with_len(msg.len()); + let bytes_written = w.write(msg).ok().unwrap(); + assert!(bytes_written == msg.len()); + + let value: Value<'_> = w.build(); + assert_eq!(value.as_byte_string().unwrap(), msg); + } + + #[test] + fn test_alloc_block_of_three_fields() { + let arena = Arena::with_capacity(1000); + + let mut block = arena.block_with_size(3); + arena.set_field(&mut block, 0, Value::int(1)); + arena.set_field(&mut block, 1, Value::int(2)); + arena.set_field(&mut block, 2, Value::int(3)); + let block = block.build().as_block().unwrap(); + + assert_eq!(block.size(), 3); + assert_eq!(block[0].as_int().unwrap(), 1); + assert_eq!(block[1].as_int().unwrap(), 2); + assert_eq!(block[2].as_int().unwrap(), 3); + } + + #[test] + fn test_large_allocs() { + let arena = Arena::with_capacity(1000); + + let alloc_block = |size| arena.block_with_size(size).build().as_block().unwrap(); + + let max = alloc_block(1000); + assert_eq!(max.size(), 1000); + + let two_thousand = alloc_block(2000); + assert_eq!(two_thousand.size(), 2000); + + let four_thousand = alloc_block(4000); + assert_eq!(four_thousand.size(), 4000); + } + + #[test] + fn perf_test() { + let arena = Arena::with_capacity(10_000); + + let alloc_block = |size| arena.block_with_size(size).build().as_block().unwrap(); + + println!("Benchmarks for allocating [1] 200,000 times"); + let now = Instant::now(); + for _ in 0..200_000 { + vec![0; 1].into_boxed_slice(); + } + println!("Alloc: {:?}", now.elapsed()); + + let now = Instant::now(); + for _ in 0..200_000 { + alloc_block(1); + } + println!("Arena: {:?}", now.elapsed()); + + println!("Benchmarks for allocating [5] 200,000 times"); + let now = Instant::now(); + for _ in 0..200_000 { + vec![0; 5].into_boxed_slice(); + } + println!("Alloc: {:?}", now.elapsed()); + + let now = Instant::now(); + for _ in 0..200_000 { + alloc_block(5); + } + println!("Arena: {:?}", now.elapsed()); + + println!("Benchmarks for allocating [10] 200,000 times"); + let now = Instant::now(); + for _ in 0..200_000 { + vec![0; 10].into_boxed_slice(); + } + println!("Alloc: {:?}", now.elapsed()); + + let now = Instant::now(); + for _ in 0..200_000 { + alloc_block(10); + } + println!("Arena: {:?}", now.elapsed()); + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/block.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/block.rs new file mode 100644 index 00000000000..97f1550fda5 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/block.rs @@ -0,0 +1,270 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::collections::HashMap; +use std::fmt; +use std::fmt::Debug; +use std::ops::Index; + +use crate::Allocator; +use crate::Value; + +/// Blocks with tags greater than or equal to NO_SCAN_TAG contain binary data, +/// and are not scanned by the garbage collector. Likewise, we must avoid +/// interpreting the fields of blocks with such tags as Values. +pub const NO_SCAN_TAG: u8 = 251; +pub const FORWARD_TAG: u8 = 250; +pub const INFIX_TAG: u8 = 249; +pub const OBJECT_TAG: u8 = 248; +pub const CLOSURE_TAG: u8 = 247; +pub const LAZY_TAG: u8 = 246; +pub const CONT_TAG: u8 = 245; +pub const FORCING_TAG: u8 = 244; +pub const ABSTRACT_TAG: u8 = 251; +pub const STRING_TAG: u8 = 252; +pub const DOUBLE_TAG: u8 = 253; +pub const DOUBLE_ARRAY_TAG: u8 = 254; +pub const CUSTOM_TAG: u8 = 255; + +/// A recently-allocated, not-yet-finalized Block. +#[repr(transparent)] +pub struct BlockBuilder<'a> { + fields: &'a mut [Value<'a>], +} + +impl<'a> BlockBuilder<'a> { + /// `address` may be a pointer or an offset (the `Allocator` which invokes + /// `BlockBuilder::new` determines the meaning of `BlockBuilder` addresses). + /// `size` must be greater than 0 and denotes the number of fields in the + /// block. + /// + /// # Panics + /// + /// Panics if `fields.is_empty()`. + #[inline(always)] + pub fn new(fields: &'a mut [Value<'a>]) -> Self { + if fields.is_empty() { + panic!() + } + Self { fields } + } + + /// The address of the field slice passed to `BlockBuilder::new`. + #[inline(always)] + pub fn address(&self) -> usize { + self.fields.as_ptr() as _ + } + + /// The number of fields in this block. + #[inline(always)] + pub fn size(&self) -> usize { + self.fields.len() + } + + // TODO(jakebailey): This needs to be marked unsafe. The caller must + // initialize all of the fields. + #[inline(always)] + pub fn build(self) -> Value<'a> { + unsafe { Value::from_ptr(self.fields.as_ptr()) } + } +} + +/// The contents of an OCaml block, consisting of a header and one or more +/// fields of type [`Value`](struct.Value.html). +#[repr(transparent)] +#[derive(Clone, Copy)] +pub struct Block<'arena>(pub(crate) &'arena [Value<'arena>]); + +impl<'a> Block<'a> { + #[inline(always)] + pub fn header(self) -> Header { + Header(self.0[0].0) + } + + #[inline(always)] + pub fn size(self) -> usize { + self.header().size() + } + + #[inline(always)] + pub fn tag(self) -> u8 { + self.header().tag() + } + + #[inline(always)] + pub fn as_value(self) -> Value<'a> { + unsafe { Value::from_ptr(&self.0[1]) } + } + + #[inline(always)] + pub fn as_values(self) -> Option<&'a [Value<'a>]> { + if self.tag() >= NO_SCAN_TAG { + return None; + } + Some(&self.0[1..]) + } + + #[inline(always)] + pub fn as_int_slice(self) -> &'a [usize] { + let slice = &self.0[1..]; + unsafe { std::slice::from_raw_parts(slice.as_ptr().cast(), slice.len()) } + } + + /// Helper for `Value::clone_with_allocator`. + pub(crate) fn clone_with<'b, A: Allocator>( + self, + alloc: &'b A, + seen: &mut HashMap>, + ) -> Value<'b> { + let mut block = alloc.block_with_size_and_tag(self.size(), self.tag()); + match self.as_values() { + Some(fields) => { + for (i, field) in fields.iter().enumerate() { + let field = field.clone_with(alloc, seen); + alloc.set_field(&mut block, i, field) + } + } + None => { + // Safety: Both pointers must be valid, aligned, and + // non-overlapping. Both pointers are the heads of blocks which + // came from some Allocator. Allocators are required to allocate + // blocks with usize-aligned pointers, and those blocks are + // required to be valid for reads and writes for the number of + // usize-sized fields reported in the size in their header. + // Allocators are also required to allocate non-overlapping + // blocks. + unsafe { + std::ptr::copy_nonoverlapping( + self.0.as_ptr().offset(1) as *const usize, + alloc.block_ptr_mut(&mut block) as *mut usize, + self.size(), + ) + } + } + } + block.build() + } +} + +impl<'a> Index for Block<'a> { + type Output = Value<'a>; + + #[inline(always)] + fn index(&self, index: usize) -> &Self::Output { + &self.0[index + 1] + } +} + +impl Debug for Block<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + if self.tag() == STRING_TAG { + write!(f, "{:?}", self.as_value().as_str().unwrap()) + } else if self.tag() == DOUBLE_TAG { + write!(f, "{:?}", self.as_value().as_float().unwrap()) + } else { + write!(f, "{}{:?}", self.tag(), self.as_values().unwrap()) + } + } +} + +// values from ocaml 'gc.h' +#[repr(usize)] +#[derive(Clone, Copy)] +pub enum Color { + White = crate::CAML_WHITE, + Gray = crate::CAML_GRAY, + Blue = crate::CAML_BLUE, + Black = crate::CAML_BLACK, +} + +#[repr(transparent)] +#[derive(Clone, Copy)] +pub struct Header(usize); + +impl Header { + #[inline(always)] + pub const fn new(size: usize, tag: u8) -> Self { + Self::with_color(size, tag, Color::White) + } + + #[inline(always)] + pub const fn with_color(size: usize, tag: u8, color: Color) -> Self { + let bits = size << 10 | (color as usize) | (tag as usize); + Header(bits) + } + + #[inline(always)] + pub const fn size(self) -> usize { + self.0 >> 10 + } + + #[inline(always)] + pub const fn tag(self) -> u8 { + self.0 as u8 + } + + #[inline(always)] + pub const fn color(self) -> Color { + match self.0 & Color::Black as usize { + crate::CAML_WHITE => Color::White, + crate::CAML_GRAY => Color::Gray, + crate::CAML_BLUE => Color::Blue, + crate::CAML_BLACK => Color::Black, + _ => unreachable!(), + } + } + + #[inline(always)] + pub const fn from_bits(bits: usize) -> Self { + Header(bits) + } + + #[inline(always)] + pub const fn to_bits(self) -> usize { + self.0 + } +} + +impl Debug for Header { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Header") + .field("size", &self.size()) + .field("tag", &self.tag()) + .finish() + } +} + +pub struct BlockBytes<'a>(&'a mut [u8], *const u8); + +impl<'a> BlockBytes<'a> { + // SAFETY: `bytes` must be the data segment of a valid block with + // `STRING_TAG`, excluding the trailing padding bytes; see + // `Allocator::byte_string_with_len` + pub(crate) unsafe fn new(bytes: &'a mut [u8]) -> Self { + BlockBytes(bytes, bytes.as_ptr()) + } +} + +impl std::io::Write for BlockBytes<'_> { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + // If the number of bytes to be written exceeds the buffer size, error, + // don't do short writes! + self.0.write_all(buf)?; + Ok(buf.len()) + } + fn flush(&mut self) -> std::io::Result<()> { + self.0.flush() + } +} + +impl<'a> BlockBytes<'a> { + pub fn build(self) -> Value<'a> { + let BlockBytes(slice, block) = self; + if !slice.is_empty() { + panic!("ocamlrep: BlockBytes invariant violation: not all bytes written to."); + } + unsafe { Value::from_bits(block as usize) } + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/cache.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/cache.rs new file mode 100644 index 00000000000..07d9d20fb9c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/cache.rs @@ -0,0 +1,86 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +//! Provides `MemoizationCache`, a simple cache designed to aid implementation +//! of the `Allocator` trait. + +use std::cell::RefCell; + +type HashMap = rustc_hash::FxHashMap; + +/// A simple scoped cache for memoizing conversions from one pointer-sized value +/// to another. Useful for memoizing conversions between OCaml values and Rust +/// references. +pub struct MemoizationCache { + /// Maps from input (address,size_in_bytes) -> output + cache: RefCell>>, +} + +impl Default for MemoizationCache { + #[inline(always)] + fn default() -> Self { + MemoizationCache::new() + } +} + +impl MemoizationCache { + #[inline(always)] + pub fn new() -> Self { + Self { + cache: RefCell::new(None), + } + } + + #[inline(always)] + pub fn with_cache(&self, f: impl FnOnce() -> T) -> T { + // The `replace` below should not panic because the only borrows of + // `self.cache` are in this function and in `memoized`. In both + // functions, we do not hold a `Ref` or `RefMut` while calling into code + // which might attempt to re-enter `memoized` or `with_cache`. + let prev_value = self.cache.replace(Some(Default::default())); + if prev_value.is_some() { + panic!( + "Attempted to re-enter MemoizationCache::with_cache \ + (probably via ocamlrep::Allocator::add_root, which is not re-entrant)" + ); + } + let result = f(); + // As above, this `replace` should not panic. + self.cache.replace(None); + result + } + + #[inline(always)] + pub fn memoized(&self, input: usize, size_in_bytes: usize, f: impl FnOnce() -> usize) -> usize { + if size_in_bytes == 0 { + return f(); + } + let memoized_output = match (self.cache.borrow().as_ref()) + .map(|cache| cache.get(&(input, size_in_bytes)).copied()) + { + None => return f(), + Some(output) => output, + }; + match memoized_output { + Some(output) => output, + None => { + let output = f(); + // The `borrow_mut` below should not panic because the only + // borrows of `self.cache` are in this function and in + // `with_cache`. In this function, we do not hold a `Ref` or + // `RefMut` while calling into `f` (or any other function which + // might attempt to re-enter this function or `with_cache`). + let mut cache = self.cache.borrow_mut(); + // The `unwrap` below should not panic. We know `self.cache` was + // not None upon entering this function because we looked up + // `memoized_output`. The only function which can replace the + // cache with None is `with_cache`, which would have panicked if + // `f` attempted to re-enter it. + (cache.as_mut().unwrap()).insert((input, size_in_bytes), output); + output + } + } + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/error.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/error.rs new file mode 100644 index 00000000000..afe2c9f98f1 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/error.rs @@ -0,0 +1,111 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::error::Error; +use std::fmt; +use std::num::TryFromIntError; +use std::str::Utf8Error; + +/// Returned by +/// [`OcamlRep::from_ocamlrep`](trait.OcamlRep.html#tymethod.from_ocamlrep) when +/// the given [`Value`](struct.Value.html) cannot be converted to a Rust value +/// of the expected type. +#[derive(Debug, PartialEq)] +pub enum FromError { + BadUtf8(Utf8Error), + BlockTagOutOfRange { max: u8, actual: u8 }, + ErrorInField(usize, Box), + ExpectedBlock(isize), + ExpectedBlockTag { expected: u8, actual: u8 }, + ExpectedBool(isize), + ExpectedChar(isize), + ExpectedInt(usize), + ExpectedUnit(isize), + ExpectedZeroTag(u8), + IntOutOfRange(TryFromIntError), + NullaryVariantTagOutOfRange { max: usize, actual: isize }, + WrongBlockSize { expected: usize, actual: usize }, + UnexpectedCustomOps { expected: usize, actual: usize }, +} + +impl std::convert::From for FromError { + fn from(error: TryFromIntError) -> Self { + FromError::IntOutOfRange(error) + } +} + +impl std::convert::From for FromError { + fn from(error: Utf8Error) -> Self { + FromError::BadUtf8(error) + } +} + +impl fmt::Display for FromError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use FromError::*; + match self { + BadUtf8(_) => write!(f, "Invalid UTF-8"), + BlockTagOutOfRange { max, actual } => { + write!(f, "Expected tag value <= {}, but got {}", max, actual) + } + ErrorInField(idx, _) => write!(f, "Failed to convert field {}", idx), + ExpectedBlock(x) => write!(f, "Expected block, but got integer value {}", x), + ExpectedBlockTag { expected, actual } => write!( + f, + "Expected block with tag {}, but got {}", + expected, actual + ), + ExpectedBool(x) => write!(f, "Expected bool, but got {}", x), + ExpectedChar(x) => write!(f, "Expected char, but got {}", x), + ExpectedInt(x) => { + write!(f, "Expected integer value, but got block pointer {:p}", x) + } + ExpectedUnit(x) => write!(f, "Expected (), but got {}", x), + ExpectedZeroTag(x) => write!( + f, + "Expected block with tag 0 (tuple, record, cons cell, etc), but got tag value {}", + x + ), + IntOutOfRange(_) => write!(f, "Integer value out of range"), + NullaryVariantTagOutOfRange { max, actual } => write!( + f, + "Expected nullary variant tag, where 0 <= tag <= {}, but got {}", + max, actual + ), + WrongBlockSize { expected, actual } => write!( + f, + "Expected block of size {}, but got size {}", + expected, actual + ), + UnexpectedCustomOps { expected, actual } => write!( + f, + "Expected custom operations struct address 0x{:x}, but got address 0x{:x}", + expected, actual + ), + } + } +} + +impl Error for FromError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + use FromError::*; + match self { + BadUtf8(err) => Some(err), + ErrorInField(_, err) => Some(err), + IntOutOfRange(err) => Some(err), + BlockTagOutOfRange { .. } + | ExpectedBlock(..) + | ExpectedBlockTag { .. } + | ExpectedBool(..) + | ExpectedChar(..) + | ExpectedInt(..) + | ExpectedUnit(..) + | ExpectedZeroTag(..) + | NullaryVariantTagOutOfRange { .. } + | WrongBlockSize { .. } + | UnexpectedCustomOps { .. } => None, + } + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/from.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/from.rs new file mode 100644 index 00000000000..51afda15fe2 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/from.rs @@ -0,0 +1,92 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +//! Helpers for implementing `FromOcamlRep::from_ocamlrep` or +//! `FromOcamlRepIn::from_ocamlrep_in`. + +use bumpalo::Bump; + +use crate::Block; +use crate::FromError; +use crate::FromOcamlRep; +use crate::FromOcamlRepIn; +use crate::Value; + +pub fn expect_int(value: Value<'_>) -> Result { + match value.as_int() { + Some(value) => Ok(value), + None => Err(FromError::ExpectedInt(value.to_bits())), + } +} + +pub fn expect_nullary_variant(value: Value<'_>, max: usize) -> Result { + let value = expect_int(value)?; + let max_as_isize: isize = max.try_into().unwrap(); + if 0 <= value && value <= max_as_isize { + Ok(value) + } else { + Err(FromError::NullaryVariantTagOutOfRange { max, actual: value }) + } +} + +pub fn expect_block(value: Value<'_>) -> Result, FromError> { + match value.as_block() { + Some(block) => Ok(block), + None => Err(FromError::ExpectedBlock(value.as_int().unwrap())), + } +} + +pub fn expect_block_size(block: Block<'_>, size: usize) -> Result<(), FromError> { + if block.size() != size { + return Err(FromError::WrongBlockSize { + expected: size, + actual: block.size(), + }); + } + Ok(()) +} + +pub fn expect_block_tag(block: Block<'_>, tag: u8) -> Result<(), FromError> { + if block.tag() != tag { + return Err(FromError::ExpectedBlockTag { + expected: tag, + actual: block.tag(), + }); + } + Ok(()) +} + +pub fn expect_block_with_size_and_tag( + value: Value<'_>, + size: usize, + tag: u8, +) -> Result, FromError> { + let block = expect_block(value)?; + expect_block_size(block, size)?; + expect_block_tag(block, tag)?; + Ok(block) +} + +pub fn expect_tuple(value: Value<'_>, size: usize) -> Result, FromError> { + let block = expect_block(value)?; + expect_block_size(block, size)?; + if block.tag() != 0 { + return Err(FromError::ExpectedZeroTag(block.tag())); + } + Ok(block) +} + +pub fn field(block: Block<'_>, field: usize) -> Result { + T::from_ocamlrep(block[field]).map_err(|e| FromError::ErrorInField(field, Box::new(e))) +} + +pub fn field_in<'a, T: FromOcamlRepIn<'a>>( + block: Block<'_>, + field: usize, + alloc: &'a Bump, +) -> Result { + T::from_ocamlrep_in(block[field], alloc) + .map_err(|e| FromError::ErrorInField(field, Box::new(e))) +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/impls.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/impls.rs new file mode 100644 index 00000000000..f101fb4baaa --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/impls.rs @@ -0,0 +1,1389 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::borrow::Borrow; +use std::borrow::Cow; +use std::cell::Cell; +use std::cell::RefCell; +use std::collections::BTreeMap; +use std::collections::BTreeSet; +use std::ffi::OsStr; +use std::ffi::OsString; +use std::hash::BuildHasher; +use std::hash::Hash; +use std::mem::size_of; +use std::path::Path; +use std::path::PathBuf; +use std::rc::Rc; +use std::sync::Arc; + +use bstr::BStr; +use bstr::BString; +use bumpalo::Bump; +use indexmap::IndexMap; +use indexmap::IndexSet; + +use crate::block; +use crate::from; +use crate::Allocator; +use crate::FromError; +use crate::FromOcamlRep; +use crate::FromOcamlRepIn; +use crate::ToOcamlRep; +use crate::Value; + +macro_rules! trivial_from_in_impl { + ($ty:ty) => { + impl<'a> FromOcamlRepIn<'a> for $ty { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a Bump) -> Result { + Self::from_ocamlrep(value) + } + } + }; +} + +impl ToOcamlRep for () { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int(0) + } +} + +impl FromOcamlRep for () { + fn from_ocamlrep(value: Value<'_>) -> Result { + match from::expect_int(value)? { + 0 => Ok(()), + x => Err(FromError::ExpectedUnit(x)), + } + } +} + +trivial_from_in_impl!(()); + +impl ToOcamlRep for isize { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int(*self) + } +} + +impl FromOcamlRep for isize { + fn from_ocamlrep(value: Value<'_>) -> Result { + from::expect_int(value) + } +} + +trivial_from_in_impl!(isize); + +impl ToOcamlRep for usize { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).try_into().unwrap()) + } +} + +impl FromOcamlRep for usize { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(from::expect_int(value)?.try_into()?) + } +} + +trivial_from_in_impl!(usize); + +impl ToOcamlRep for i64 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).try_into().unwrap()) + } +} + +impl FromOcamlRep for i64 { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(from::expect_int(value)?.try_into()?) + } +} + +trivial_from_in_impl!(i64); + +impl ToOcamlRep for u64 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).try_into().unwrap()) + } +} + +impl FromOcamlRep for u64 { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(from::expect_int(value)?.try_into()?) + } +} + +trivial_from_in_impl!(u64); + +impl ToOcamlRep for i32 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).try_into().unwrap()) + } +} + +impl FromOcamlRep for i32 { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(from::expect_int(value)?.try_into()?) + } +} + +trivial_from_in_impl!(i32); + +impl ToOcamlRep for u32 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).try_into().unwrap()) + } +} + +impl FromOcamlRep for u32 { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(from::expect_int(value)?.try_into()?) + } +} + +trivial_from_in_impl!(u32); + +impl ToOcamlRep for bool { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + Value::int((*self).into()) + } +} + +impl FromOcamlRep for bool { + fn from_ocamlrep(value: Value<'_>) -> Result { + match from::expect_int(value)? { + 0 => Ok(false), + 1 => Ok(true), + x => Err(FromError::ExpectedBool(x)), + } + } +} + +trivial_from_in_impl!(bool); + +impl ToOcamlRep for char { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + assert!(*self as u32 <= 255, "char out of range: {}", self); + Value::int(*self as isize) + } +} + +impl FromOcamlRep for char { + fn from_ocamlrep(value: Value<'_>) -> Result { + let c = from::expect_int(value)?; + if (0..=255).contains(&c) { + Ok(c as u8 as char) + } else { + Err(FromError::ExpectedChar(c)) + } + } +} + +trivial_from_in_impl!(char); + +impl ToOcamlRep for f64 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size_and_tag(1, block::DOUBLE_TAG); + alloc.set_field(&mut block, 0, unsafe { + Value::from_bits(self.to_bits() as usize) + }); + block.build() + } +} + +impl FromOcamlRep for f64 { + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_block_with_size_and_tag(value, 1, block::DOUBLE_TAG)?; + Ok(f64::from_bits(block[0].0 as u64)) + } +} + +trivial_from_in_impl!(f64); + +impl ToOcamlRep for Box { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(&**self) + } +} + +impl FromOcamlRep for Box { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(Box::new(T::from_ocamlrep(value)?)) + } +} + +impl ToOcamlRep for &'_ T { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized( + *self as *const T as *const usize as usize, + size_of::(), + |alloc| (**self).to_ocamlrep(alloc), + ) + } +} + +impl<'a, T: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for &'a T { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + // NB: We don't get any sharing this way. + Ok(alloc.alloc(T::from_ocamlrep_in(value, alloc)?)) + } +} + +impl ToOcamlRep for Rc { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized( + self.as_ref() as *const T as usize, + size_of::(), + |alloc| alloc.add(self.as_ref()), + ) + } +} + +impl FromOcamlRep for Rc { + fn from_ocamlrep(value: Value<'_>) -> Result { + // NB: We don't get any sharing this way. + Ok(Rc::new(T::from_ocamlrep(value)?)) + } +} + +impl ToOcamlRep for Arc { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized( + self.as_ref() as *const T as usize, + size_of::(), + |alloc| alloc.add(self.as_ref()), + ) + } +} + +impl FromOcamlRep for Arc { + fn from_ocamlrep(value: Value<'_>) -> Result { + // NB: We don't get any sharing this way. + Ok(Arc::new(T::from_ocamlrep(value)?)) + } +} + +impl ToOcamlRep for RefCell { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(1); + let value_ref: std::cell::Ref<'a, T> = self.borrow(); + alloc.set_field(&mut block, 0, alloc.add(&*value_ref)); + // SAFETY: the `&'a self` lifetime is intended to ensure that our `T` is + // not mutated or dropped during the to-OCaml conversion, in order to + // ensure that the allocator's memoization table isn't invalidated. We + // can't guarantee that statically for types with internal mutability, + // so the `ToOcamlRep` docs ask the caller to promise not to mutate or + // drop these values. If they violate that requirement, the allocator + // may give stale results in the event of aliasing, which is definitely + // undesirable, but does not break type safety on the Rust side. The + // allocator ties the lifetime of the Value we're returning to our + // local variable `value_ref`, but it doesn't actually reference that + // local, so it's safe to cast the lifetime away. + unsafe { std::mem::transmute::, Value<'a>>(block.build()) } + } +} + +impl ToOcamlRep for Cell { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(1); + let value_copy = self.get(); + alloc.set_field(&mut block, 0, alloc.add(&value_copy)); + // SAFETY: as above with RefCell, we need to cast away the lifetime to + // deal with internal mutability. + unsafe { std::mem::transmute::, Value<'a>>(block.build()) } + } +} + +impl FromOcamlRep for Cell { + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 1)?; + let value: T = from::field(block, 0)?; + Ok(Cell::new(value)) + } +} + +impl<'a, T: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for Cell { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 1)?; + let value: T = from::field_in(block, 0, alloc)?; + Ok(Cell::new(value)) + } +} + +impl FromOcamlRep for RefCell { + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 1)?; + let value: T = from::field(block, 0)?; + Ok(RefCell::new(value)) + } +} + +impl<'a, T: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for RefCell { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 1)?; + let value: T = from::field_in(block, 0, alloc)?; + Ok(RefCell::new(value)) + } +} + +impl ToOcamlRep for Option { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + match self { + None => Value::int(0), + Some(val) => { + let mut block = alloc.block_with_size(1); + alloc.set_field(&mut block, 0, alloc.add(val)); + block.build() + } + } + } +} + +impl FromOcamlRep for Option { + fn from_ocamlrep(value: Value<'_>) -> Result { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + Ok(None) + } else { + let block = from::expect_block_with_size_and_tag(value, 1, 0)?; + Ok(Some(from::field(block, 0)?)) + } + } +} + +impl<'a, T: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for Option { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + Ok(None) + } else { + let block = from::expect_block_with_size_and_tag(value, 1, 0)?; + Ok(Some(from::field_in(block, 0, alloc)?)) + } + } +} + +impl ToOcamlRep for Result { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + match self { + Ok(val) => { + let mut block = alloc.block_with_size(1); + alloc.set_field(&mut block, 0, alloc.add(val)); + block.build() + } + Err(val) => { + let mut block = alloc.block_with_size_and_tag(1, 1); + alloc.set_field(&mut block, 0, alloc.add(val)); + block.build() + } + } + } +} + +impl FromOcamlRep for Result { + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_block(value)?; + match block.tag() { + 0 => Ok(Ok(from::field(block, 0)?)), + 1 => Ok(Err(from::field(block, 0)?)), + t => Err(FromError::BlockTagOutOfRange { max: 1, actual: t }), + } + } +} + +impl<'a, T: FromOcamlRepIn<'a>, E: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for Result { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + let block = from::expect_block(value)?; + match block.tag() { + 0 => Ok(Ok(from::field_in(block, 0, alloc)?)), + 1 => Ok(Err(from::field_in(block, 0, alloc)?)), + t => Err(FromError::BlockTagOutOfRange { max: 1, actual: t }), + } + } +} + +impl ToOcamlRep for [T] { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut hd = alloc.add(&()); + for val in self.iter().rev() { + let mut block = alloc.block_with_size(2); + alloc.set_field(&mut block, 0, alloc.add(val)); + alloc.set_field(&mut block, 1, hd); + hd = block.build(); + } + hd + } +} + +impl ToOcamlRep for &'_ [T] { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized( + self.as_ptr() as usize, + std::mem::size_of_val(*self), + |alloc| (**self).to_ocamlrep(alloc), + ) + } +} + +impl<'a, T: FromOcamlRepIn<'a>> FromOcamlRepIn<'a> for &'a [T] { + fn from_ocamlrep_in(value: Value<'_>, alloc: &'a Bump) -> Result { + let mut len = 0usize; + let mut hd = value; + while !hd.is_int() { + let block = from::expect_tuple(hd, 2)?; + len += 1; + hd = block[1]; + } + let hd = hd.as_int().unwrap(); + if hd != 0 { + return Err(FromError::ExpectedUnit(hd)); + } + + let mut vec = bumpalo::collections::Vec::with_capacity_in(len, alloc); + let mut hd = value; + while !hd.is_int() { + let block = from::expect_tuple(hd, 2).unwrap(); + vec.push(from::field_in(block, 0, alloc)?); + hd = block[1]; + } + Ok(vec.into_bump_slice()) + } +} + +impl ToOcamlRep for Box<[T]> { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + (**self).to_ocamlrep(alloc) + } +} + +impl FromOcamlRep for Box<[T]> { + fn from_ocamlrep(value: Value<'_>) -> Result { + let vec = >::from_ocamlrep(value)?; + Ok(vec.into_boxed_slice()) + } +} + +impl ToOcamlRep for Vec { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_slice()) + } +} + +impl FromOcamlRep for Vec { + fn from_ocamlrep(value: Value<'_>) -> Result { + let mut vec = vec![]; + let mut hd = value; + while !hd.is_int() { + let block = from::expect_tuple(hd, 2)?; + vec.push(from::field(block, 0)?); + hd = block[1]; + } + let hd = hd.as_int().unwrap(); + if hd != 0 { + return Err(FromError::ExpectedUnit(hd)); + } + Ok(vec) + } +} + +impl<'a, T: FromOcamlRep> FromOcamlRepIn<'a> for Vec { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a Bump) -> Result { + Self::from_ocamlrep(value) + } +} + +impl ToOcamlRep for BTreeMap { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + if self.is_empty() { + return Value::int(0); + } + let len = self.len(); + let mut iter = self + .iter() + .map(|(k, v)| (k.to_ocamlrep(alloc), v.to_ocamlrep(alloc))); + let (res, _) = sorted_iter_to_ocaml_map(&mut iter, alloc, len); + res + } +} + +impl FromOcamlRep for BTreeMap { + fn from_ocamlrep(value: Value<'_>) -> Result { + let mut map = BTreeMap::new(); + btree_map_from_ocamlrep(&mut map, value)?; + Ok(map) + } +} + +impl<'a, K: FromOcamlRep + Ord, V: FromOcamlRep> FromOcamlRepIn<'a> for BTreeMap { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a Bump) -> Result { + Self::from_ocamlrep(value) + } +} + +/// Given an iterator which emits key-value pairs (already converted to OCaml +/// values), build an OCaml Map containing those bindings. The iterator must +/// emit each key only once. The key-value pairs must be emitted in ascending +/// order, sorted by key. The iterator must emit exactly `size` pairs. +pub fn sorted_iter_to_ocaml_map<'a, A: Allocator>( + iter: &mut impl Iterator, Value<'a>)>, + alloc: &'a A, + size: usize, +) -> (Value<'a>, usize) { + if size == 0 { + return (Value::int(0), 0); + } + let (left, left_height) = sorted_iter_to_ocaml_map(iter, alloc, size / 2); + let (key, val) = iter.next().unwrap(); + let (right, right_height) = sorted_iter_to_ocaml_map(iter, alloc, size - 1 - size / 2); + let height = std::cmp::max(left_height, right_height) + 1; + let mut block = alloc.block_with_size(5); + alloc.set_field(&mut block, 0, left); + alloc.set_field(&mut block, 1, key); + alloc.set_field(&mut block, 2, val); + alloc.set_field(&mut block, 3, right); + alloc.set_field(&mut block, 4, alloc.add_copy(height)); + (block.build(), height) +} + +fn btree_map_from_ocamlrep( + map: &mut BTreeMap, + value: Value<'_>, +) -> Result<(), FromError> { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 5, 0)?; + btree_map_from_ocamlrep(map, block[0])?; + let key: K = from::field(block, 1)?; + let val: V = from::field(block, 2)?; + map.insert(key, val); + btree_map_from_ocamlrep(map, block[3])?; + Ok(()) +} + +fn vec_from_ocaml_map_impl( + vec: &mut Vec<(K, V)>, + value: Value<'_>, +) -> Result<(), FromError> { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 5, 0)?; + vec_from_ocaml_map_impl(vec, block[0])?; + let key: K = from::field(block, 1)?; + let val: V = from::field(block, 2)?; + vec.push((key, val)); + vec_from_ocaml_map_impl(vec, block[3])?; + Ok(()) +} + +pub fn vec_from_ocaml_map( + value: Value<'_>, +) -> Result, FromError> { + let mut vec = vec![]; + vec_from_ocaml_map_impl(&mut vec, value)?; + Ok(vec) +} + +pub fn vec_from_ocaml_map_in<'a, K, V>( + value: Value<'_>, + vec: &mut bumpalo::collections::Vec<'a, (K, V)>, + alloc: &'a Bump, +) -> Result<(), FromError> +where + K: FromOcamlRepIn<'a> + Ord, + V: FromOcamlRepIn<'a>, +{ + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 5, 0)?; + vec_from_ocaml_map_in(block[0], vec, alloc)?; + let key: K = from::field_in(block, 1, alloc)?; + let val: V = from::field_in(block, 2, alloc)?; + vec.push((key, val)); + vec_from_ocaml_map_in(block[3], vec, alloc)?; + Ok(()) +} + +impl ToOcamlRep for BTreeSet { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + if self.is_empty() { + return Value::int(0); + } + let len = self.len(); + let mut iter = self.iter().map(|x| x.to_ocamlrep(alloc)); + let (res, _) = sorted_iter_to_ocaml_set(&mut iter, alloc, len); + res + } +} + +impl FromOcamlRep for BTreeSet { + fn from_ocamlrep(value: Value<'_>) -> Result { + let mut set = BTreeSet::new(); + btree_set_from_ocamlrep(&mut set, value)?; + Ok(set) + } +} + +impl<'a, T: FromOcamlRep + Ord> FromOcamlRepIn<'a> for BTreeSet { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a Bump) -> Result { + Self::from_ocamlrep(value) + } +} + +/// Build an OCaml Set containing all items emitted by the given iterator. The +/// iterator must emit each item only once. The items must be emitted in +/// ascending order. The iterator must emit exactly `size` items. +pub fn sorted_iter_to_ocaml_set<'a, A: Allocator>( + iter: &mut impl Iterator>, + alloc: &'a A, + size: usize, +) -> (Value<'a>, usize) { + if size == 0 { + return (Value::int(0), 0); + } + let (left, left_height) = sorted_iter_to_ocaml_set(iter, alloc, size / 2); + let val = iter.next().unwrap(); + let (right, right_height) = sorted_iter_to_ocaml_set(iter, alloc, size - 1 - size / 2); + let height = std::cmp::max(left_height, right_height) + 1; + let mut block = alloc.block_with_size(4); + alloc.set_field(&mut block, 0, left); + alloc.set_field(&mut block, 1, val); + alloc.set_field(&mut block, 2, right); + alloc.set_field(&mut block, 3, alloc.add_copy(height)); + (block.build(), height) +} + +fn btree_set_from_ocamlrep( + set: &mut BTreeSet, + value: Value<'_>, +) -> Result<(), FromError> { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 4, 0)?; + btree_set_from_ocamlrep(set, block[0])?; + set.insert(from::field(block, 1)?); + btree_set_from_ocamlrep(set, block[2])?; + Ok(()) +} + +fn vec_from_ocaml_set_impl( + value: Value<'_>, + vec: &mut Vec, +) -> Result<(), FromError> { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 4, 0)?; + vec_from_ocaml_set_impl(block[0], vec)?; + vec.push(from::field(block, 1)?); + vec_from_ocaml_set_impl(block[2], vec)?; + Ok(()) +} + +pub fn vec_from_ocaml_set(value: Value<'_>) -> Result, FromError> { + let mut vec = vec![]; + vec_from_ocaml_set_impl(value, &mut vec)?; + Ok(vec) +} + +pub fn vec_from_ocaml_set_in<'a, T: FromOcamlRepIn<'a> + Ord>( + value: Value<'_>, + vec: &mut bumpalo::collections::Vec<'a, T>, + alloc: &'a Bump, +) -> Result<(), FromError> { + if value.is_int() { + let _ = from::expect_nullary_variant(value, 0)?; + return Ok(()); + } + let block = from::expect_block_with_size_and_tag(value, 4, 0)?; + vec_from_ocaml_set_in(block[0], vec, alloc)?; + vec.push(from::field_in(block, 1, alloc)?); + vec_from_ocaml_set_in(block[2], vec, alloc)?; + Ok(()) +} + +impl ToOcamlRep + for IndexMap +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + if self.is_empty() { + return Value::int(0); + } + let mut vec: Vec<(&'a K, &'a V)> = self.iter().collect(); + vec.sort_unstable_by_key(|&(k, _)| k); + let len = vec.len(); + let mut iter = vec.iter().map(|(k, v)| { + let k: &'a K = k; + let v: &'a V = v; + (k.to_ocamlrep(alloc), v.to_ocamlrep(alloc)) + }); + let (res, _) = sorted_iter_to_ocaml_map(&mut iter, alloc, len); + res + } +} + +impl FromOcamlRep + for IndexMap +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let vec = vec_from_ocaml_map(value)?; + Ok(vec.into_iter().collect()) + } +} + +impl ToOcamlRep for IndexSet { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + if self.is_empty() { + return Value::int(0); + } + let mut vec: Vec<&'a T> = self.iter().collect(); + vec.sort_unstable(); + let len = vec.len(); + let mut iter = vec.iter().copied().map(|x| x.to_ocamlrep(alloc)); + let (res, _) = sorted_iter_to_ocaml_set(&mut iter, alloc, len); + res + } +} + +impl FromOcamlRep for IndexSet { + fn from_ocamlrep(value: Value<'_>) -> Result { + let set = >::from_ocamlrep(value)?; + Ok(set.into_iter().collect()) + } +} + +#[cfg(unix)] +impl ToOcamlRep for OsStr { + // TODO: A Windows implementation would be nice, but what does the OCaml + // runtime do? If we need Windows support, we'll have to find out. + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + use std::os::unix::ffi::OsStrExt; + alloc.add(self.as_bytes()) + } +} + +#[cfg(unix)] +impl ToOcamlRep for &'_ OsStr { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + use std::os::unix::ffi::OsStrExt; + alloc.add(self.as_bytes()) + } +} + +#[cfg(unix)] +impl<'a> FromOcamlRepIn<'a> for &'a OsStr { + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + use std::os::unix::ffi::OsStrExt; + Ok(std::ffi::OsStr::from_bytes(<&'a [u8]>::from_ocamlrep_in( + value, alloc, + )?)) + } +} + +#[cfg(unix)] +impl ToOcamlRep for OsString { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_os_str()) + } +} + +#[cfg(unix)] +impl FromOcamlRep for OsString { + fn from_ocamlrep(value: Value<'_>) -> Result { + use std::os::unix::ffi::OsStrExt; + Ok(OsString::from(std::ffi::OsStr::from_bytes( + bytes_from_ocamlrep(value)?, + ))) + } +} + +#[cfg(unix)] +impl ToOcamlRep for Path { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_os_str()) + } +} + +#[cfg(unix)] +impl ToOcamlRep for &'_ Path { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_os_str()) + } +} + +#[cfg(unix)] +impl<'a> FromOcamlRepIn<'a> for &'a Path { + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + Ok(Path::new(<&'a OsStr>::from_ocamlrep_in(value, alloc)?)) + } +} + +#[cfg(unix)] +impl ToOcamlRep for PathBuf { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_os_str()) + } +} + +#[cfg(unix)] +impl FromOcamlRep for PathBuf { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(PathBuf::from(OsString::from_ocamlrep(value)?)) + } +} + +impl ToOcamlRep for String { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_str()) + } +} + +impl FromOcamlRep for String { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(String::from(str_from_ocamlrep(value)?)) + } +} + +trivial_from_in_impl!(String); + +impl ToOcamlRep for Cow<'_, str> { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let s: &str = self.borrow(); + alloc.add(s) + } +} + +impl FromOcamlRep for Cow<'_, str> { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(Cow::Owned(String::from(str_from_ocamlrep(value)?))) + } +} + +impl ToOcamlRep for str { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + str_to_ocamlrep(self, alloc) + } +} + +impl ToOcamlRep for &'_ str { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized(self.as_bytes().as_ptr() as usize, self.len(), |alloc| { + (**self).to_ocamlrep(alloc) + }) + } +} + +impl<'a> FromOcamlRepIn<'a> for &'a str { + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + Ok(alloc.alloc_str(str_from_ocamlrep(value)?)) + } +} + +/// Allocate an OCaml string using the given allocator and copy the given string +/// slice into it. +pub fn str_to_ocamlrep<'a, A: Allocator>(s: &str, alloc: &'a A) -> Value<'a> { + bytes_to_ocamlrep(s.as_bytes(), alloc) +} + +/// Given an OCaml string, return a string slice pointing to its contents, if +/// they are valid UTF-8. +pub fn str_from_ocamlrep(value: Value<'_>) -> Result<&str, FromError> { + Ok(std::str::from_utf8(bytes_from_ocamlrep(value)?)?) +} + +impl ToOcamlRep for Vec { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_slice()) + } +} + +impl FromOcamlRep for Vec { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(Vec::from(bytes_from_ocamlrep(value)?)) + } +} + +impl ToOcamlRep for BString { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.add(self.as_slice()) + } +} + +impl FromOcamlRep for BString { + fn from_ocamlrep(value: Value<'_>) -> Result { + Ok(Vec::from_ocamlrep(value)?.into()) + } +} + +impl ToOcamlRep for BStr { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + bytes_to_ocamlrep(self, alloc) + } +} + +impl ToOcamlRep for &'_ BStr { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized(self.as_ptr() as usize, self.len(), |alloc| { + (**self).to_ocamlrep(alloc) + }) + } +} + +impl<'a> FromOcamlRepIn<'a> for &'a BStr { + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let slice: &[u8] = alloc.alloc_slice_copy(bytes_from_ocamlrep(value)?); + Ok(slice.into()) + } +} + +impl ToOcamlRep for [u8] { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + bytes_to_ocamlrep(self, alloc) + } +} + +impl ToOcamlRep for &'_ [u8] { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + alloc.memoized(self.as_ptr() as usize, self.len(), |alloc| { + (**self).to_ocamlrep(alloc) + }) + } +} + +impl<'a> FromOcamlRepIn<'a> for &'a [u8] { + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + Ok(alloc.alloc_slice_copy(bytes_from_ocamlrep(value)?)) + } +} + +/// Allocate an OCaml string using the given allocator and copy the given byte +/// slice into it. +pub fn bytes_to_ocamlrep<'a, A: Allocator>(bytes: &[u8], alloc: &'a A) -> Value<'a> { + use std::io::Write; + let mut w = alloc.byte_string_with_len(bytes.len()); + let _ = w.write(bytes).unwrap(); + w.build() +} + +/// Given an OCaml string, return a byte slice pointing to its contents. +pub fn bytes_from_ocamlrep(value: Value<'_>) -> Result<&[u8], FromError> { + let block = from::expect_block(value)?; + from::expect_block_tag(block, block::STRING_TAG)?; + let block_size_in_bytes = block.size() * std::mem::size_of::>(); + let slice = unsafe { + let ptr = block.0.as_ptr().add(1) as *const u8; + let padding = *ptr.add(block_size_in_bytes - 1); + let len = block_size_in_bytes - padding as usize - 1; + std::slice::from_raw_parts(ptr, len) + }; + Ok(slice) +} + +impl ToOcamlRep for (T0, T1) +where + T0: ToOcamlRep, + T1: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(2); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1) +where + T0: FromOcamlRep, + T1: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 2)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + Ok((f0, f1)) + } +} + +impl<'a, T0, T1> FromOcamlRepIn<'a> for (T0, T1) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 2)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + Ok((f0, f1)) + } +} + +impl ToOcamlRep for (T0, T1, T2) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(3); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 3)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + Ok((f0, f1, f2)) + } +} + +impl<'a, T0, T1, T2> FromOcamlRepIn<'a> for (T0, T1, T2) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 3)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + Ok((f0, f1, f2)) + } +} + +impl ToOcamlRep for (T0, T1, T2, T3) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, + T3: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(4); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + alloc.set_field(&mut block, 3, alloc.add(&self.3)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2, T3) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, + T3: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 4)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + let f3: T3 = from::field(block, 3)?; + Ok((f0, f1, f2, f3)) + } +} + +impl<'a, T0, T1, T2, T3> FromOcamlRepIn<'a> for (T0, T1, T2, T3) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, + T3: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 4)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + let f3: T3 = from::field_in(block, 3, alloc)?; + Ok((f0, f1, f2, f3)) + } +} + +impl ToOcamlRep for (T0, T1, T2, T3, T4) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, + T3: ToOcamlRep, + T4: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(5); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + alloc.set_field(&mut block, 3, alloc.add(&self.3)); + alloc.set_field(&mut block, 4, alloc.add(&self.4)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2, T3, T4) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, + T3: FromOcamlRep, + T4: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 5)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + let f3: T3 = from::field(block, 3)?; + let f4: T4 = from::field(block, 4)?; + Ok((f0, f1, f2, f3, f4)) + } +} + +impl<'a, T0, T1, T2, T3, T4> FromOcamlRepIn<'a> for (T0, T1, T2, T3, T4) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, + T3: FromOcamlRepIn<'a>, + T4: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 5)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + let f3: T3 = from::field_in(block, 3, alloc)?; + let f4: T4 = from::field_in(block, 4, alloc)?; + Ok((f0, f1, f2, f3, f4)) + } +} + +impl ToOcamlRep for (T0, T1, T2, T3, T4, T5) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, + T3: ToOcamlRep, + T4: ToOcamlRep, + T5: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(6); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + alloc.set_field(&mut block, 3, alloc.add(&self.3)); + alloc.set_field(&mut block, 4, alloc.add(&self.4)); + alloc.set_field(&mut block, 5, alloc.add(&self.5)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2, T3, T4, T5) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, + T3: FromOcamlRep, + T4: FromOcamlRep, + T5: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 6)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + let f3: T3 = from::field(block, 3)?; + let f4: T4 = from::field(block, 4)?; + let f5: T5 = from::field(block, 5)?; + Ok((f0, f1, f2, f3, f4, f5)) + } +} + +impl<'a, T0, T1, T2, T3, T4, T5> FromOcamlRepIn<'a> for (T0, T1, T2, T3, T4, T5) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, + T3: FromOcamlRepIn<'a>, + T4: FromOcamlRepIn<'a>, + T5: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 6)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + let f3: T3 = from::field_in(block, 3, alloc)?; + let f4: T4 = from::field_in(block, 4, alloc)?; + let f5: T5 = from::field_in(block, 5, alloc)?; + Ok((f0, f1, f2, f3, f4, f5)) + } +} + +impl ToOcamlRep for (T0, T1, T2, T3, T4, T5, T6) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, + T3: ToOcamlRep, + T4: ToOcamlRep, + T5: ToOcamlRep, + T6: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(7); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + alloc.set_field(&mut block, 3, alloc.add(&self.3)); + alloc.set_field(&mut block, 4, alloc.add(&self.4)); + alloc.set_field(&mut block, 5, alloc.add(&self.5)); + alloc.set_field(&mut block, 6, alloc.add(&self.6)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2, T3, T4, T5, T6) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, + T3: FromOcamlRep, + T4: FromOcamlRep, + T5: FromOcamlRep, + T6: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 7)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + let f3: T3 = from::field(block, 3)?; + let f4: T4 = from::field(block, 4)?; + let f5: T5 = from::field(block, 5)?; + let f6: T6 = from::field(block, 6)?; + Ok((f0, f1, f2, f3, f4, f5, f6)) + } +} + +impl<'a, T0, T1, T2, T3, T4, T5, T6> FromOcamlRepIn<'a> for (T0, T1, T2, T3, T4, T5, T6) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, + T3: FromOcamlRepIn<'a>, + T4: FromOcamlRepIn<'a>, + T5: FromOcamlRepIn<'a>, + T6: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 7)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + let f3: T3 = from::field_in(block, 3, alloc)?; + let f4: T4 = from::field_in(block, 4, alloc)?; + let f5: T5 = from::field_in(block, 5, alloc)?; + let f6: T6 = from::field_in(block, 6, alloc)?; + Ok((f0, f1, f2, f3, f4, f5, f6)) + } +} + +impl ToOcamlRep for (T0, T1, T2, T3, T4, T5, T6, T7) +where + T0: ToOcamlRep, + T1: ToOcamlRep, + T2: ToOcamlRep, + T3: ToOcamlRep, + T4: ToOcamlRep, + T5: ToOcamlRep, + T6: ToOcamlRep, + T7: ToOcamlRep, +{ + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size(8); + alloc.set_field(&mut block, 0, alloc.add(&self.0)); + alloc.set_field(&mut block, 1, alloc.add(&self.1)); + alloc.set_field(&mut block, 2, alloc.add(&self.2)); + alloc.set_field(&mut block, 3, alloc.add(&self.3)); + alloc.set_field(&mut block, 4, alloc.add(&self.4)); + alloc.set_field(&mut block, 5, alloc.add(&self.5)); + alloc.set_field(&mut block, 6, alloc.add(&self.6)); + alloc.set_field(&mut block, 7, alloc.add(&self.7)); + block.build() + } +} + +impl FromOcamlRep for (T0, T1, T2, T3, T4, T5, T6, T7) +where + T0: FromOcamlRep, + T1: FromOcamlRep, + T2: FromOcamlRep, + T3: FromOcamlRep, + T4: FromOcamlRep, + T5: FromOcamlRep, + T6: FromOcamlRep, + T7: FromOcamlRep, +{ + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_tuple(value, 8)?; + let f0: T0 = from::field(block, 0)?; + let f1: T1 = from::field(block, 1)?; + let f2: T2 = from::field(block, 2)?; + let f3: T3 = from::field(block, 3)?; + let f4: T4 = from::field(block, 4)?; + let f5: T5 = from::field(block, 5)?; + let f6: T6 = from::field(block, 6)?; + let f7: T7 = from::field(block, 7)?; + Ok((f0, f1, f2, f3, f4, f5, f6, f7)) + } +} + +impl<'a, T0, T1, T2, T3, T4, T5, T6, T7> FromOcamlRepIn<'a> for (T0, T1, T2, T3, T4, T5, T6, T7) +where + T0: FromOcamlRepIn<'a>, + T1: FromOcamlRepIn<'a>, + T2: FromOcamlRepIn<'a>, + T3: FromOcamlRepIn<'a>, + T4: FromOcamlRepIn<'a>, + T5: FromOcamlRepIn<'a>, + T6: FromOcamlRepIn<'a>, + T7: FromOcamlRepIn<'a>, +{ + fn from_ocamlrep_in<'b>(value: Value<'b>, alloc: &'a Bump) -> Result { + let block = from::expect_tuple(value, 8)?; + let f0: T0 = from::field_in(block, 0, alloc)?; + let f1: T1 = from::field_in(block, 1, alloc)?; + let f2: T2 = from::field_in(block, 2, alloc)?; + let f3: T3 = from::field_in(block, 3, alloc)?; + let f4: T4 = from::field_in(block, 4, alloc)?; + let f5: T5 = from::field_in(block, 5, alloc)?; + let f6: T6 = from::field_in(block, 6, alloc)?; + let f7: T7 = from::field_in(block, 7, alloc)?; + Ok((f0, f1, f2, f3, f4, f5, f6, f7)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/lib.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/lib.rs new file mode 100644 index 00000000000..3b6c9d561ba --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/lib.rs @@ -0,0 +1,527 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +/*! +OcamlRep is a framework for building and interpreting the in-memory +representation of OCaml values. This is useful for converting Rust values to +OCaml values and vice-versa, and for building and storing OCaml values off of +the OCaml runtime's garbage-collected heap. + +OcamlRep provides a generic interface abstracting over the allocation of OCaml +values, allowing custom allocators to choose where values are allocated +(including directly onto the OCaml heap). + +# Example: build an OCaml value ############################################### + +This crate provides an arena-allocator which manages the memory in which +converted OCaml values are stored. When the arena is dropped, the values are +freed. + +```rust +// Import the Allocator trait for access to its `add` method, which builds an +// OCaml-value representation of the argument (using `OcamlRep::to_ocamlrep`) +// and returns that value. +use ocamlrep::{Allocator, Arena, Value}; + +// The `ocamlrep` crate provides implementations of `OcamlRep` for builtin types +// like `Option`, `String`, integers, and tuples. This allows them to be +// converted to OCaml values using the Allocator trait (which Arena implements). +let tuple = (Some(42), String::from("a")); + +// Allocate a chunk of Rust-managed backing storage for our OCaml value. +let arena = Arena::new(); + +// This value borrows the Arena, to ensure that we cannot continue to use it +// after the Arena has been freed. OcamlRep values do not borrow the Rust values +// they were converted from--the string "a" is copied into the Arena. +let ocamlrep_value: Value<'_> = arena.add(&tuple); + +// We must now convert the value to a usize which can be handed over to the +// OCaml runtime. We must take care when doing this to ensure that our OCaml +// program doesn't use the value after the Arena is freed. +let ocaml_value: usize = ocamlrep_value.to_bits(); +``` + +# Example: return an OCaml value to the OCaml runtime ######################### + +The value `ocaml_value` from the previous example is suitable to be handed to +the OCaml runtime. We might do so with an extern declaration like this: + +```ocaml +external get_tuple : unit -> int option * string = "get_tuple" + +let use_rust_tuple () = + match get_tuple () with + | (Some i, s) -> Printf.printf "%d, %s\n" i s + | (None, s) -> Printf.printf "None, %s\n" s +``` + +We could provide this symbol from the Rust side like this: + +```rust +#[no_mangle] +pub extern "C" fn get_tuple(_unit: usize) -> usize { + use ocamlrep::{Allocator, Arena}; + let arena = Box::leak(Box::new(Arena::new())); + let ocaml_tuple = arena.add(&(Some(42), String::from("a"))); + // This is safe because we leaked the Arena--no matter what we do with this + // value on the OCaml side, we'll never use-after-free. + ocaml_tuple.to_bits() +} +``` + +But this leaks memory. For small amounts of memory, or a short-lived process, +this might be fine. If not, we might choose another strategy... + +# Example: lend an OCaml value to the OCaml runtime ########################### + +Instead, we could register an OCaml callback which uses the value: + +```ocaml +let use_tuple (tuple : int option * string) : unit = + match tuple with + | (Some i, s) -> Printf.printf "%d, %s\n" i s + | (None, s) -> Printf.printf "None, %s\n" s + +external make_and_use_tuple : unit -> unit = "make_and_use_tuple" + +let () = + Callback.register "use_tuple" use_tuple; + make_and_use_tuple () +``` + +And call into OCaml from Rust (using the `ocaml` crate) to hand over the value: + +```rust +#[no_mangle] +pub extern "C" fn make_and_use_tuple(_unit: usize) -> usize { + use ocamlrep::{Allocator, Arena}; + let arena = Arena::new(); + let tuple_ocamlrep = arena.add(&(Some(42), String::from("a"))); + + let use_tuple = ocaml::named_value("use_tuple") + .expect("use_tuple must be registered using Callback.register"); + + // This is safe because we are passing the value to `use_tuple`, which + // doesn't store the value and returns before we free the Arena. + let ocaml_tuple: usize = tuple_ocamlrep.to_bits(); + use_tuple + .call(ocaml::Value::new(ocaml_tuple)) + .expect("use_tuple must be a function"); + + // Free the arena and return unit. + ocaml::core::mlvalues::UNIT +} +``` + +# Example: pass an OCaml value to the OCaml runtime ########################### + +The `ocamlrep_ocamlpool` crate provides an `Allocator` which builds values on +the OCaml runtime's garbage-collected heap. We can replace the memory-leaking +implementation from the [second example ("return an OCaml value to the OCaml +runtime")](#example-return-an-ocaml-value-to-the-ocaml-runtime) with one that +allows the OCaml value to be garbage-collected when no longer used: + +```rust +#[no_mangle] +pub extern "C" fn get_tuple(_unit: usize) -> usize { + ocamlrep_ocamlpool::to_ocaml(&(Some(42), String::from("a"))) +} +``` + +The `ocamlrep_ocamlpool` crate provides a convenience macro for this use case: + +```rust +use ocamlrep_ocamlpool::ocaml_ffi; + +ocaml_ffi! { + // This expands to code similar to the above definition of get_tuple. + fn get_tuple() -> (Option, String) { + (Some(42), String::from("a")) + } +} +``` + +# Example: pass an OCaml value to Rust ######################################## + +An `Allocator` converts Rust values which implement the `OcamlRep` trait into +OCaml values using the method `OcamlRep::to_ocamlrep`. The `OcamlRep` trait also +provides a method `OcamlRep::from_ocamlrep` (and an FFI helper named +`OcamlRep::from_ocaml`) for conversion in the other direction. + +If we call into Rust like this: + +```ocaml +external use_tuple : int option * string -> unit = "use_tuple" + +let () = use_tuple (Some 42, "a") +``` + +We could convert the tuple to a Rust value like this: + +```rust +#[no_mangle] +pub extern "C" fn use_tuple(ocaml_tuple: usize) -> usize { + // Import the OcamlRep trait to use its associated function `from_ocaml`. + use ocamlrep::OcamlRep; + // Safety: `ocaml_tuple` is a valid OCaml value allocated by the OCaml + // runtime, all objects reachable from that value are also valid OCaml + // values, and those objects cannot be concurrently modified while + // `from_ocaml` runs. This is true because that graph of objects is owned by + // the OCaml runtime, we didn't expose any of their pointers in any other + // FFI functions, and the OCaml runtime is both single-threaded and + // currently interrupted by an FFI call into this function. + let tuple_result = unsafe { <(Option, String)>::from_ocaml(ocaml_tuple) }; + let tuple = tuple_result + .expect("Expected a value of type `int option * string`, \ + but got some other type or invalid UTF-8"); + println!("{:?}", tuple); + ocaml::core::mlvalues::UNIT +} +``` + +The `ocaml_ffi!` macro in the `ocamlrep_ocamlpool` crate supports this use case: + +```rust +use ocamlrep_ocamlpool::ocaml_ffi; + +ocaml_ffi! { + // This expands to code similar to the above definition of use_tuple. + fn use_tuple(tuple: (Option, String)) { + println!("{:?}", tuple) + } +} +``` + +Note that the value returned by `from_ocaml` is owned--it is effectively a +deep clone of the OCaml value. For instance, the OCaml string "a" is copied into +a newly allocated Rust String--the Rust side does not need to worry about the +OCaml value being garbage collected. + +Take care when using `from_ocaml`, `from_ocamlrep`, or `ocaml_ffi!` with types +containing `String`s. OCaml strings are not guaranteed to be UTF-8, so +`from_ocaml` may return an `Err` because a string was invalid UTF-8 rather than +because the OCaml code did not pass a value of the expected type (which should +be forbidden by the OCaml compiler, provided that the `external` declaration is +annotated with the correct type). If representing invalid UTF-8 is a +requirement, use `Vec` instead (an implementation of `OcamlRep` which +converts `Vec` to an OCaml `string` is provided). + +# Example: implementing OcamlRep ############################################## + +Writing a manual implementation of OcamlRep requires one to choose some type +with which their value should be represented in OCaml and write `to_ocamlrep` +and `from_ocamlrep` conversion functions which build and interpret the in-memory +representation of that type. + +This crate provides implementations of OcamlRep for several std types, and +chooses these OCaml types to represent them with: + +| Rust type | OCaml type | +|------------------------|-----------------------------------------| +| `()` | `unit` | +| `bool` | `bool` | +| `usize`/`isize` | `int` | +| [`Option`][OptionRs] | [`option`][OptionMl] | +| [`Result`][ResultRs] | [`result`][ResultMl] | +| [`Vec`][Vec] | [`list`][List] | +| [`String`][StringRs] | [`string`][StringMl] (when valid UTF-8) | +| [`Vec`][Vec] | [`string`][StringMl] | +| [`PathBuf`][PathBuf] | [`string`][StringMl] | +| [`BTreeMap`][BTreeMap] | [`Map`][Map] | +| [`BTreeSet`][BTreeSet] | [`Set`][Set] | + +[OptionRs]: https://doc.rust-lang.org/beta/std/option/enum.Option.html +[OptionMl]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Option.html +[ResultRs]: https://doc.rust-lang.org/std/result/enum.Result.html +[ResultMl]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Result.html +[Vec]: https://doc.rust-lang.org/std/vec/struct.Vec.html +[List]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html +[StringRs]: https://doc.rust-lang.org/std/string/struct.String.html +[StringMl]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/String.html +[PathBuf]: https://doc.rust-lang.org/std/path/struct.PathBuf.html +[BTreeMap]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html +[Map]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Map.html +[BTreeSet]: https://doc.rust-lang.org/std/collections/struct.BTreeSet.html +[Set]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Set.html + +See the [`impls`](../src/ocamlrep/impls.rs.html) submodule for examples of +conversions for std types, and [Real World +OCaml](https://dev.realworldocaml.org/runtime-memory-layout.html) and the +[Interfacing C with OCaml](https://ocaml.org/manual/intfc.html) section of the +OCaml manual for description of the OCaml representation of values. + +Since manually implementing OcamlRep is cumbersome and error-prone, the +`ocamlrep_derive` crate provides a procedural macro for deriving the OcamlRep +trait. + +When derived for custom types like this: + +```ocaml +use ocamlrep_derive::OcamlRep; + +#[derive(OcamlRep)] +struct Foo { + a: isize, + b: Vec, +} + +#[derive(OcamlRep)] +enum Fruit { + Apple, + Orange(isize), + Pear { num: isize }, + Kiwi, +} +``` + +It produces implementations of OcamlRep which construct values belonging to +these roughly-equivalent OCaml types: + +```ocaml +type foo = { + a: int; + b: bool list; +} + +type fruit = + | Apple + | Orange of int + | Pear of { num: int } + | Kiwi +``` + +The `oxidize` program at hphp/hack/src/hh_oxidize will take OCaml source files +like the one above and generate Rust source files which define +"roughly-equivalent" types (like the Rust source above). These types will derive +an implementation of `OcamlRep` which will produce OCaml values belonging to the +corresponding type in the OCaml source file. +*/ + +mod arena; +mod block; +mod cache; +mod error; +mod impls; +mod value; + +pub mod from; +pub mod ptr; +pub mod rc; + +pub use arena::Arena; +pub use block::Block; +pub use block::BlockBuilder; +pub use block::BlockBytes; +pub use block::Color; +pub use block::Header; +pub use block::ABSTRACT_TAG; +pub use block::CLOSURE_TAG; +pub use block::CONT_TAG; +pub use block::CUSTOM_TAG; +pub use block::DOUBLE_ARRAY_TAG; +pub use block::DOUBLE_TAG; +pub use block::FORCING_TAG; +pub use block::FORWARD_TAG; +pub use block::INFIX_TAG; +pub use block::LAZY_TAG; +pub use block::NO_SCAN_TAG; +pub use block::OBJECT_TAG; +pub use block::STRING_TAG; +pub use bumpalo::Bump; +pub use cache::MemoizationCache; +pub use error::FromError; +pub use impls::bytes_from_ocamlrep; +pub use impls::bytes_to_ocamlrep; +pub use impls::sorted_iter_to_ocaml_map; +pub use impls::sorted_iter_to_ocaml_set; +pub use impls::str_from_ocamlrep; +pub use impls::str_to_ocamlrep; +pub use impls::vec_from_ocaml_map; +pub use impls::vec_from_ocaml_map_in; +pub use impls::vec_from_ocaml_set; +pub use impls::vec_from_ocaml_set_in; +pub use ocamlrep_derive::FromOcamlRep; +pub use ocamlrep_derive::FromOcamlRepIn; +pub use ocamlrep_derive::ToOcamlRep; +pub use value::Value; + +// 'mlvalues.h' +pub const DOUBLE_WOSIZE: usize = std::mem::size_of::() / std::mem::size_of::(); + +// 'gc.h' +pub const CAML_WHITE: usize = 0 << 8; +pub const CAML_GRAY: usize = 1 << 8; +pub const CAML_BLUE: usize = 2 << 8; +pub const CAML_BLACK: usize = 3 << 8; + +/// A data structure that can be converted to an OCaml value. +/// +/// Types which implement both `ToOcamlRep` and `FromOcamlRep` (or +/// `FromOcamlRepIn`) should provide compatible implementations thereof. +/// In other words, it is expected that for any value with type `T`, +/// `T::from_ocamlrep(value.to_ocamlrep(alloc)) == Ok(value)`. +pub trait ToOcamlRep { + /// Allocate an OCaml representation of `self` using the given Allocator. + /// + /// Implementors of this method must not mutate or drop any values after + /// passing them to `Allocator::add` (or invoking `to_ocamlrep` on them), + /// else `Allocator::memoized` may return incorrect results (this can + /// generally only be done using internal-mutability types like `RefCell`, + /// `Mutex`, or atomics, or by using `unsafe`). + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a>; +} + +/// An interface for allocating OCaml values in some allocator-defined memory region. +pub trait Allocator: Sized { + /// Return a token which uniquely identifies this Allocator. The token must + /// be unique (among all instances of all implementors of the Allocator + /// trait), and an instance of an implementor of Allocator must return the + /// same token throughout its entire lifetime. + fn generation(&self) -> usize; + + /// Allocate a block with enough space for `size` fields, write its header, + /// and return it. + fn block_with_size_and_tag(&self, size: usize, tag: u8) -> BlockBuilder<'_>; + + /// Write the given value to the `index`th field of `block`. + /// + /// # Panics + /// + /// Panics if `index` is out of bounds for `block` (i.e., greater than or + /// equal to the block's size). + fn set_field<'a>(&self, block: &mut BlockBuilder<'a>, index: usize, value: Value<'a>); + + /// # Safety + /// + /// Must be used only with values allocated by this `Allocator`. The caller + /// may assume the returned pointer is valid only until some other + /// `Allocator` method is called on `self` (since an allocation may + /// invalidate the pointed-to memory). + /// + /// Intended to be used only in implementations of `Allocator::set_field` + /// and in conversion-to-OCaml functions requiring access to the raw memory + /// of a block (e.g., `bytes_to_ocamlrep`). + unsafe fn block_ptr_mut<'a>(&self, block: &mut BlockBuilder<'a>) -> *mut Value<'a>; + + #[inline(always)] + fn block_with_size(&self, size: usize) -> BlockBuilder<'_> { + self.block_with_size_and_tag(size, 0u8) + } + + /// Convert the given data structure to an OCaml value. Structural sharing + /// (via references or `Rc`) will not be preserved unless `add` is invoked + /// within an outer invocation of `add_root`. + /// + /// To preserve structural sharing without using `add_root` (and the + /// overhead of maintaining a cache that comes with it), consider using + /// `ocamlrep::rc::RcOc` instead of `Rc`. + #[inline(always)] + fn add<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + value.to_ocamlrep(self) + } + + /// Convert the given `Copy` data structure to an OCaml value. + #[inline(always)] + fn add_copy<'a, T: ToOcamlRep + Copy + 'static>(&'a self, value: T) -> Value<'a> { + let value_ref = &value; + // SAFETY: add/to_ocamlrep cannot reference `value` in the `Value` + // they return, and the `Copy + 'static` bounds ensure that we're not + // working with a reference or Rc which might be invalidated. + self.add(unsafe { std::mem::transmute::<&'_ T, &'a T>(value_ref) }) + } + + /// Given the address and size of some value, and a function to convert the + /// value to OCaml (e.g., a closure `|alloc| (*slice).to_ocamlrep(alloc)`), + /// either execute the function and return its result, or return a cached + /// result for that address. + /// + /// If `memoized` is invoked without an outer invocation of `add_root`, it + /// must never return a cached result. If `memoized` is invoked within an + /// outer invocation of `add_root`, it must return a result computed within + /// that invocation of `add_root`. + fn memoized<'a>( + &'a self, + ptr: usize, + size_in_bytes: usize, + f: impl FnOnce(&'a Self) -> Value<'a>, + ) -> Value<'a>; + + /// Convert the given data structure to an OCaml value. Structural sharing + /// (via references or `Rc`) will be preserved. + /// + /// Note that sharing is preserved using a memoization cache keyed off of + /// address and size only. If the given value contains multiple references + /// or slices pointing to equal-sized views of the same data, but with + /// different OCaml representations, e.g.: + /// + /// ``` + /// let x: &(u32, u32) = &(0u32, 1u32); + /// let y: &u64 = unsafe { std::mem::transmute(x) }; + /// let value = (x, y); + /// alloc.add_root(&value) // PROBLEM! + /// ``` + /// + /// Then the converted OCaml value will not have the intended type (i.e., + /// the one which would be produced by `Allocator::add`). In this example, + /// the allocator will memoize the result of converting `x` (an OCaml + /// tuple), and use it for both `x` and `y` in `value` (since they point to + /// equal-sized types at the same address). + /// + /// # Panics + /// + /// `add_root` is not re-entrant, and panics upon attempts to do so. + fn add_root<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a>; + + /// Allocate a block with tag `STRING_TAG` and enough space for a string of + /// `len` bytes. Write its header and return a `BlockBytes` wrapping the + /// buffer and the block. + fn byte_string_with_len(&self, len: usize) -> BlockBytes<'_> { + let word_size = std::mem::size_of::<*const u8>(); + let words = (len + 1 /*null-ending*/ + (word_size - 1)/*rounding*/) / word_size; + let length = words * word_size; + let mut block = self.block_with_size_and_tag(words, STRING_TAG); + unsafe { + let block = self.block_ptr_mut(&mut block); + *block.add(words - 1) = Value::from_bits(0); + let block_bytes = block as *mut u8; + *block_bytes.add(length - 1) = (length - len - 1) as u8; + BlockBytes::new(std::slice::from_raw_parts_mut(block_bytes, len)) + } + } +} + +/// A type which can be reconstructed from an OCaml value. +/// +/// Types which implement both `ToOcamlRep` and `FromOcamlRep` should provide +/// compatible implementations thereof. In other words, it is expected that for +/// any value, `T::from_ocamlrep(value.to_ocamlrep(alloc)) == Ok(value)`. +pub trait FromOcamlRep: Sized { + /// Convert the given ocamlrep Value to a value of type `Self`, if possible. + fn from_ocamlrep(value: Value<'_>) -> Result; + + /// Convert the given OCaml value to a value of type `Self`, if possible. + /// + /// # Safety + /// + /// The given value must be a valid OCaml value. All values reachable from + /// the given value must be valid OCaml values. None of these values may be + /// naked pointers. None of these values may be modified while `from_ocaml` + /// is running. + unsafe fn from_ocaml(value: usize) -> Result { + Self::from_ocamlrep(Value::from_bits(value)) + } +} + +/// A type which can be reconstructed from an OCaml value. +/// +/// Types which implement both `ToOcamlRep` and `FromOcamlRepIn` should provide +/// compatible implementations thereof. In other words, it is expected that for +/// any value, `T::from_ocamlrep_in(value.to_ocamlrep(alloc), bump) == Ok(value)`. +pub trait FromOcamlRepIn<'a>: Sized { + /// Convert the given ocamlrep Value to a value of type `Self`, allocated in + /// the given arena. + fn from_ocamlrep_in(value: Value<'_>, arena: &'a Bump) -> Result; +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/ptr.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/ptr.rs new file mode 100644 index 00000000000..10a6d49e6ae --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/ptr.rs @@ -0,0 +1,144 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +//! FFI types for representing pointers-to-OCaml-managed-data in Rust +//! (`UnsafeOcamlPtr`) and pointers-to-Rust-managed-data in OCaml (`NakedPtr`). + +use std::fmt; +use std::num::NonZeroUsize; + +use crate::Allocator; +use crate::FromError; +use crate::FromOcamlRep; +use crate::ToOcamlRep; +use crate::Value; + +/// Unsafe pointer to an OCaml value which is (possibly) managed by the garbage +/// collector. +/// +/// Take care that the value stays rooted or the garbage collector does not run +/// while an UnsafeOcamlPtr wrapper for it exists. +/// +/// While this can be used with an ocamlrep::Arena via to_ocamlrep, caution is +/// required--the pointed-to value will *not* be cloned into the Arena, so a +/// data structure containing UnsafeOcamlPtrs which is allocated into an Arena +/// may contain pointers into the OCaml GC-ed heap. +#[repr(transparent)] +#[derive(Clone, Copy, Hash, PartialEq, Eq)] +pub struct UnsafeOcamlPtr(NonZeroUsize); + +impl UnsafeOcamlPtr { + /// # Safety + /// + /// `ptr` must be rooted or the garbage collector can not be allowed to run + /// while an `UnsafeOcamlPtr` wrapper that contains it exists. + pub unsafe fn new(ptr: usize) -> Self { + Self(NonZeroUsize::new(ptr).unwrap()) + } + + pub fn as_usize(self) -> usize { + self.0.get() + } + + #[inline(always)] + pub const fn is_int(self) -> bool { + // SAFETY: `Value::is_int` only checks the low bit, so it's safe + // to interpret `self.0` as a value (we don't attempt to dereference it) + unsafe { self.as_value().is_int() } + } + + #[inline(always)] + pub const fn is_block(self) -> bool { + // SAFETY: `Value::is_block` only checks the low bit, so it's safe + // to interpret `self.0` as a value (we don't attempt to dereference it) + unsafe { self.as_value().is_block() } + } + + /// Interpret this pointer as an OCaml value which is valid for lifetime 'a. + /// + /// # Safety + /// + /// The OCaml garbage collector must not run during this lifetime (even if + /// the value is rooted). + #[inline(always)] + pub const unsafe fn as_value<'a>(self) -> Value<'a> { + Value::from_bits(self.0.get()) + } +} + +impl fmt::Debug for UnsafeOcamlPtr { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "0x{:x}", self.0) + } +} + +impl ToOcamlRep for UnsafeOcamlPtr { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + unsafe { Value::from_bits(self.0.get()) } + } +} + +impl FromOcamlRep for UnsafeOcamlPtr { + fn from_ocamlrep(value: Value<'_>) -> Result { + if value.is_int() { + return Err(FromError::ExpectedBlock(value.as_int().unwrap())); + } + Ok(unsafe { Self::new(value.to_bits()) }) + } +} + +impl<'a> crate::FromOcamlRepIn<'a> for UnsafeOcamlPtr { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a bumpalo::Bump) -> Result { + Self::from_ocamlrep(value) + } +} + +/// Any kind of foreign pointer (i.e., a pointer to any data at all--it need not +/// look like a valid OCaml value). +/// +/// On the OCaml side, these are represented as opaque types, e.g. `type addr;`. +/// +/// The pointer must not be within a memory page currently in use by the OCaml +/// runtime for the garbage-collected heap (i.e., it must in fact be a foreign +/// pointer). +/// +/// Can only be used when linking against a binary built with an OCaml compiler +/// which was **not** configured with the `-no-naked-pointers` option (which +/// forbids naked pointers, requiring foreign pointers to be wrapped in a block +/// tagged with `Abstract_tag` instead). +#[repr(transparent)] +#[derive(Clone, Copy, Hash, PartialEq, Eq)] +pub struct NakedPtr(*const T); + +impl NakedPtr { + pub fn new(ptr: *const T) -> Self { + Self(ptr) + } + + pub fn as_ptr(self) -> *const T { + self.0 + } +} + +impl fmt::Debug for NakedPtr { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:p}", self.0) + } +} + +impl ToOcamlRep for NakedPtr { + fn to_ocamlrep<'a, A: Allocator>(&'a self, _alloc: &'a A) -> Value<'a> { + unsafe { Value::from_bits(self.0 as usize) } + } +} + +impl FromOcamlRep for NakedPtr { + fn from_ocamlrep(value: Value<'_>) -> Result { + if value.is_int() { + return Err(FromError::ExpectedBlock(value.as_int().unwrap())); + } + Ok(Self::new(value.to_bits() as *const T)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/rc.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/rc.rs new file mode 100644 index 00000000000..7a2ec10e9ea --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/rc.rs @@ -0,0 +1,313 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +//! Provides `RcOc`, a single-threaded reference-counting pointer. `RcOc` stands +//! for "reference counted with Ocaml-value cache". + +use std::cell::Cell; +use std::cmp::Ordering; +use std::fmt; +use std::hash::Hash; +use std::hash::Hasher; +use std::ops::Deref; +use std::rc::Rc; + +use bumpalo::Bump; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; + +use crate::Allocator; +use crate::FromError; +use crate::FromOcamlRep; +use crate::ToOcamlRep; +use crate::Value; + +const UNIT: usize = crate::value::isize_to_ocaml_int(0); +const INVALID_GENERATION: usize = usize::max_value(); + +struct OcamlValueCache { + forward_pointer: Cell, + generation: Cell, + value: T, +} + +impl OcamlValueCache { + #[inline(always)] + pub fn new(value: T) -> Self { + OcamlValueCache { + forward_pointer: Cell::new(UNIT), + generation: Cell::new(INVALID_GENERATION), + value, + } + } + + #[inline(always)] + pub fn get_in_generation(&self, generation: usize) -> Option { + if generation == self.generation.get() { + Some(self.forward_pointer.get()) + } else { + None + } + } + + #[inline(always)] + pub fn set(&self, value: usize, generation: usize) { + assert!(generation != INVALID_GENERATION); + self.forward_pointer.set(value); + self.generation.set(generation); + } + + #[inline(always)] + fn clear(&self) { + self.forward_pointer.set(UNIT); + self.generation.set(INVALID_GENERATION); + } +} + +impl Clone for OcamlValueCache { + #[inline(always)] + fn clone(&self) -> Self { + OcamlValueCache::new(self.value.clone()) + } +} + +#[allow(clippy::partialeq_ne_impl)] +impl PartialEq for OcamlValueCache { + #[inline(always)] + fn eq(&self, other: &OcamlValueCache) -> bool { + self.value.eq(&other.value) + } + + #[inline(always)] + fn ne(&self, other: &OcamlValueCache) -> bool { + self.value.ne(&other.value) + } +} + +impl Eq for OcamlValueCache {} + +/// A single-threaded reference-counting pointer type, which, as a performance +/// optimization, can cache the result of converting the pointed-to value to an +/// OCaml value. `RcOc` stands for "reference counted with Ocaml-value cache". +/// +/// Internally uses `std::rc::Rc`, so restrictions on `Rc` also apply to `RcOc`. +/// It is encouraged to follow `Rc` conventions (such as preferring the use of +/// `RcOc::clone(x)` rather than `x.clone()`) when using `RcOc`. +pub struct RcOc { + ptr: Rc>, +} + +impl RcOc { + #[inline(always)] + pub fn new(value: T) -> Self { + Self { + ptr: Rc::new(OcamlValueCache::new(value)), + } + } + + #[inline(always)] + pub fn get_cached_value_in_generation(&self, generation: usize) -> Option { + (*self.ptr).get_in_generation(generation) + } + + #[inline(always)] + pub fn set_cached_value(&self, value: usize, generation: usize) { + (*self.ptr).set(value, generation) + } + + #[inline(always)] + pub fn clear_cache(&self) { + (*self.ptr).clear(); + } + + #[inline(always)] + pub fn get_mut(this: &mut Self) -> Option<&mut T> { + Rc::get_mut(&mut this.ptr).map(|cache| { + // We are about to give permission to mutate the value, so + // invalidate the cache. + cache.clear(); + &mut cache.value + }) + } + + #[inline(always)] + pub fn ptr_eq(this: &Self, other: &Self) -> bool { + Rc::ptr_eq(&this.ptr, &other.ptr) + } + + /// Returns the inner value, if the `Rc` has exactly one strong reference. + /// + /// Otherwise, an `Err` is returned with the same `Rc` that was passed in. + /// + /// This will succeed even if there are outstanding weak references. + #[inline(always)] + pub fn try_unwrap(this: Self) -> Result { + match Rc::try_unwrap(this.ptr) { + Ok(cache) => Ok(cache.value), + Err(ptr) => Err(Self { ptr }), + } + } +} + +impl RcOc { + #[inline(always)] + pub fn make_mut(this: &mut Self) -> &mut T { + // If the refcount is 1, Rc::make_mut will give permission to mutate the + // value (rather than cloning it), so invalidate the cache. + if Rc::strong_count(&this.ptr) == 1 { + this.clear_cache(); + } + &mut Rc::make_mut(&mut this.ptr).value + } +} + +impl AsRef for RcOc { + #[inline(always)] + fn as_ref(&self) -> &T { + &self.ptr.as_ref().value + } +} + +impl Clone for RcOc { + #[inline(always)] + fn clone(&self) -> Self { + Self { + ptr: Rc::clone(&self.ptr), + } + } +} + +impl Deref for RcOc { + type Target = T; + + #[inline(always)] + fn deref(&self) -> &T { + &self.ptr.deref().value + } +} + +#[allow(clippy::partialeq_ne_impl)] +impl PartialEq for RcOc { + #[inline(always)] + fn eq(&self, other: &RcOc) -> bool { + self.ptr.eq(&other.ptr) + } + + #[inline(always)] + fn ne(&self, other: &RcOc) -> bool { + self.ptr.ne(&other.ptr) + } +} + +impl Eq for RcOc {} + +impl PartialOrd for RcOc { + #[inline(always)] + fn partial_cmp(&self, other: &RcOc) -> Option { + (**self).partial_cmp(&**other) + } + + #[inline(always)] + fn lt(&self, other: &RcOc) -> bool { + **self < **other + } + + #[inline(always)] + fn le(&self, other: &RcOc) -> bool { + **self <= **other + } + + #[inline(always)] + fn gt(&self, other: &RcOc) -> bool { + **self > **other + } + + #[inline(always)] + fn ge(&self, other: &RcOc) -> bool { + **self >= **other + } +} + +impl Ord for RcOc { + #[inline] + fn cmp(&self, other: &RcOc) -> Ordering { + (**self).cmp(&**other) + } +} + +impl Hash for RcOc { + fn hash(&self, state: &mut H) { + (**self).hash(state); + } +} + +impl fmt::Display for RcOc { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl fmt::Debug for RcOc { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl fmt::Pointer for RcOc { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Pointer::fmt(&(&**self as *const T), f) + } +} + +impl ToOcamlRep for RcOc { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let generation = alloc.generation(); + match self.get_cached_value_in_generation(generation) { + Some(value) => unsafe { Value::from_bits(value) }, + None => { + let value = alloc.add(self.as_ref()); + self.set_cached_value(value.to_bits(), generation); + value + } + } + } +} + +impl FromOcamlRep for RcOc { + fn from_ocamlrep(value: Value<'_>) -> Result { + // NB: We don't get any sharing this way. + Ok(RcOc::new(T::from_ocamlrep(value)?)) + } +} + +impl<'a, T: FromOcamlRep> crate::FromOcamlRepIn<'a> for RcOc { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a Bump) -> Result { + Self::from_ocamlrep(value) + } +} + +impl Serialize for RcOc { + #[inline] + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + (**self).serialize(serializer) + } +} + +impl<'de, T: Deserialize<'de>> Deserialize<'de> for RcOc { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + // NB: We don't get any sharing this way. + // FWIW, looks like serde doesn't preserve sharing for Rc either. + // https://github.com/serde-rs/serde/blob/a00aee14950baca7de2e334b895e203b013712da/serde/src/de/impls.rs#L1806-L1808 + Deserialize::deserialize(deserializer).map(RcOc::new) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root.rs new file mode 100644 index 00000000000..cbb8d732a31 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root.rs @@ -0,0 +1,196 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![cfg(test)] + +use ocamlrep::Allocator; +use ocamlrep::Arena; +use ocamlrep::FromOcamlRep; +use ocamlrep::ToOcamlRep; + +#[test] +fn shared_str() { + // Without `add_root`, converting this tuple would convert the string + // "hello" to its OCaml representation and copy it into the ocamlrep::Arena + // twice. + let arena = Arena::new(); + let s = "hello"; + let tuple = (s, s); + let ocaml_tuple = arena.add_root(&tuple); + let ocaml_block = ocaml_tuple.as_block().unwrap(); + + assert_eq!( + ocaml_block[0].as_str(), + Some(std::borrow::Cow::Borrowed("hello")) + ); + assert_eq!( + ocaml_block[1].as_str(), + Some(std::borrow::Cow::Borrowed("hello")) + ); + + // The string pointer in the first field is physically equal to the string + // pointer in the second field. + assert_eq!(ocaml_block[0].to_bits(), ocaml_block[1].to_bits()); +} + +#[test] +fn shared_slice() { + // Without `add_root`, converting this tuple would convert the list to its + // OCaml representation and copy it into the ocamlrep::Arena twice. + let arena = Arena::new(); + let s = &[1usize, 2, 3][..]; + let tuple = (s, s); + let ocaml_tuple = arena.add_root(&tuple); + + assert_eq!( + <(Vec, Vec)>::from_ocamlrep(ocaml_tuple), + Ok((vec![1, 2, 3], vec![1, 2, 3])) + ); + + // The list pointer in the first field is physically equal to the list + // pointer in the second field. + let ocaml_block = ocaml_tuple.as_block().unwrap(); + assert_eq!(ocaml_block[0].to_bits(), ocaml_block[1].to_bits()); +} + +#[test] +fn overlapping_substrs() { + // Without `Allocator::memoized_slice`, a naive implementation of + // `ToOcamlRep` for slices might use `Allocator::memoized`, failing to take + // the slice length into consideration. + // Then we'd incorrectly produce the tuple ("hello", "hello"). + let arena = Arena::new(); + let s1 = "hello"; + let s2 = &s1[..4]; + let tuple = (s1, s2); + let ocaml_tuple = arena.add_root(&tuple); + + assert_eq!( + <(String, String)>::from_ocamlrep(ocaml_tuple), + Ok((String::from("hello"), String::from("hell"))) + ); +} + +#[test] +fn overlapping_subslices() { + // Without `Allocator::memoized_slice`, a naive implementation of + // `ToOcamlRep` for slices might use `Allocator::memoized`, failing to take + // the slice length into consideration. + // Then we'd incorrectly produce the tuple ([1,2,3], [1,2,3]). + let arena = Arena::new(); + let s1 = &[1usize, 2, 3][..]; + let s2 = &s1[..2]; + let tuple = (s1, s2); + let ocaml_tuple = arena.add_root(&tuple); + + assert_eq!( + <(Vec, Vec)>::from_ocamlrep(ocaml_tuple), + Ok((vec![1, 2, 3], vec![1, 2])) + ); +} + +#[derive(Debug, PartialEq)] +#[repr(transparent)] +struct U32Pair(u64); + +impl U32Pair { + fn new(fst: u32, snd: u32) -> Self { + let fst = fst as u64; + let snd = snd as u64; + Self(fst << 32 | snd) + } + fn fst(&self) -> u32 { + (self.0 >> 32) as u32 + } + fn snd(&self) -> u32 { + self.0 as u32 + } + fn inner(&self) -> &u64 { + &self.0 + } +} +impl ToOcamlRep for U32Pair { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> ocamlrep::Value<'a> { + let mut block = alloc.block_with_size(2); + alloc.set_field(&mut block, 0, alloc.add_copy(self.fst())); + alloc.set_field(&mut block, 1, alloc.add_copy(self.snd())); + block.build() + } +} +impl FromOcamlRep for U32Pair { + fn from_ocamlrep(value: ocamlrep::Value<'_>) -> Result { + let (fst, snd) = <(u32, u32)>::from_ocamlrep(value)?; + Ok(Self::new(fst, snd)) + } +} + +#[test] +fn differently_typed_views_of_same_data() { + // `Allocator::memoized` is keyed solely off of address and size in bytes. + // If we have two views of the same bytes, but the views have two different + // OCaml representations, then `Allocator::add_root` will produce an OCaml + // value with an unexpected type. + // + // Here, `pair_as_int` gets converted first, and memoized. Since its address + // and size are the same as `pair`, the allocator uses the same memoized + // OCaml value for both. But the implementations of `ToOcamlRep` and + // `FromOcamlRep` for U32Pair specify that the OCaml representation is a + // tuple, not an immediate integer, so we encounter an error when trying to + // convert the OCaml value to `(u64, U32Pair)`. + let arena = Arena::new(); + let pair = &U32Pair::new(1, 2); + let pair_as_int = pair.inner(); + let value = (pair_as_int, pair); + + use ocamlrep::FromError::*; + assert_eq!( + <(u64, U32Pair)>::from_ocamlrep(arena.add_root(&value)), + Err(ErrorInField(1, Box::new(ExpectedBlock(1 << 32 | 2)))) + ); + + // Using arena.add instead produces a correct result. + assert_eq!( + <(u64, U32Pair)>::from_ocamlrep(arena.add(&value)), + Ok((1 << 32 | 2, U32Pair::new(1, 2))) + ); +} + +#[test] +fn shared_rcs() { + use std::rc::Rc; + + let arena = Arena::new(); + let inner_tuple = Rc::new((1, 2)); + let outer_tuple = Rc::new((Rc::clone(&inner_tuple), inner_tuple)); + let ocaml_tuple = arena.add_root(&outer_tuple); + let outer_tuple = ocaml_tuple.as_block().unwrap(); + + // The tuple pointer in the first field is physically equal to the tuple + // pointer in the second field. + assert_eq!(outer_tuple[0].to_bits(), outer_tuple[1].to_bits()); + + let inner_tuple = outer_tuple[0].as_block().unwrap(); + assert_eq!(inner_tuple[0].as_int(), Some(1)); + assert_eq!(inner_tuple[1].as_int(), Some(2)); +} + +#[test] +fn shared_arcs() { + use std::sync::Arc; + + let arena = Arena::new(); + let inner_tuple = Arc::new((1, 2)); + let outer_tuple = Arc::new((Arc::clone(&inner_tuple), inner_tuple)); + let ocaml_tuple = arena.add_root(&outer_tuple); + let outer_tuple = ocaml_tuple.as_block().unwrap(); + + // The tuple pointer in the first field is physically equal to the tuple + // pointer in the second field. + assert_eq!(outer_tuple[0].to_bits(), outer_tuple[1].to_bits()); + + let inner_tuple = outer_tuple[0].as_block().unwrap(); + assert_eq!(inner_tuple[0].as_int(), Some(1)); + assert_eq!(inner_tuple[1].as_int(), Some(2)); +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root/Cargo.toml new file mode 100644 index 00000000000..6f113e4267b --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_add_root/Cargo.toml @@ -0,0 +1,16 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep/test:test_add_root + +[package] +name = "test_add_root" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "../test_add_root.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dev-dependencies] +ocamlrep = { path = "../.." } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings.rs new file mode 100644 index 00000000000..ea5f32a00f6 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings.rs @@ -0,0 +1,361 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. +#![feature(exit_status_error)] + +use std::cell::RefCell; +use std::collections::BTreeMap; +use std::collections::BTreeSet; + +use ocamlrep::FromOcamlRep; +use ocamlrep::ToOcamlRep; + +fn val(value: T) -> usize { + let arena = Box::leak(Box::new(ocamlrep::Arena::new())); + let value = arena.add(&value); + // Round-trip back to T to exercise from_ocamlrep. + let value = T::from_ocamlrep(value).unwrap(); + let value = arena.add(&value); + value.to_bits() +} + +/// # Safety +/// `value` must be a valid pointer to an OCaml value. +#[no_mangle] +pub unsafe extern "C" fn convert_to_ocamlrep(value: usize) -> usize { + let arena = Box::leak(Box::new(ocamlrep::Arena::new())); + let value = ocamlrep::Value::from_bits(value); + let value = value.clone_with_allocator(arena); + value.to_bits() +} + +#[no_mangle] +pub extern "C" fn realloc_in_ocaml_heap(value: usize) -> usize { + let value = unsafe { ocamlrep::Value::from_bits(value) }; + let pool = unsafe { ocamlrep_ocamlpool::Pool::new() }; + value.clone_with_allocator(&pool).to_bits() +} + +// Primitive Tests + +#[no_mangle] +pub extern "C" fn get_a(_unit: usize) -> usize { + val('a') +} + +#[no_mangle] +pub extern "C" fn get_five(_unit: usize) -> usize { + val(5) +} + +#[no_mangle] +pub extern "C" fn get_true(_unit: usize) -> usize { + val(true) +} + +#[no_mangle] +pub extern "C" fn get_false(_unit: usize) -> usize { + val(false) +} + +// Option Tests + +#[no_mangle] +pub extern "C" fn get_none(_unit: usize) -> usize { + val(None::) +} + +#[no_mangle] +pub extern "C" fn get_some_five(_unit: usize) -> usize { + val(Some(5)) +} + +#[no_mangle] +pub extern "C" fn get_some_none(_unit: usize) -> usize { + val(Some(None::)) +} + +#[no_mangle] +pub extern "C" fn get_some_some_five(_unit: usize) -> usize { + val(Some(Some(5))) +} + +// Ref tests + +#[no_mangle] +pub extern "C" fn get_int_ref(_unit: usize) -> usize { + val(RefCell::new(5)) +} + +#[no_mangle] +pub extern "C" fn get_int_option_ref(_unit: usize) -> usize { + val(RefCell::new(Some(5))) +} + +// Unsized type tests + +#[no_mangle] +pub extern "C" fn get_str(_unit: usize) -> usize { + let arena = Box::leak(Box::new(ocamlrep::Arena::new())); + arena.add("static str").to_bits() +} + +#[no_mangle] +pub extern "C" fn get_byte_slice(_unit: usize) -> usize { + let arena = Box::leak(Box::new(ocamlrep::Arena::new())); + arena.add(&b"byte\x00\xFFslice"[..]).to_bits() +} + +#[no_mangle] +pub extern "C" fn get_int_opt_slice(_unit: usize) -> usize { + let arena = Box::leak(Box::new(ocamlrep::Arena::new())); + let vec = [None, Some(2), Some(3)]; + let slice = &vec[..]; + arena.add(slice).to_bits() +} + +// List Tests + +#[no_mangle] +pub extern "C" fn get_empty_list(_unit: usize) -> usize { + val(Vec::::new()) +} + +#[no_mangle] +pub extern "C" fn get_five_list(_unit: usize) -> usize { + val(vec![5]) +} + +#[no_mangle] +pub extern "C" fn get_one_two_three_list(_unit: usize) -> usize { + val(vec![1, 2, 3]) +} + +#[no_mangle] +pub extern "C" fn get_float_list(_unit: usize) -> usize { + val(vec![1.0, 2.0, 3.0]) +} + +// Struct tests + +#[derive(FromOcamlRep, ToOcamlRep)] +struct Foo { + a: isize, + b: bool, +} + +#[derive(FromOcamlRep, ToOcamlRep)] +struct Bar { + c: Foo, + d: Option>>, +} + +#[no_mangle] +pub extern "C" fn get_foo(_unit: usize) -> usize { + val(Foo { a: 25, b: true }) +} + +#[no_mangle] +pub extern "C" fn get_bar(_unit: usize) -> usize { + val(Bar { + c: Foo { a: 42, b: false }, + d: Some(vec![Some(88), None, Some(66)]), + }) +} + +// String Tests + +#[no_mangle] +pub extern "C" fn get_empty_string(_unit: usize) -> usize { + val(String::from("")) +} + +#[no_mangle] +pub extern "C" fn get_a_string(_unit: usize) -> usize { + val(String::from("a")) +} + +#[no_mangle] +pub extern "C" fn get_ab_string(_unit: usize) -> usize { + val(String::from("ab")) +} + +#[no_mangle] +pub extern "C" fn get_abcde_string(_unit: usize) -> usize { + val(String::from("abcde")) +} + +#[no_mangle] +pub extern "C" fn get_abcdefg_string(_unit: usize) -> usize { + val(String::from("abcdefg")) +} + +#[no_mangle] +pub extern "C" fn get_abcdefgh_string(_unit: usize) -> usize { + val(String::from("abcdefgh")) +} + +#[no_mangle] +pub extern "C" fn get_zero_float(_unit: usize) -> usize { + val(0.0_f64) +} + +#[no_mangle] +pub extern "C" fn get_one_two_float(_unit: usize) -> usize { + val(1.2_f64) +} + +// Variant tests + +#[derive(FromOcamlRep, ToOcamlRep)] +enum Fruit { + Apple, + Orange(isize), + Pear { num: isize }, + Kiwi, +} + +#[no_mangle] +pub extern "C" fn get_apple(_unit: usize) -> usize { + val(Fruit::Apple) +} + +#[no_mangle] +pub extern "C" fn get_orange(_unit: usize) -> usize { + val(Fruit::Orange(39)) +} + +#[no_mangle] +pub extern "C" fn get_pear(_unit: usize) -> usize { + val(Fruit::Pear { num: 76 }) +} + +#[no_mangle] +pub extern "C" fn get_kiwi(_unit: usize) -> usize { + val(Fruit::Kiwi) +} + +// Map tests + +#[no_mangle] +pub extern "C" fn get_empty_smap(_unit: usize) -> usize { + let map: BTreeMap = BTreeMap::new(); + val(map) +} + +#[no_mangle] +pub extern "C" fn get_int_smap_singleton(_unit: usize) -> usize { + let mut map = BTreeMap::new(); + map.insert(String::from("a"), 1); + val(map) +} + +#[no_mangle] +pub extern "C" fn get_int_smap(_unit: usize) -> usize { + let mut map = BTreeMap::new(); + map.insert(String::from("a"), 1); + map.insert(String::from("b"), 2); + map.insert(String::from("c"), 3); + val(map) +} + +// Set tests + +#[no_mangle] +pub extern "C" fn get_empty_sset(_unit: usize) -> usize { + let set: BTreeSet = BTreeSet::new(); + val(set) +} + +#[no_mangle] +pub extern "C" fn get_sset_singleton(_unit: usize) -> usize { + let mut set = BTreeSet::new(); + set.insert(String::from("a")); + val(set) +} + +#[no_mangle] +pub extern "C" fn get_sset(_unit: usize) -> usize { + let mut set = BTreeSet::new(); + set.insert(String::from("a")); + set.insert(String::from("b")); + set.insert(String::from("c")); + val(set) +} + +#[no_mangle] +pub extern "C" fn roundtrip_int64(value: usize) -> usize { + let i = unsafe { ocamlrep_caml_builtins::Int64::from_ocaml(value).unwrap() }; + val(i) +} + +// Hack! Trick buck into believing that these libraries are used. See [Note: +// Test blocks for Cargo] in `ocamlrep_ocamlpool/test/ocamlpool_test.rs`. +const _: () = { + #[allow(unused_imports)] + use anyhow; + #[allow(unused_imports)] + use cargo_test_utils; + #[allow(unused_imports)] + use tempfile; +}; + +#[cfg(test)] +mod tests { + use anyhow::Result; + use cargo_test_utils::*; + use tempfile::TempDir; + + #[test] + fn ocamlrep_test() -> Result<()> { + let parent = std::path::Path::new(".."); + let tmp_dir = TempDir::with_prefix("ocamlrep_test.")?; + std::fs::copy( + parent.join("test_ocamlrep.ml"), + tmp_dir.path().join("test_ocamlrep.ml"), + )?; + let compile_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-c", + "test_ocamlrep.ml", + "-o", + "test_ocamlrep_ml.cmx", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(compile_cmd).map_err(fmt_exit_status_err), Ok(())); + let link_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-o", + "ocamlrep_test", + "test_ocamlrep_ml.cmx", + "-ccopt", + &("-L".to_owned() + workspace_dir(&["target", build_flavor()]).to_str().unwrap()), + "-cclib", + "-ltest_bindings", + "-cclib", + "-locamlrep_ocamlpool", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(link_cmd).map_err(fmt_exit_status_err), Ok(())); + let ocamlrep_test_cmd = cmd( + tmp_dir + .path() + .join("ocamlrep_test") + .as_path() + .to_str() + .unwrap(), + &[], + None, + ); + assert_eq!(run(ocamlrep_test_cmd).map_err(fmt_exit_status_err), Ok(())); + tmp_dir.close()?; + Ok(()) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings/Cargo.toml new file mode 100644 index 00000000000..9aab428be2a --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_bindings/Cargo.toml @@ -0,0 +1,21 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep/test:test_bindings + +[package] +name = "test_bindings" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "../test_bindings.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dependencies] +anyhow = "1.0.75" +cargo_test_utils = { path = "../../../cargo_test_utils" } +ocamlrep = { path = "../.." } +ocamlrep_caml_builtins = { path = "../../../ocamlrep_caml_builtins" } +ocamlrep_ocamlpool = { path = "../../../ocamlrep_ocamlpool" } +tempfile = "3.8" diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep.rs new file mode 100644 index 00000000000..bbaf2ba5e88 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep.rs @@ -0,0 +1,235 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![cfg(test)] + +use ocamlrep::Allocator; +use ocamlrep::Arena; +use ocamlrep::FromError::*; +use ocamlrep::FromOcamlRep; +use ocamlrep::ToOcamlRep; +use ocamlrep::Value; + +#[test] +fn expected_block_but_got_int() { + let value = Value::int(42); + let err = <(isize, isize)>::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ExpectedBlock(42)); +} + +#[test] +fn expected_int_but_got_block() { + let arena = Arena::new(); + let value = arena.block_with_size_and_tag(1, 0).build(); + let err = isize::from_ocamlrep(value).err().unwrap(); + match err { + ExpectedInt(..) => {} + _ => panic!("unexpected error: {}", err), + } +} + +#[test] +fn wrong_tag_for_none() { + let value = Value::int(1); + let err = >::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, NullaryVariantTagOutOfRange { max: 0, actual: 1 }); +} + +#[test] +fn wrong_tag_for_some() { + let arena = Arena::new(); + let value = arena.block_with_size_and_tag(1, 1).build(); + let err = >::from_ocamlrep(value).err().unwrap(); + assert_eq!( + err, + ExpectedBlockTag { + expected: 0, + actual: 1 + } + ); +} + +#[test] +fn out_of_bool_range() { + let value = Value::int(42); + let err = bool::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ExpectedBool(42)); +} + +#[test] +fn out_of_char_range() { + let value = Value::int(-1); + let err = char::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ExpectedChar(-1)); +} + +#[derive(FromOcamlRep, ToOcamlRep)] +struct Foo { + a: isize, + b: bool, +} + +#[test] +fn bad_struct_field() { + let arena = Arena::new(); + let value = { + let mut block = arena.block_with_size_and_tag(2, 0); + arena.set_field(&mut block, 0, Value::int(0)); + arena.set_field(&mut block, 1, Value::int(42)); + block.build() + }; + let err = Foo::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ErrorInField(1, Box::new(ExpectedBool(42)))); +} + +#[derive(FromOcamlRep, ToOcamlRep)] +struct Bar { + c: Foo, + d: Option>>, +} + +#[test] +fn bad_nested_struct_field() { + let arena = Arena::new(); + + let inner = { + let mut block = arena.block_with_size_and_tag(2, 0); + arena.set_field(&mut block, 0, Value::int(0)); + arena.set_field(&mut block, 1, Value::int(42)); + block.build() + }; + + let outer = { + let mut block = arena.block_with_size_and_tag(2, 0); + arena.set_field(&mut block, 0, inner); + arena.set_field(&mut block, 1, Value::int(0)); + block.build() + }; + + let err = Bar::from_ocamlrep(outer).err().unwrap(); + assert_eq!( + err, + ErrorInField(0, Box::new(ErrorInField(1, Box::new(ExpectedBool(42))))) + ); +} + +#[derive(FromOcamlRep, ToOcamlRep)] +struct UnitStruct; + +#[test] +fn expected_unit_struct_but_got_nonzero() { + let value = Value::int(42); + let err = UnitStruct::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ExpectedUnit(42)); +} + +#[test] +fn expected_unit_struct_but_got_block() { + let arena = Arena::new(); + let value = arena.block_with_size_and_tag(1, 0).build(); + let err = UnitStruct::from_ocamlrep(value).err().unwrap(); + match err { + ExpectedInt(..) => {} + _ => panic!("unexpected error: {}", err), + } +} + +#[derive(FromOcamlRep, ToOcamlRep)] +struct WrapperStruct(bool); + +#[test] +fn bad_value_in_wrapper_struct() { + let value = Value::int(42); + let err = WrapperStruct::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, ExpectedBool(42)) +} + +#[derive(Debug, PartialEq, FromOcamlRep, ToOcamlRep)] +enum Fruit { + Apple, + Orange(bool), + Pear { is_tasty: bool }, + Kiwi, + Peach(Box<(isize, bool)>), +} + +#[test] +fn nullary_variant_tag_out_of_range() { + let value = Value::int(42); + let err = Fruit::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, NullaryVariantTagOutOfRange { max: 1, actual: 42 }); +} + +#[test] +fn block_variant_tag_out_of_range() { + let arena = Arena::new(); + let value = arena.block_with_size_and_tag(1, 42).build(); + let err = Fruit::from_ocamlrep(value).err().unwrap(); + assert_eq!(err, BlockTagOutOfRange { max: 2, actual: 42 }); +} + +#[test] +fn wrong_block_variant_size() { + let arena = Arena::new(); + let value = arena.block_with_size_and_tag(42, 0).build(); + let err = Fruit::from_ocamlrep(value).err().unwrap(); + assert_eq!( + err, + WrongBlockSize { + expected: 1, + actual: 42 + } + ); +} + +#[test] +fn bad_tuple_variant_value() { + let arena = Arena::new(); + let orange = { + let mut orange = arena.block_with_size_and_tag(1, 0); + arena.set_field(&mut orange, 0, Value::int(42)); + orange.build() + }; + let err = Fruit::from_ocamlrep(orange).err().unwrap(); + assert_eq!(err, ErrorInField(0, Box::new(ExpectedBool(42)))); +} + +#[test] +fn bad_struct_variant_value() { + let arena = Arena::new(); + let pear = { + let mut pear = arena.block_with_size_and_tag(1, 1); + arena.set_field(&mut pear, 0, Value::int(42)); + pear.build() + }; + let err = Fruit::from_ocamlrep(pear).err().unwrap(); + assert_eq!(err, ErrorInField(0, Box::new(ExpectedBool(42)))); +} + +#[test] +fn good_boxed_tuple_variant() { + let arena = Arena::new(); + let peach = { + let mut peach = arena.block_with_size_and_tag(2, 2); + arena.set_field(&mut peach, 0, Value::int(42)); + arena.set_field(&mut peach, 1, Value::int(1)); + peach.build() + }; + let peach = Fruit::from_ocamlrep(peach); + assert_eq!(peach, Ok(Fruit::Peach(Box::new((42, true))))); +} + +#[test] +fn round_trip_through_ocaml_value_unsigned_int() { + let num = 7334234036144964024u64; + let value = Value::int(num as isize); + let num_int: isize = ocamlrep::from::expect_int(value).ok().unwrap(); + let num_uint: usize = + !(1usize << 63) & ocamlrep::from::expect_int(value).ok().unwrap() as usize; + + assert!(num_int < 0); + assert_eq!((num_int as u64) & !(1 << 63), num); + assert_eq!(num_uint as u64, num); +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep/Cargo.toml new file mode 100644 index 00000000000..e0da327c4d1 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep/Cargo.toml @@ -0,0 +1,16 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep/test:test_from_ocamlrep + +[package] +name = "test_from_ocamlrep" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "../test_from_ocamlrep.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dev-dependencies] +ocamlrep = { path = "../.." } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in.rs new file mode 100644 index 00000000000..1d5f8724439 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in.rs @@ -0,0 +1,86 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![cfg(test)] + +use std::fmt::Debug; + +use bumpalo::Bump; +use ocamlrep::FromOcamlRepIn; +use ocamlrep::ToOcamlRep; + +fn test_round_trip<'a, T>(bump: &'a Bump, rust_value: T) +where + T: FromOcamlRepIn<'a> + ToOcamlRep + Debug + PartialEq, +{ + let arena = ocamlrep::Arena::new(); + let ocaml_value = arena.add(&rust_value); + assert_eq!(T::from_ocamlrep_in(ocaml_value, bump), Ok(rust_value)); +} + +#[test] +fn convert_primitives() { + let bump = &Bump::new(); + + test_round_trip(bump, ()); + test_round_trip(bump, 1isize); + test_round_trip(bump, 2usize); + test_round_trip(bump, 3i64); + test_round_trip(bump, 4u64); + test_round_trip(bump, 5i32); + test_round_trip(bump, 6u32); + test_round_trip(bump, true); + test_round_trip(bump, false); + test_round_trip(bump, 'a'); + test_round_trip(bump, 7.7f64); +} + +#[test] +fn convert_std_types() { + let bump = &Bump::new(); + + test_round_trip(bump, None::); + test_round_trip(bump, Some(&*bump.alloc(5usize))); + test_round_trip(bump, Ok::<&str, &str>("okay")); + test_round_trip(bump, Err::<&str, &str>("error")); +} + +#[derive(Debug, FromOcamlRepIn, ToOcamlRep, PartialEq)] +struct Foo<'a> { + bar: &'a usize, + baz: usize, +} + +#[test] +fn convert_struct_with_ref() { + let bump = &Bump::new(); + test_round_trip( + bump, + Foo { + bar: bump.alloc(3), + baz: 4, + }, + ); +} + +#[derive(Debug, FromOcamlRepIn, ToOcamlRep, PartialEq)] +enum Fruit<'a> { + Apple, + Orange(&'a str), + Pear { is_tasty: bool }, + Kiwi, + Peach(&'a (isize, bool)), +} + +#[test] +fn convert_str_variant() { + test_round_trip(&Bump::new(), Fruit::Orange("mandarin")); +} + +#[test] +fn convert_boxed_tuple_variant() { + let bump = &Bump::new(); + test_round_trip(bump, Fruit::Peach(bump.alloc((42, true)))); +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in/Cargo.toml new file mode 100644 index 00000000000..a981f64eee1 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_from_ocamlrep_in/Cargo.toml @@ -0,0 +1,17 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep/test:test_from_ocamlrep_in + +[package] +name = "test_from_ocamlrep_in" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "../test_from_ocamlrep_in.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dev-dependencies] +bumpalo = { version = "3.14.0", features = ["allocator_api", "collections"] } +ocamlrep = { path = "../.." } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_ocamlrep.ml b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_ocamlrep.ml new file mode 100644 index 00000000000..29bc61f5f64 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/test/test_ocamlrep.ml @@ -0,0 +1,830 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + *) + +(* primitive tests *) +external get_a : unit -> char = "get_a" + +external get_five : unit -> int = "get_five" + +external get_true : unit -> bool = "get_true" + +external get_false : unit -> bool = "get_false" + +(* option tests *) +external get_none : unit -> int option = "get_none" + +external get_some_five : unit -> int option = "get_some_five" + +external get_some_none : unit -> int option option = "get_some_none" + +external get_some_some_five : unit -> int option option = "get_some_some_five" + +(* ref tests *) +external get_int_ref : unit -> int ref = "get_int_ref" + +external get_int_option_ref : unit -> int option ref = "get_int_option_ref" + +(* unsized type tests *) +external get_str : unit -> string = "get_str" + +external get_byte_slice : unit -> Stdlib.Bytes.t = "get_byte_slice" + +external get_int_opt_slice : unit -> int option list = "get_int_opt_slice" + +(* list tests *) +external get_empty_list : unit -> int list = "get_empty_list" + +external get_five_list : unit -> int list = "get_five_list" + +external get_one_two_three_list : unit -> int list = "get_one_two_three_list" + +external get_float_list : unit -> float list = "get_float_list" + +(* struct tests *) +type foo = { + a: int; + b: bool; +} + +type bar = { + c: foo; + d: int option list option; +} + +external get_foo : unit -> foo = "get_foo" + +external get_bar : unit -> bar = "get_bar" + +(* string tests *) +external get_empty_string : unit -> string = "get_empty_string" + +external get_a_string : unit -> string = "get_a_string" + +external get_ab_string : unit -> string = "get_ab_string" + +external get_abcde_string : unit -> string = "get_abcde_string" + +external get_abcdefg_string : unit -> string = "get_abcdefg_string" + +external get_abcdefgh_string : unit -> string = "get_abcdefgh_string" + +(* float tests *) +external get_zero_float : unit -> float = "get_zero_float" + +external get_one_two_float : unit -> float = "get_one_two_float" + +(* variant tests *) +type fruit = + | Apple + | Orange of int + | Pear of { num: int } + | Kiwi + +external get_apple : unit -> fruit = "get_apple" + +external get_orange : unit -> fruit = "get_orange" + +external get_pear : unit -> fruit = "get_pear" + +external get_kiwi : unit -> fruit = "get_kiwi" + +(* map tests *) + +module SMap = Stdlib.Map.Make (struct + type t = string + + let compare = String.compare +end) + +external get_empty_smap : unit -> 'a SMap.t = "get_empty_smap" + +external get_int_smap_singleton : unit -> int SMap.t = "get_int_smap_singleton" + +external get_int_smap : unit -> int SMap.t = "get_int_smap" + +(* set tests *) + +module SSet = Stdlib.Set.Make (struct + type t = string + + let compare = String.compare +end) + +external get_empty_sset : unit -> SSet.t = "get_empty_sset" + +external get_sset_singleton : unit -> SSet.t = "get_sset_singleton" + +external get_sset : unit -> SSet.t = "get_sset" + +external convert_to_ocamlrep : 'a -> 'a = "convert_to_ocamlrep" + +external realloc_in_ocaml_heap : 'a -> 'a = "realloc_in_ocaml_heap" + +(* int64 tests *) +external roundtrip_int64 : Int64.t -> Int64.t = "roundtrip_int64" + +let test_int64 () = + let cases = [Int64.max_int; Int64.min_int; 2L; 0xfaceb00cL] in + List.iter (fun x -> assert (Int64.equal (roundtrip_int64 x) x)) cases + +let test_char () = + let x = get_a () in + assert (Char.equal x 'a') + +let test_int () = + let x = get_five () in + assert (x = 5) + +let test_true () = + let x = get_true () in + assert x + +let test_false () = + let x = get_false () in + assert (not x) + +let test_none () = + let opt = get_none () in + assert (Option.is_none opt) + +let test_some () = + let opt = get_some_five () in + match opt with + | None -> assert false + | Some x -> assert (x = 5) + +let test_some_none () = + let opt = get_some_none () in + match opt with + | None -> assert false + | Some x -> assert (Option.is_none x) + +let test_some_some_five () = + let opt = get_some_some_five () in + match opt with + | None -> assert false + | Some x -> + (match x with + | None -> assert false + | Some y -> assert (y = 5)) + +let test_int_ref () = + let int_ref = get_int_ref () in + assert (!int_ref = 5) + +let test_int_option_ref () = + let int_opt_ref = get_int_option_ref () in + match !int_opt_ref with + | Some 5 -> () + | _ -> assert false + +let test_str () = + let s = get_str () in + assert (String.equal s "static str") + +let test_byte_slice () = + let b = get_byte_slice () in + assert (String.equal (Stdlib.Bytes.sub_string b 0 4) "byte"); + assert (Char.equal (Stdlib.Bytes.get b 4) '\x00'); + assert (Char.equal (Stdlib.Bytes.get b 5) '\xFF'); + assert (String.equal (Stdlib.Bytes.sub_string b 6 5) "slice") + +let test_int_opt_slice () = + match get_int_opt_slice () with + | [None; Some 2; Some 3] -> () + | _ -> assert false + +let test_empty_list () = + let lst = get_empty_list () in + assert (List.length lst = 0); + match lst with + | [] -> () + | _ -> assert false + +let test_five_list () = + let lst = get_five_list () in + assert (List.length lst = 1); + match lst with + | [5] -> () + | _ -> assert false + +let test_one_two_three_list () = + match get_one_two_three_list () with + | [1; 2; 3] -> () + | _ -> assert false + +let test_float_list () = + match get_float_list () with + | [1.0; 2.0; 3.0] -> () + | _ -> assert false + +let test_foo () = + match get_foo () with + | { a = 25; b = true } -> () + | _ -> assert false + +let test_bar () = + match get_bar () with + | { c = { a = 42; b = false }; d = Some [Some 88; None; Some 66] } -> () + | _ -> assert false + +let test_empty_string () = + let s = get_empty_string () in + assert (String.length s = 0); + assert (String.equal s "") + +let test_a_string () = + let s = get_a_string () in + assert (String.length s = 1); + assert (String.equal s "a") + +let test_ab_string () = + let s = get_ab_string () in + assert (String.length s = 2); + assert (String.equal s "ab") + +let test_abcde_string () = + let s = get_abcde_string () in + assert (String.length s = 5); + assert (String.equal s "abcde") + +let test_abcdefg_string () = + let s = get_abcdefg_string () in + assert (String.length s = 7); + assert (String.equal s "abcdefg") + +let test_abcdefgh_string () = + let s = get_abcdefgh_string () in + assert (String.length s = 8); + assert (String.equal s "abcdefgh") + +let float_compare f1 f2 = + let abs_diff = Float.abs (f1 -. f2) in + abs_diff < 0.0001 + +let test_zero_float () = + let f = get_zero_float () in + assert (float_compare f 0.) + +let test_one_two_float () = + let f = get_one_two_float () in + assert (float_compare f 1.2) + +let test_apple () = + assert ( + match get_apple () with + | Apple -> true + | _ -> false) + +let test_kiwi () = + assert ( + match get_kiwi () with + | Kiwi -> true + | _ -> false) + +let test_orange () = + match get_orange () with + | Orange 39 -> () + | _ -> assert false + +let test_pear () = + match get_pear () with + | Pear { num = 76 } -> () + | _ -> assert false + +let test_empty_smap () = + match SMap.bindings (get_empty_smap ()) with + | [] -> () + | _ -> assert false + +let test_int_smap_singleton () = + match SMap.bindings (get_int_smap_singleton ()) with + | [("a", 1)] -> () + | _ -> assert false + +let test_int_smap () = + match SMap.bindings (get_int_smap ()) with + | [("a", 1); ("b", 2); ("c", 3)] -> () + | _ -> assert false + +let test_empty_sset () = + match SSet.elements (get_empty_sset ()) with + | [] -> () + | _ -> assert false + +let test_sset_singleton () = + match SSet.elements (get_sset_singleton ()) with + | ["a"] -> () + | _ -> assert false + +let test_sset () = + match SSet.elements (get_sset ()) with + | ["a"; "b"; "c"] -> () + | _ -> assert false + +(* Conversion tests *) + +let test_convert_char () = + let x = convert_to_ocamlrep 'a' in + assert (Char.equal x 'a') + +let test_convert_int () = + let x = convert_to_ocamlrep 5 in + assert (x = 5) + +let test_convert_true () = + let x = convert_to_ocamlrep true in + assert x + +let test_convert_false () = + let x = convert_to_ocamlrep false in + assert (not x) + +let test_convert_none () = + let opt = convert_to_ocamlrep None in + assert (Option.is_none opt) + +let test_convert_some () = + let opt = convert_to_ocamlrep (Some 5) in + match opt with + | None -> assert false + | Some x -> assert (x = 5) + +let test_convert_some_none () = + let opt = convert_to_ocamlrep (Some None) in + match opt with + | None -> assert false + | Some x -> assert (Option.is_none x) + +let test_convert_some_some_five () = + let opt = convert_to_ocamlrep (Some (Some 5)) in + match opt with + | None -> assert false + | Some x -> + (match x with + | None -> assert false + | Some y -> assert (y = 5)) + +let test_convert_int_ref () = + let int_ref = convert_to_ocamlrep (ref 5) in + assert (!int_ref = 5) + +let test_convert_int_option_ref () = + let int_opt_ref = convert_to_ocamlrep (ref (Some 5)) in + match !int_opt_ref with + | Some 5 -> () + | _ -> assert false + +let test_convert_empty_list () = + let lst = convert_to_ocamlrep [] in + assert (List.length lst = 0); + match lst with + | [] -> () + | _ -> assert false + +let test_convert_five_list () = + let lst = convert_to_ocamlrep [5] in + assert (List.length lst = 1); + match lst with + | [5] -> () + | _ -> assert false + +let test_convert_one_two_three_list () = + match convert_to_ocamlrep [1; 2; 3] with + | [1; 2; 3] -> () + | _ -> assert false + +let test_convert_float_list () = + match convert_to_ocamlrep [1.0; 2.0; 3.0] with + | [1.0; 2.0; 3.0] -> () + | _ -> assert false + +let test_convert_foo () = + match convert_to_ocamlrep { a = 25; b = true } with + | { a = 25; b = true } -> () + | _ -> assert false + +let test_convert_bar () = + match + convert_to_ocamlrep + { c = { a = 42; b = false }; d = Some [Some 88; None; Some 66] } + with + | { c = { a = 42; b = false }; d = Some [Some 88; None; Some 66] } -> () + | _ -> assert false + +let test_convert_empty_string () = + let s = convert_to_ocamlrep "" in + assert (String.length s = 0); + assert (String.equal s "") + +let test_convert_a_string () = + let s = convert_to_ocamlrep "a" in + assert (String.length s = 1); + assert (String.equal s "a") + +let test_convert_ab_string () = + let s = convert_to_ocamlrep "ab" in + assert (String.length s = 2); + assert (String.equal s "ab") + +let test_convert_abcde_string () = + let s = convert_to_ocamlrep "abcde" in + assert (String.length s = 5); + assert (String.equal s "abcde") + +let test_convert_abcdefg_string () = + let s = convert_to_ocamlrep "abcdefg" in + assert (String.length s = 7); + assert (String.equal s "abcdefg") + +let test_convert_abcdefgh_string () = + let s = convert_to_ocamlrep "abcdefgh" in + assert (String.length s = 8); + assert (String.equal s "abcdefgh") + +let float_compare f1 f2 = + let abs_diff = Float.abs (f1 -. f2) in + abs_diff < 0.0001 + +let test_convert_zero_float () = + let f = convert_to_ocamlrep 0. in + assert (float_compare f 0.) + +let test_convert_one_two_float () = + let f = convert_to_ocamlrep 1.2 in + assert (float_compare f 1.2) + +let test_convert_apple () = + assert ( + match convert_to_ocamlrep Apple with + | Apple -> true + | _ -> false) + +let test_convert_kiwi () = + assert ( + match convert_to_ocamlrep Kiwi with + | Kiwi -> true + | _ -> false) + +let test_convert_orange () = + match convert_to_ocamlrep (Orange 39) with + | Orange 39 -> () + | _ -> assert false + +let test_convert_pear () = + match convert_to_ocamlrep (Pear { num = 76 }) with + | Pear { num = 76 } -> () + | _ -> assert false + +let test_convert_empty_smap () = + match SMap.bindings (convert_to_ocamlrep SMap.empty) with + | [] -> () + | _ -> assert false + +let test_convert_int_smap_singleton () = + match SMap.bindings (convert_to_ocamlrep (SMap.singleton "a" 1)) with + | [("a", 1)] -> () + | _ -> assert false + +let test_convert_int_smap () = + let map = SMap.empty in + let map = SMap.add "a" 1 map in + let map = SMap.add "b" 2 map in + let map = SMap.add "c" 3 map in + match SMap.bindings (convert_to_ocamlrep map) with + | [("a", 1); ("b", 2); ("c", 3)] -> () + | _ -> assert false + +let test_convert_empty_sset () = + match SSet.elements (convert_to_ocamlrep SSet.empty) with + | [] -> () + | _ -> assert false + +let test_convert_sset_singleton () = + match SSet.elements (convert_to_ocamlrep (SSet.singleton "a")) with + | ["a"] -> () + | _ -> assert false + +let test_convert_sset () = + let set = SSet.empty in + let set = SSet.add "a" set in + let set = SSet.add "b" set in + let set = SSet.add "c" set in + match SSet.elements (convert_to_ocamlrep set) with + | ["a"; "b"; "c"] -> () + | _ -> assert false + +let test_convert_shared_value () = + let str = "foo" in + let tup = (str, str) in + let (str1, str2) = convert_to_ocamlrep tup in + assert (str1 == str2) + +let test_realloc_char () = + let x = realloc_in_ocaml_heap 'a' in + assert (Char.equal x 'a') + +let test_realloc_int () = + let x = realloc_in_ocaml_heap 5 in + assert (x = 5) + +let test_realloc_true () = + let x = realloc_in_ocaml_heap true in + assert x + +let test_realloc_false () = + let x = realloc_in_ocaml_heap false in + assert (not x) + +let test_realloc_none () = + let opt = realloc_in_ocaml_heap None in + assert (Option.is_none opt) + +let test_realloc_some () = + let opt = realloc_in_ocaml_heap (Some 5) in + match opt with + | None -> assert false + | Some x -> assert (x = 5) + +let test_realloc_some_none () = + let opt = realloc_in_ocaml_heap (Some None) in + match opt with + | None -> assert false + | Some x -> assert (Option.is_none x) + +let test_realloc_some_some_five () = + let opt = realloc_in_ocaml_heap (Some (Some 5)) in + match opt with + | None -> assert false + | Some x -> + (match x with + | None -> assert false + | Some y -> assert (y = 5)) + +let test_realloc_empty_list () = + let lst = realloc_in_ocaml_heap [] in + assert (List.length lst = 0); + match lst with + | [] -> () + | _ -> assert false + +let test_realloc_five_list () = + let lst = realloc_in_ocaml_heap [5] in + assert (List.length lst = 1); + match lst with + | [5] -> () + | _ -> assert false + +let test_realloc_one_two_three_list () = + match realloc_in_ocaml_heap [1; 2; 3] with + | [1; 2; 3] -> () + | _ -> assert false + +let test_realloc_float_list () = + match realloc_in_ocaml_heap [1.0; 2.0; 3.0] with + | [1.0; 2.0; 3.0] -> () + | _ -> assert false + +let test_realloc_foo () = + match realloc_in_ocaml_heap { a = 25; b = true } with + | { a = 25; b = true } -> () + | _ -> assert false + +let test_realloc_bar () = + match + realloc_in_ocaml_heap + { c = { a = 42; b = false }; d = Some [Some 88; None; Some 66] } + with + | { c = { a = 42; b = false }; d = Some [Some 88; None; Some 66] } -> () + | _ -> assert false + +let test_realloc_empty_string () = + let s = realloc_in_ocaml_heap "" in + assert (String.length s = 0); + assert (String.equal s "") + +let test_realloc_a_string () = + let s = realloc_in_ocaml_heap "a" in + assert (String.length s = 1); + assert (String.equal s "a") + +let test_realloc_ab_string () = + let s = realloc_in_ocaml_heap "ab" in + assert (String.length s = 2); + assert (String.equal s "ab") + +let test_realloc_abcde_string () = + let s = realloc_in_ocaml_heap "abcde" in + assert (String.length s = 5); + assert (String.equal s "abcde") + +let test_realloc_abcdefg_string () = + let s = realloc_in_ocaml_heap "abcdefg" in + assert (String.length s = 7); + assert (String.equal s "abcdefg") + +let test_realloc_abcdefgh_string () = + let s = realloc_in_ocaml_heap "abcdefgh" in + assert (String.length s = 8); + assert (String.equal s "abcdefgh") + +let float_compare f1 f2 = + let abs_diff = Float.abs (f1 -. f2) in + abs_diff < 0.0001 + +let test_realloc_zero_float () = + let f = realloc_in_ocaml_heap 0. in + assert (float_compare f 0.) + +let test_realloc_one_two_float () = + let f = realloc_in_ocaml_heap 1.2 in + assert (float_compare f 1.2) + +let test_realloc_apple () = + assert ( + match realloc_in_ocaml_heap Apple with + | Apple -> true + | _ -> false) + +let test_realloc_kiwi () = + assert ( + match realloc_in_ocaml_heap Kiwi with + | Kiwi -> true + | _ -> false) + +let test_realloc_orange () = + match realloc_in_ocaml_heap (Orange 39) with + | Orange 39 -> () + | _ -> assert false + +let test_realloc_pear () = + match realloc_in_ocaml_heap (Pear { num = 76 }) with + | Pear { num = 76 } -> () + | _ -> assert false + +let test_realloc_empty_smap () = + match SMap.bindings (realloc_in_ocaml_heap SMap.empty) with + | [] -> () + | _ -> assert false + +let test_realloc_int_smap_singleton () = + match SMap.bindings (realloc_in_ocaml_heap (SMap.singleton "a" 1)) with + | [("a", 1)] -> () + | _ -> assert false + +let test_realloc_int_smap () = + let map = SMap.empty in + let map = SMap.add "a" 1 map in + let map = SMap.add "b" 2 map in + let map = SMap.add "c" 3 map in + match SMap.bindings (realloc_in_ocaml_heap map) with + | [("a", 1); ("b", 2); ("c", 3)] -> () + | _ -> assert false + +let test_realloc_empty_sset () = + match SSet.elements (realloc_in_ocaml_heap SSet.empty) with + | [] -> () + | _ -> assert false + +let test_realloc_sset_singleton () = + match SSet.elements (realloc_in_ocaml_heap (SSet.singleton "a")) with + | ["a"] -> () + | _ -> assert false + +let test_realloc_sset () = + let set = SSet.empty in + let set = SSet.add "a" set in + let set = SSet.add "b" set in + let set = SSet.add "c" set in + match SSet.elements (realloc_in_ocaml_heap set) with + | ["a"; "b"; "c"] -> () + | _ -> assert false + +let test_realloc_shared_value () = + let str = "foo" in + let tup = (str, str) in + let (str1, str2) = realloc_in_ocaml_heap tup in + assert (str1 == str2) + +let test_cases = + [ + test_int64; + test_char; + test_int; + test_true; + test_false; + test_none; + test_some; + test_some_none; + test_some_some_five; + test_int_ref; + test_int_option_ref; + test_str; + test_byte_slice; + test_int_opt_slice; + test_empty_list; + test_five_list; + test_one_two_three_list; + test_float_list; + test_foo; + test_bar; + test_empty_string; + test_a_string; + test_ab_string; + test_abcde_string; + test_abcdefg_string; + test_abcdefgh_string; + test_zero_float; + test_one_two_float; + test_apple; + test_kiwi; + test_orange; + test_pear; + test_empty_smap; + test_int_smap_singleton; + test_int_smap; + test_empty_sset; + test_sset_singleton; + test_sset; + test_convert_char; + test_convert_int; + test_convert_true; + test_convert_false; + test_convert_none; + test_convert_some; + test_convert_some_none; + test_convert_some_some_five; + test_convert_int_ref; + test_convert_int_option_ref; + test_convert_empty_list; + test_convert_five_list; + test_convert_one_two_three_list; + test_convert_float_list; + test_convert_foo; + test_convert_bar; + test_convert_empty_string; + test_convert_a_string; + test_convert_ab_string; + test_convert_abcde_string; + test_convert_abcdefg_string; + test_convert_abcdefgh_string; + test_convert_zero_float; + test_convert_one_two_float; + test_convert_apple; + test_convert_kiwi; + test_convert_orange; + test_convert_pear; + test_convert_empty_smap; + test_convert_int_smap_singleton; + test_convert_int_smap; + test_convert_empty_sset; + test_convert_sset_singleton; + test_convert_sset; + test_convert_shared_value; + test_realloc_char; + test_realloc_int; + test_realloc_true; + test_realloc_false; + test_realloc_none; + test_realloc_some; + test_realloc_some_none; + test_realloc_some_some_five; + test_realloc_empty_list; + test_realloc_five_list; + test_realloc_one_two_three_list; + test_realloc_float_list; + test_realloc_foo; + test_realloc_bar; + test_realloc_empty_string; + test_realloc_a_string; + test_realloc_ab_string; + test_realloc_abcde_string; + test_realloc_abcdefg_string; + test_realloc_abcdefgh_string; + test_realloc_zero_float; + test_realloc_one_two_float; + test_realloc_apple; + test_realloc_kiwi; + test_realloc_orange; + test_realloc_pear; + test_realloc_empty_smap; + test_realloc_int_smap_singleton; + test_realloc_int_smap; + test_realloc_empty_sset; + test_realloc_sset_singleton; + test_realloc_sset; + test_realloc_shared_value; + ] + +let main () = List.iter (fun test -> test ()) test_cases + +let () = begin + print_endline "[ocamlrep_test][info]: start"; + main (); + print_endline "[ocamlrep_test][info]: finish" +end diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep/value.rs b/source/errpy/vendor/ocaml/interop/ocamlrep/value.rs new file mode 100644 index 00000000000..16ae2d08dbe --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep/value.rs @@ -0,0 +1,203 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::borrow::Cow; +use std::collections::HashMap; +use std::fmt; +use std::fmt::Debug; +use std::marker::PhantomData; + +use crate::block; +use crate::block::Block; +use crate::block::Header; +use crate::Allocator; + +#[inline(always)] +pub const fn is_ocaml_int(value: usize) -> bool { + value & 1 == 1 +} + +#[inline(always)] +pub const fn isize_to_ocaml_int(value: isize) -> usize { + ((value as usize) << 1) | 1 +} + +#[inline(always)] +pub const fn ocaml_int_to_isize(value: usize) -> isize { + (value as isize) >> 1 +} + +/// A value, as represented by OCaml. Valid, immutable, and immovable for +/// lifetime `'a`. +/// +/// Either a tagged integer value or a pointer to a [`Block`](struct.Block.html) +/// containing fields or binary data. +#[repr(transparent)] +#[derive(Clone, Copy, Hash, PartialEq, Eq)] +pub struct Value<'a>(pub(crate) usize, PhantomData<&'a ()>); + +impl<'a> Value<'a> { + #[inline(always)] + pub const fn is_int(self) -> bool { + is_ocaml_int(self.0) + } + + #[inline(always)] + pub const fn is_block(self) -> bool { + !self.is_int() + } + + #[inline(always)] + pub const fn int(value: isize) -> Value<'static> { + Value(isize_to_ocaml_int(value), PhantomData) + } + + #[inline(always)] + pub fn as_int(self) -> Option { + if self.is_int() { + Some(ocaml_int_to_isize(self.0)) + } else { + None + } + } + + #[inline(always)] + pub fn as_block(self) -> Option> { + if self.is_int() { + return None; + } + let block = unsafe { + let ptr = self.0 as *const Value<'_>; + let header = ptr.offset(-1); + let size = Header::from_bits((*header).to_bits()).size() + 1; + std::slice::from_raw_parts(header, size) + }; + Some(Block(block)) + } + + #[inline(always)] + pub fn as_float(self) -> Option { + let block = self.as_block()?; + if block.tag() != block::DOUBLE_TAG { + return None; + } + Some(f64::from_bits(block[0].0 as u64)) + } + + #[inline(always)] + pub fn as_double_array(self) -> Option<&'a [f64]> { + let block = self.as_block()?; + if block.tag() != block::DOUBLE_ARRAY_TAG { + return None; + } + Some(unsafe { + std::slice::from_raw_parts(block.0.as_ptr().add(1) as *const f64, block.size()) + }) + } + + #[inline(always)] + pub fn as_byte_string(self) -> Option<&'a [u8]> { + let block = self.as_block()?; + if block.tag() != block::STRING_TAG { + return None; + } + let slice = unsafe { + let size = block.size() * std::mem::size_of::>(); + let ptr = self.0 as *mut u8; + let last_byte = ptr.offset(size as isize - 1); + let padding = *last_byte; + let size = size - padding as usize - 1; + std::slice::from_raw_parts(ptr, size) + }; + Some(slice) + } + + #[inline(always)] + pub fn as_str(self) -> Option> { + let slice = self.as_byte_string()?; + Some(String::from_utf8_lossy(slice)) + } + + #[inline(always)] + pub fn field(self, index: usize) -> Option> { + self.field_ref(index).copied() + } + + #[inline(always)] + pub fn field_ref(self, index: usize) -> Option<&'a Value<'a>> { + self.as_block()?.as_values()?.get(index) + } + + /// Given a pointer to the first field of a [`Block`](struct.Block.html), + /// create a pointer `Value` referencing that `Block`. + /// + /// # Safety + /// + /// This method is unsafe because it requires that the pointed-to Value is + /// the first field of a block, which must be preceded by a valid Header + /// correctly describing the block's size and tag (i.e., value.offset(-1) + /// should point to that Header). To be used only with pointers returned by + /// Arena allocation methods (e.g., + /// [`Allocator::block_with_size_and_tag`](trait.Allocator.html#tymethod.block_with_size_and_tag). + #[inline(always)] + pub unsafe fn from_ptr(value: *const Value<'a>) -> Value<'a> { + Value(value as usize, PhantomData) + } + + /// # Safety + /// + /// The lifetime 'a returned is arbitrarily chosen, and does not necessarily + /// reflect the actual lifetime of the data. If the given value is a + /// pointer, it is up to the caller to ensure that for the duration of this + /// lifetime, the block this pointer points to, and every value reachable + /// from it, does not get written to. + #[inline(always)] + pub const unsafe fn from_bits(value: usize) -> Value<'a> { + Value(value, PhantomData) + } + + /// Convert this value to a usize, which can be handed to the OCaml runtime + /// to be used as an OCaml value. Take care that the returned value does + /// not outlive the arena. + #[inline(always)] + pub const fn to_bits(self) -> usize { + self.0 + } + + /// Helper for `Value::clone_with_allocator`. + pub(crate) fn clone_with<'b>( + self, + alloc: &'b impl Allocator, + seen: &mut HashMap>, + ) -> Value<'b> { + match self.as_block() { + None => Value(self.0, PhantomData), + Some(block) => { + if let Some(&copied_value) = seen.get(&self.0) { + return copied_value; + } + let copied_value = block.clone_with(alloc, seen); + seen.insert(self.0, copied_value); + copied_value + } + } + } + + /// Recursively clone this `Value` using the given `Allocator`. Structural + /// sharing is preserved (i.e., values which are physically equal before the + /// clone will be physically equal after the clone). + pub fn clone_with_allocator(self, alloc: &impl Allocator) -> Value<'_> { + self.clone_with(alloc, &mut HashMap::new()) + } +} + +impl Debug for Value<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self.as_block() { + None => write!(f, "{}", self.as_int().unwrap()), + Some(block) => write!(f, "{:?}", block), + } + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/Cargo.toml new file mode 100644 index 00000000000..a86eaa21f9e --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/Cargo.toml @@ -0,0 +1,18 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins:ocamlrep_caml_builtins + +[package] +name = "ocamlrep_caml_builtins" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "lib.rs" +test = false +doctest = false + +[dependencies] +ocamlrep = { path = "../ocamlrep" } +ocamlrep_custom = { path = "../ocamlrep_custom" } +serde = { version = "1.0.185", features = ["derive", "rc"] } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/lib.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/lib.rs new file mode 100644 index 00000000000..74f7a1583a2 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_caml_builtins/lib.rs @@ -0,0 +1,57 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use ocamlrep::*; +use ocamlrep_custom::CustomOperations; +use serde::Deserialize; +use serde::Serialize; + +/// Communicates that when the wrapped i64 is converted to an OCaml +/// representation, the type `Int64.t` (representing a boxed 64-bit integer) +/// should be used rather than the type `int` (which, on 64-bit architectures, +/// is an unboxed 63-bit integer). +#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive(Serialize, Deserialize)] +pub struct Int64(pub i64); + +extern "C" { + static mut caml_int64_ops: CustomOperations; +} + +impl From for Int64 { + fn from(x: i64) -> Self { + Self(x) + } +} + +impl From for i64 { + fn from(x: Int64) -> i64 { + x.0 + } +} + +impl ToOcamlRep for Int64 { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let mut block = alloc.block_with_size_and_tag(2, CUSTOM_TAG); + alloc.set_field(&mut block, 0, unsafe { + Value::from_bits(std::ptr::addr_of!(caml_int64_ops) as *const CustomOperations as usize) + }); + alloc.set_field(&mut block, 1, unsafe { Value::from_bits(self.0 as usize) }); + block.build() + } +} + +impl FromOcamlRep for Int64 { + fn from_ocamlrep(value: Value<'_>) -> Result { + let block = from::expect_block_with_size_and_tag(value, 2, CUSTOM_TAG)?; + Ok(Self(block[1].to_bits() as i64)) + } +} + +impl<'a> FromOcamlRepIn<'a> for Int64 { + fn from_ocamlrep_in(value: Value<'_>, _alloc: &'a ocamlrep::Bump) -> Result { + Self::from_ocamlrep(value) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/Cargo.toml new file mode 100644 index 00000000000..46e4ff5113e --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/Cargo.toml @@ -0,0 +1,16 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_custom:ocamlrep_custom + +[package] +name = "ocamlrep_custom" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "lib.rs" +doctest = false + +[dependencies] +ocamlrep = { path = "../ocamlrep" } +ocamlrep_ocamlpool = { path = "../ocamlrep_ocamlpool" } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/lib.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/lib.rs new file mode 100644 index 00000000000..8e5c45291ae --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/lib.rs @@ -0,0 +1,547 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +//! Library to build `Custom_tag` OCaml values. + +use std::ffi::CStr; +use std::ffi::CString; +use std::mem::MaybeUninit; +use std::ops::Deref; +use std::os::raw::c_char; +use std::os::raw::c_int; +use std::os::raw::c_void; +use std::rc::Rc; + +use ocamlrep::from; +use ocamlrep::Allocator; +use ocamlrep::FromError; +use ocamlrep::FromOcamlRep; +use ocamlrep::ToOcamlRep; +use ocamlrep::Value; +use ocamlrep::CUSTOM_TAG; +use ocamlrep_ocamlpool::catch_unwind; + +extern "C" { + fn caml_register_custom_operations(ops: *const CustomOperations); + fn caml_serialize_block_1(data: *const u8, len: usize); + fn caml_serialize_int_8(x: i64); + fn caml_deserialize_sint_8() -> i64; + fn caml_deserialize_block_1(data: *mut u8, len: usize); +} + +/// Struct containing the operations for a custom OCaml block. +/// +/// This is the Rust encoding of OCaml's `struct custom_operations`. +/// +/// For more information on the fields see +/// [the OCaml guide](https://caml.inria.fr/pub/docs/manual-ocaml/intfc.html#ss:c-custom-ops) +#[repr(C)] +pub struct CustomOperations { + identifier: *const c_char, + finalize: Option ()>, + compare: Option c_int>, + hash: Option isize>, + serialize: Option ()>, + deserialize: Option usize>, + compare_ext: Option c_int>, + + /// Not implemented yet, always set to NULL. + custom_fixed_length: *const c_void, +} + +impl CustomOperations { + /// Create a new custom block with the given identifier. + /// + /// All function pointers will be set to NULL by default. + fn new(identifier: &'static CStr) -> Self { + Self { + identifier: identifier.as_ptr(), + finalize: None, + compare: None, + hash: None, + serialize: None, + deserialize: None, + compare_ext: None, + custom_fixed_length: std::ptr::null(), + } + } +} + +/// A wrapper around a Rust type that allows it +/// to be written into/read from OCaml memory and managed by +/// the OCaml GC. +/// +/// The value still lives on the Rust heap in an `Rc`'d pointer, +/// and the `Rc`-pointer itself will be written to OCaml memory. +/// +/// # Examples +/// +/// Expose Rust type: +/// +/// ```rust +/// use ocamlrep_custom::caml_serialize_default_impls; +/// use ocamlrep_custom::{CamlSerialize, Custom}; +/// use ocamlrep_ocamlpool::ocaml_ffi; +/// use std::cell::Cell; +/// +/// pub struct Counter(Cell); +/// +/// impl CamlSerialize for Counter { +/// caml_serialize_default_impls!(); +/// } +/// +/// ocaml_ffi! { +/// fn counter_new() -> Custom { +/// Custom::from(Counter(Cell::new(0))) +/// } +/// +/// fn counter_inc(counter: Custom) -> Custom { +/// counter.0.set(counter.0.get() - 1); +/// counter +/// } +/// +/// fn counter_read(counter: Custom) -> isize { +/// counter.0.get() +/// } +/// } +/// ``` +/// +/// From OCaml: +/// +/// ```ocaml +/// type counter; (* abstract type *) +/// +/// external counter_new : unit -> counter = "counter_new" +/// external counter_inc: counter -> unit = "counter_inc" +/// external counter_read : counter -> isize = "counter_read" +/// +/// let () = +/// let cnt = counter_new () in (* will be dropped on GC finalization *) +/// assert (counter_read cnt == 0); +/// counter_inc cnt; +/// assert (counter_read cnt == 1) +/// ``` +pub struct Custom(Rc); + +impl Custom { + /// Create a new `ToCustom` wrapper by taking ownership of the value. + pub fn from(x: T) -> Self { + Self::new(Rc::new(x)) + } + + /// Create a new `ToCustom` directly from an `Rc`'d value. + pub fn new(x: Rc) -> Self { + Self(x) + } + + /// Get a reference to the inner `Rc` + pub fn inner(&self) -> &Rc { + &self.0 + } +} + +impl Deref for Custom { + type Target = T; + fn deref(&self) -> &T { + self.0.deref() + } +} + +/// A custom block has two words: a pointer to the CustomOperations struct, +/// and a pointer the the value. Our values are ref-counted, but an Rc pointer +/// is just pointer-sized. +#[repr(C)] +struct CustomBlockOcamlRep(&'static CustomOperations, Rc); + +const CUSTOM_BLOCK_SIZE_IN_BYTES: usize = std::mem::size_of::>(); +const CUSTOM_BLOCK_SIZE_IN_WORDS: usize = + CUSTOM_BLOCK_SIZE_IN_BYTES / std::mem::size_of::>(); + +impl ToOcamlRep for Custom { + fn to_ocamlrep<'a, A: Allocator>(&'a self, alloc: &'a A) -> Value<'a> { + let ops: &'static CustomOperations = ::operations(); + + let mut block = alloc.block_with_size_and_tag(CUSTOM_BLOCK_SIZE_IN_WORDS, CUSTOM_TAG); + + // Safety: we don't call any method on `alloc` after this method. + let block_ptr: *mut Value<'_> = unsafe { alloc.block_ptr_mut(&mut block) }; + + // Safety: `alloc` guarantees that the `block_ptr` returned by + // `block_ptr_mut` is aligend to `align_of::()` and valid + // for reads and writes of `CUSTOM_BLOCK_SIZE_IN_WORDS * + // size_of::()` bytes. Since `CustomBlockOcamlRep` has size + // `CUSTOM_BLOCK_SIZE_IN_WORDS * size_of::()`, its + // alignment is equal to `align_of::()`, and no other + // reference to our newly-allocated block can exist, it's safe for us to + // interpret `block_ptr` as a `&mut CustomBlockOcamlRep`. + let block_ptr = block_ptr as *mut MaybeUninit>; + let custom_block = unsafe { block_ptr.as_mut().unwrap() }; + + // Write the address of the operations struct to the first word, and the + // pointer to the value to the second word. + *custom_block = MaybeUninit::new(CustomBlockOcamlRep(ops, Rc::clone(&self.0))); + + block.build() + } +} + +impl FromOcamlRep for Custom { + fn from_ocamlrep(value: Value<'_>) -> Result { + let rc = rc_from_value::(value)?; + let rc = Rc::clone(rc); + + Ok(Custom::new(rc)) + } +} + +/// Helper function to fetch a reference to the `Rc` from the OCaml representation +/// of a custom block. +fn rc_from_value(value: Value<'_>) -> Result<&Rc, FromError> { + let block = from::expect_block(value)?; + from::expect_block_tag(block, CUSTOM_TAG)?; + from::expect_block_size(block, CUSTOM_BLOCK_SIZE_IN_WORDS)?; + + // We still don't know whether this block is in fact a + // CustomBlockOcamlRep--it may be a CustomBlockOcamlRep, or some + // other custom block which happens to be the same size. We can verify + // that the block is actually a CustomBlockOcamlRep by checking that + // it points to the correct CustomOperations struct. + let ops = ::operations(); + if !std::ptr::eq(ops, block[0].to_bits() as *const CustomOperations) { + return Err(FromError::UnexpectedCustomOps { + expected: ops as *const _ as usize, + actual: block[0].to_bits(), + }); + } + + let value_ptr = value.to_bits() as *const CustomBlockOcamlRep; + + // Safety: `value_ptr` is guaranteed to be aligned to + // `align_of::()`, and our use of `expect_block_size` guarantees + // that the pointer is valid for reads of `CUSTOM_BLOCK_SIZE_IN_WORDS * + // `size_of::()` bytes. Since the first field points to the right + // operations struct, we either have a valid `CustomBlockOCamlRep` + // (i.e., constructed above in our `ToOcamlRep` implementation) or + // someone went out of their way to construct an invalid one. Assume + // it's valid and read in the `CustomBlockOcamlRep`. + let custom_block = unsafe { value_ptr.as_ref().unwrap() }; + Ok(&custom_block.1) +} + +/// Trait that allows OCaml serialization and deserialization. +/// +/// If you want to support serialization/deserialization, you +/// **MUST** call `CamlSerialize::register()` when starting up +/// the program. +/// +/// This will register your type in the OCaml runtime, allowing +/// deserialization. +/// +/// Rust does not support different instantiations of the default +/// implementation for different implementors of trait types. Therefore, +/// you must implement `type_identifier`, `operations` and `register` +/// manually when implementing this trait for a type. You can use +/// the `caml_serialize_default_impls!()` to do that automatically: +/// +/// ``` +/// impl CamlSerialize for MyType { +/// caml_serialize_default_impls!(); +/// } +/// ``` +pub trait CamlSerialize: Sized { + /// Get the type name. + fn type_identifier() -> &'static CStr; + + /// Get the type's custom operations struct. + /// + /// Always has to return the same reference! If not, the + /// OCaml-to-Rust conversion will fail. + /// + /// The returned structure is not intended to be used by + /// a programmer. Using it directly by e.g. injecting it + /// into OCaml custom blocks is dangerous and can cause + /// undefined behavior. Don't do it! + fn operations() -> &'static CustomOperations; + + /// Register the type with the OCaml system. + /// + /// # Safety + /// + /// Must not be called from multiple threads. + /// + /// This function interacts with the OCaml runtime, which is not thread-safe. + /// If any other threads are attempting to interact with the OCaml runtime + /// or its custom operations table (e.g., by invoking this function, or by + /// executing OCaml code using custom blocks) when this function is invoked, + /// undefined behavior will result. + /// + /// # Examples + /// + /// ``` + /// use ocamlrep_custom::CamlSerialize; + /// use ocamlrep_ocamlpool::ocaml_ffi; + /// + /// struct IntBox(isize); + /// + /// impl CamlSerialize for IntBox { + /// caml_serialize_default_impls!(); + /// fn serialize(&self) -> Vec { ... } + /// fn deserialize(buffer: &[u8]) -> Self { ... } + /// } + /// + /// ocaml_ffi! { + /// fn register_custom_types() { + /// // Once `register_custom_types` has been invoked from OCaml, IntBox + /// // can be serialized and deserialized from OCaml using the Marshal + /// // module. + /// // + /// // Safety: this will be called from OCaml, as such nothing else will + /// // be interacting with the OCaml runtime. + /// unsafe { IntBox::register() }; + /// } + /// } + /// ``` + unsafe fn register(); + + /// Convert a value to an array of bytes. + /// + /// The default implementation panics. + fn serialize(&self) -> Vec { + panic!( + "serialization not implemented for {:?}", + Self::type_identifier() + ) + } + + /// Deserialize a value form an array of bytes. + /// + /// The default implementation panics. + fn deserialize(_data: &[u8]) -> Self { + panic!( + "deserialization not implemented for {:?}", + Self::type_identifier() + ) + } +} + +#[macro_export] +macro_rules! caml_serialize_default_impls { + () => { + fn type_identifier() -> &'static std::ffi::CStr { + static ONCE: std::sync::Once = std::sync::Once::new(); + static mut TYPE_NAME: Option = None; + + ONCE.call_once(|| { + // Safety: + // - We've gated initialization, so it's thread safe. + // - We only set the constant once. + unsafe { + TYPE_NAME = Some($crate::type_identifier_helper::()); + } + }); + + // Safety: + // - By now the constant has been initialized, and once initialized + // it is never changes. + // - Concurrent reads are OK. + unsafe { TYPE_NAME.as_ref().unwrap() } + } + + fn operations() -> &'static $crate::CustomOperations { + static ONCE: std::sync::Once = std::sync::Once::new(); + static mut OPS_STRUCT: Option<$crate::CustomOperations> = None; + + ONCE.call_once(|| { + // Safety: + // - We've gated initialization, so it's thread safe. + // - We only set the constant once. + unsafe { + OPS_STRUCT = Some($crate::operations_helper::()); + } + }); + + // Safety: + // - By now the constant has been initialized, and once initialized + // it is never changes. + // - Concurrent reads are OK. + unsafe { OPS_STRUCT.as_ref().unwrap() } + } + + unsafe fn register() { + static mut IS_REGISTERED: bool = false; + + // Safety: Can only be called in a single-threaded context! + if IS_REGISTERED { + return; + } + IS_REGISTERED = true; + + let ops = Self::operations(); + $crate::register_helper::(ops) + } + }; +} + +/// Helper used for the `caml_serialize_default_impls` macro +pub fn type_identifier_helper() -> CString { + let name = format!("ocamlrep.custom.{}", std::any::type_name::()); + std::ffi::CString::new(name).unwrap() +} + +/// Helper used for the `caml_serialize_default_impls` macro +pub fn operations_helper() -> CustomOperations { + let type_identifier = ::type_identifier(); + let mut ops = CustomOperations::new(type_identifier); + ops.finalize = Some(drop_value::); + ops.serialize = Some(serialize_value::); + ops.deserialize = Some(deserialize_value::); + ops +} + +/// Helper used for the `caml_serialize_default_impls` macro +/// +/// # Safety +/// +/// Should not be used directly. Interacts with the OCaml runtime and is +/// thus unsafe to call in a multi-threaded context. +pub unsafe fn register_helper(ops: &'static CustomOperations) { + // Safety: operations struct has a static lifetime, it will live forever! + caml_register_custom_operations(ops as *const CustomOperations); +} + +/// Helper function used by `operations_helper`. Returns a finalizer for custom +/// blocks containing an `Rc`. +extern "C" fn drop_value(value: usize) { + let _: usize = catch_unwind(|| { + // Safety: We trust here that CustomOperations structs containing this + // `drop_value` instance will only ever be referenced by custom blocks + // matching the layout of `CustomBlockOcamlRep`. If that's so, then this + // function should only be invoked by the OCaml runtime on a pointer to + // a CustomBlockOcamlRep created by T::to_ocamlrep. Such a pointer + // would be aligned and valid. + let custom_block_ptr = value as *mut CustomBlockOcamlRep; + let custom_block = unsafe { custom_block_ptr.as_mut().unwrap() }; + + // The `Rc` will be dropped here, and its reference count will decrease + // by one (possibly freeing the referenced value). + + // Safety: Since the OCaml runtime will only invoke the finalizer for a + // value which will never again be used, it is safe to use + // `drop_in_place` (i.e., our finalizer will only be invoked once, so we + // won't cause a double-drop). + unsafe { + std::ptr::drop_in_place(&mut custom_block.1); + } + + 0 + }); +} + +/// Helper function for serialization. Interacts with the OCaml runtime, so must +/// only be invoked by the OCaml runtime when serializing a custom block. +extern "C" fn serialize_value( + value: usize, + bsize_32: *mut usize, + bsize_64: *mut usize, +) { + let _: usize = catch_unwind(|| { + // Safety: Only called by the OCaml runtime (we don't expose a means of + // invoking this function from Rust), which provides some OCaml + // CUSTOM_TAG block as the value. + let value = unsafe { Value::from_bits(value) }; + + // Only called by the OCaml runtime, when serializing + // a Custom-object managed by the OCaml GC. + let rc = rc_from_value::(value).unwrap(); + + let bytes: Vec = rc.serialize(); + let bytes_ptr = bytes.as_ptr(); + + // Safety: As above, we don't expose a means of invoking this function + // from Rust--it can only be invoked by the OCaml runtime while + // serializing a value. It is safe to invoke OCaml serialization + // functions in this context. + unsafe { + let len = bytes.len(); + caml_serialize_int_8(len.try_into().unwrap()); + caml_serialize_block_1(bytes_ptr, len); + + // The size taken up in the data-part of the custom block. + *bsize_32 = std::mem::size_of::(); + *bsize_64 = std::mem::size_of::(); + } + + 0 + }); +} + +/// Helper function for deserialization. Interacts with the OCaml runtime, so must +/// only be invoked by the OCaml runtime when serializing a custom block. +extern "C" fn deserialize_value(data_ptr: *mut c_void) -> usize { + catch_unwind(|| { + // Get the serialized bytes from the input channel. + let bytes = unsafe { + // Safety: We don't expose a means of invoking this function from + // Rust--`deserialize_value` can only be invoked by the OCaml + // runtime while deserializing a custom block value. It is safe to + // invoke OCaml deserialization functions in this context. + let len: usize = caml_deserialize_sint_8().try_into().unwrap(); + + let mut buf: Vec = Vec::with_capacity(len); + + // Safety: len <= capacity. The elements aren't initialized at this + // time, but we trust that caml_deserialize_block_1 will fill `len` + // bytes of the buffer. + #[allow(clippy::uninit_vec)] + buf.set_len(len); + + // Safety: As above, `deserialize_value` can only be invoked by the + // OCaml runtime during custom block deserialization. + caml_deserialize_block_1(buf.as_mut_ptr(), len); + buf + }; + + // Actually deserialize those bytes into a T. + let val: T = CamlSerialize::deserialize(&bytes); + + // Safety: The OCaml runtime will give us a data buffer which is + // usize-aligned and valid for reads and writes of bsize_32 or bsize_64 + // (as provided by `serialize_value`, above) bytes (depending on system + // architecture). This is sufficient for `Rc` (which has the size and + // alignment of usize). + let data_ptr = data_ptr as *mut MaybeUninit>; + let data = unsafe { data_ptr.as_mut().unwrap() }; + + *data = MaybeUninit::new(Rc::new(val)); + + // Return the size of the value we wrote to our output pointer. The + // OCaml runtime will verify that it matches the expected + // bsize_32/bsize_64 written by the serializer. + std::mem::size_of_val(data) + }) +} + +#[cfg(test)] +mod test { + use std::mem::*; + + use super::*; + + #[test] + fn custom_block_ocamlrep_size() { + assert_eq!( + size_of::>(), + 2 * size_of::>() + ); + } + + #[test] + fn custom_block_ocamlrep_align() { + assert_eq!( + align_of::>(), + align_of::>() + ); + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/Cargo.toml new file mode 100644 index 00000000000..3b6b5bd1906 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/Cargo.toml @@ -0,0 +1,20 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test:counter + +[package] +name = "counter" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "counter.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dependencies] +anyhow = "1.0.75" +cargo_test_utils = { path = "../../cargo_test_utils" } +ocamlrep_custom = { path = ".." } +ocamlrep_ocamlpool = { path = "../../ocamlrep_ocamlpool" } +tempfile = "3.8" diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter.rs new file mode 100644 index 00000000000..0158871f30e --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter.rs @@ -0,0 +1,103 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![feature(exit_status_error)] + +use std::cell::Cell; + +use ocamlrep_custom::caml_serialize_default_impls; +use ocamlrep_custom::CamlSerialize; +use ocamlrep_custom::Custom; +use ocamlrep_ocamlpool::ocaml_ffi; + +pub struct Counter(Cell); + +impl CamlSerialize for Counter { + caml_serialize_default_impls!(); +} + +ocaml_ffi! { + fn counter_new() -> Custom { + Custom::from(Counter(Cell::new(0))) + } + + fn counter_inc(counter: Custom) -> Custom { + counter.0.set(counter.0.get() + 1); + counter + } + + fn counter_read(counter: Custom) -> isize { + counter.0.get() + } +} + +// Hack! Trick buck into believing that these libraries are used. See [Note: +// Test blocks for Cargo] in `ocamlrep_ocamlpool/test/ocamlpool_test.rs`. +const _: () = { + #[allow(unused_imports)] + use anyhow; + #[allow(unused_imports)] + use cargo_test_utils; + #[allow(unused_imports)] + use tempfile; +}; + +#[cfg(test)] +mod tests { + use anyhow::Result; + use cargo_test_utils::*; + use tempfile::TempDir; + + #[test] + fn counter_test() -> Result<()> { + let tmp_dir = TempDir::with_prefix("ocamlrep_custom_test.")?; + std::fs::copy( + "counter_client.ml", + tmp_dir.path().join("counter_client.ml"), + )?; + let compile_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-c", + "counter_client.ml", + "-o", + "counter_client_ml.cmx", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(compile_cmd).map_err(fmt_exit_status_err), Ok(())); + let link_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-o", + "counter_test", + "counter_client_ml.cmx", + "-ccopt", + &("-L".to_owned() + workspace_dir(&["target", build_flavor()]).to_str().unwrap()), + "-cclib", + "-lcounter", + "-cclib", + "-locamlrep_ocamlpool", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(link_cmd).map_err(fmt_exit_status_err), Ok(())); + let counter_test_cmd = cmd( + tmp_dir + .path() + .join("counter_test") + .as_path() + .to_str() + .unwrap(), + &[], + None, + ); + assert_eq!(run(counter_test_cmd).map_err(fmt_exit_status_err), Ok(())); + tmp_dir.close()?; + Ok(()) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter_client.ml b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter_client.ml new file mode 100644 index 00000000000..50876e7bca4 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/counter_client.ml @@ -0,0 +1,24 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + *) + +type counter + +external counter_new : unit -> counter = "counter_new" + +external counter_inc : counter -> unit = "counter_inc" + +external counter_read : counter -> int = "counter_read" + +let () = begin + print_endline "[counter_test][info]: start"; + let counter = counter_new () in + assert (counter_read counter == 0); + counter_inc counter; + assert (counter_read counter == 1); + print_endline "[counter_test][info]: finish"; +end diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.ml b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.ml new file mode 100644 index 00000000000..77ec6f12de9 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.ml @@ -0,0 +1,71 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + *) + +type drop_test (* abstract type for the Rust DropTest type *) + +type ref_cell (* abstract type for the Rust Rc> type *) + +external drop_test_new : unit -> drop_test = "test_custom_drop_test_new" + +external drop_test_custom_ref_count : drop_test -> int + = "test_custom_drop_test_custom_ref_count" + +external drop_test_get_cell : drop_test -> ref_cell + = "test_custom_drop_test_get_cell" + +external drop_test_cell_is_dropped : ref_cell -> bool + = "test_custom_drop_test_cell_is_dropped" + +let test_is_dropped_on_gc () = + let drop_test = ref (Some (drop_test_new ())) in + let cell = drop_test_get_cell (Option.get !drop_test) in + + assert (Int.equal (drop_test_custom_ref_count (Option.get !drop_test)) 1); + assert (not @@ drop_test_cell_is_dropped cell); + + Gc.full_major (); + assert (Int.equal (drop_test_custom_ref_count (Option.get !drop_test)) 1); + assert (not @@ drop_test_cell_is_dropped cell); + + drop_test := None; + Gc.full_major (); + assert (drop_test_cell_is_dropped cell); + + () + +type boxed_int (* abstract tyep for Rust BoxedInt type *) + +external boxed_int_register : unit -> unit = "test_custom_boxed_int_register" + +external boxed_int_new : int -> boxed_int = "test_custom_boxed_int_new" + +external boxed_int_equal : boxed_int -> boxed_int -> bool + = "test_custom_boxed_int_equal" + +let test_boxed_int_serialize () = + boxed_int_register (); + + let x = boxed_int_new 1 in + assert (not @@ boxed_int_equal x (boxed_int_new 2)); + assert (boxed_int_equal x (boxed_int_new 1)); + + let x_serialized = Marshal.to_bytes x [] in + let x_deserialized = Marshal.from_bytes x_serialized 0 in + Gc.full_major (); + + assert (boxed_int_equal x x_deserialized); + assert (not @@ boxed_int_equal x_deserialized (boxed_int_new 2)); + Gc.full_major (); + + () + +let test_cases = [test_is_dropped_on_gc; test_boxed_int_serialize] + +let main () = List.iter (fun test -> test ()) test_cases + +let () = main () diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.rs new file mode 100644 index 00000000000..3b75db3719b --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_custom/test/test_custom.rs @@ -0,0 +1,95 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::cell::RefCell; +use std::io::Write; +use std::rc::Rc; + +use ocamlrep_custom::caml_serialize_default_impls; +use ocamlrep_custom::CamlSerialize; +use ocamlrep_custom::Custom; +use ocamlrep_ocamlpool::ocaml_ffi; + +struct DropTest(Rc>); + +impl CamlSerialize for DropTest { + caml_serialize_default_impls!(); +} + +struct DropTestCell(Rc>); + +impl CamlSerialize for DropTestCell { + caml_serialize_default_impls!(); +} + +impl DropTest { + pub fn new() -> Self { + Self(Rc::new(RefCell::new(false))) + } + + pub fn cell(&self) -> Rc> { + self.0.clone() + } +} + +impl Drop for DropTest { + fn drop(&mut self) { + *self.0.borrow_mut() = true; + } +} + +ocaml_ffi! { + fn test_custom_drop_test_new() -> Custom { + Custom::from(DropTest::new()) + } + + fn test_custom_drop_test_custom_ref_count(x: Custom) -> usize { + let w = Rc::downgrade(x.inner()); + drop(x); + w.strong_count() + } + + fn test_custom_drop_test_get_cell(x: Custom) -> Custom { + Custom::from(DropTestCell(x.cell())) + } + + fn test_custom_drop_test_cell_is_dropped(x: Custom) -> bool { + *x.0.borrow() + } +} + +struct BoxedInt(isize); + +impl CamlSerialize for BoxedInt { + caml_serialize_default_impls!(); + + fn serialize(&self) -> Vec { + let mut buffer = Vec::new(); + buffer.write_all(&self.0.to_be_bytes()).unwrap(); + buffer + } + + fn deserialize(buffer: &[u8]) -> Self { + let i = isize::from_be_bytes(buffer[0..std::mem::size_of::()].try_into().unwrap()); + BoxedInt(i) + } +} + +ocaml_ffi! { + fn test_custom_boxed_int_register() { + // Safety: called from OCaml in a single-threaded context. + unsafe { + BoxedInt::register(); + } + } + + fn test_custom_boxed_int_new(x: isize) -> Custom { + Custom::from(BoxedInt(x)) + } + + fn test_custom_boxed_int_equal(x: Custom, y: Custom) -> bool { + x.0 == y.0 + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_derive/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_derive/Cargo.toml new file mode 100644 index 00000000000..a0f954ed09c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_derive/Cargo.toml @@ -0,0 +1,24 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_derive:ocamlrep_derive + +[package] +name = "ocamlrep_derive" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "lib.rs" +test = false +doctest = false +proc-macro = true + +[dependencies] +proc-macro2 = { version = "1.0.70", features = ["span-locations"] } +quote = "1.0.29" +syn = { version = "1.0.109", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] } +synstructure = "0.12" + +[dev-dependencies] +anyhow = "1.0.75" +macro_test_util = { path = "../macro_test_util" } diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_derive/lib.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_derive/lib.rs new file mode 100644 index 00000000000..b522baef7a4 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_derive/lib.rs @@ -0,0 +1,584 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![recursion_limit = "128"] + +use proc_macro2::TokenStream; +use quote::quote; +use syn::Attribute; +use syn::Meta; +use syn::NestedMeta; +use synstructure::decl_derive; +use synstructure::BindingInfo; +use synstructure::VariantInfo; + +// The rust_to_ocaml_attr crate provides the rust_to_ocaml attribute macro, +// which is intended to be consumed by the rust_to_ocaml codegen tool. It +// doesn't currently control the behavior of any derived ocamlrep trait impls. +// +// Unfortunately, rust_to_ocaml_attr does not strip the attribute macro from +// positions where attribute macros are not allowed (like field definitions). +// The easiest way to do that is to ask proc_macro_derive to do it, but that +// requires the use of a derive macro. +// +// Since all of the types we are interested in passing to rust_to_ocaml +// implement an ocamlrep trait, ask proc_macro_derive (via decl_derive) to strip +// rust_to_ocaml attributes when deriving ocamlrep traits. +// +// Even with this stripping, the rust_to_ocaml_attr crate is still required to +// strip the attribute from type aliases, which cannot use derive macros. +decl_derive!([ToOcamlRep, attributes(rust_to_ocaml, ocamlrep)] => derive_to_ocamlrep); +decl_derive!([FromOcamlRep, attributes(rust_to_ocaml, ocamlrep)] => derive_from_ocamlrep); +decl_derive!([FromOcamlRepIn, attributes(rust_to_ocaml, ocamlrep)] => derive_from_ocamlrep_in); + +fn derive_to_ocamlrep(mut s: synstructure::Structure<'_>) -> TokenStream { + // remove #[ocamlrep(skip)] + for variant in s.variants_mut() { + variant.filter(|bi| !has_ocamlrep_skip_attr(&bi.ast().attrs)); + } + + // By default, if you are deriving an impl of trait Foo for generic type + // X, synstructure will add Foo as a bound not only for the type + // parameter T, but also for every type which appears as a field in X. This + // is not necessary for our use case--we can just require that the type + // parameters implement our trait. + s.add_bounds(synstructure::AddBounds::Generics); + + let to_body = to_ocamlrep_body(&s); + s.gen_impl(quote! { + gen impl ::ocamlrep::ToOcamlRep for @Self { + fn to_ocamlrep<'__ocamlrep_derive_allocator, Alloc: ::ocamlrep::Allocator>( + &'__ocamlrep_derive_allocator self, + arena: &'__ocamlrep_derive_allocator Alloc, + ) -> ::ocamlrep::Value<'__ocamlrep_derive_allocator> { + use ::ocamlrep::Allocator; + match self { #to_body } + } + } + }) +} + +fn derive_from_ocamlrep(mut s: synstructure::Structure<'_>) -> TokenStream { + s.add_bounds(synstructure::AddBounds::Generics); + + let from_body = from_ocamlrep_body(&mut s); + s.gen_impl(quote! { + gen impl ::ocamlrep::FromOcamlRep for @Self { + fn from_ocamlrep(value: ::ocamlrep::Value<'_>) -> ::std::result::Result { + use ::ocamlrep::FromOcamlRep; + #from_body + } + } + }) +} + +fn derive_from_ocamlrep_in(mut s: synstructure::Structure<'_>) -> TokenStream { + s.add_bounds(synstructure::AddBounds::Generics); + + if s.ast().generics.lifetimes().next().is_none() { + s.add_bounds(synstructure::AddBounds::None); + let tparams = s.ast().generics.type_params(); + let tparams_implement_from_ocamlrep: TokenStream = tparams + .map(|t| quote!(#t : ::ocamlrep::FromOcamlRep,)) + .collect(); + let from_body = from_ocamlrep_body(&mut s); + return s.gen_impl(quote! { + gen impl<'__ocamlrep_derive_allocator> ::ocamlrep::FromOcamlRepIn<'__ocamlrep_derive_allocator> for @Self + where #tparams_implement_from_ocamlrep + { + fn from_ocamlrep_in( + value: ::ocamlrep::Value<'_>, + alloc: &'__ocamlrep_derive_allocator ::ocamlrep::Bump, + ) -> ::std::result::Result { + use ::ocamlrep::FromOcamlRep; + #from_body + } + } + }); + } + + // Constrain the lifetime of `'__ocamlrep_derive_allocator` to be equal to + // any declared lifetimes. This is so that we can reference the lifetime + // parameter to `FromOcamlRepIn` without requiring implementors to use a + // certain name for their lifetime parameter. + let lifetimes = s.ast().generics.lifetimes(); + let lifetimes: TokenStream = lifetimes + .map(|l| { + quote! { + '__ocamlrep_derive_allocator : #l, + #l : '__ocamlrep_derive_allocator, + } + }) + .collect(); + let tparams = s.ast().generics.type_params(); + let tparams_implement_trivialdrop: TokenStream = tparams + .map(|t| quote!(#t : ::arena_trait::TrivialDrop,)) + .collect(); + + let from_in_body = from_ocamlrep_in_body(&mut s); + s.gen_impl(quote! { + gen impl<'__ocamlrep_derive_allocator> ::ocamlrep::FromOcamlRepIn<'__ocamlrep_derive_allocator> for @Self + where + #tparams_implement_trivialdrop #lifetimes + { + fn from_ocamlrep_in( + value: ::ocamlrep::Value<'_>, + alloc: &'__ocamlrep_derive_allocator ::ocamlrep::Bump, + ) -> ::std::result::Result { + use ::ocamlrep::FromOcamlRepIn; + #from_in_body + } + } + }) +} + +fn to_ocamlrep_body(s: &synstructure::Structure<'_>) -> TokenStream { + match &s.ast().data { + syn::Data::Struct(struct_data) => struct_to_ocamlrep(s, struct_data), + syn::Data::Enum(_) => enum_to_ocamlrep(s, collect_enum_variants(s)), + syn::Data::Union(_) => panic!("untagged unions not supported"), + } +} + +fn from_ocamlrep_body(s: &mut synstructure::Structure<'_>) -> TokenStream { + match &s.ast().data { + syn::Data::Struct(struct_data) => struct_from_ocamlrep(s, struct_data, false), + syn::Data::Enum(_) => enum_from_ocamlrep(collect_enum_variants(s), false), + syn::Data::Union(_) => panic!("untagged unions not supported"), + } +} + +fn from_ocamlrep_in_body(s: &mut synstructure::Structure<'_>) -> TokenStream { + match &s.ast().data { + syn::Data::Struct(struct_data) => struct_from_ocamlrep(s, struct_data, true), + syn::Data::Enum(_) => enum_from_ocamlrep(collect_enum_variants(s), true), + syn::Data::Union(_) => panic!("untagged unions not supported"), + } +} + +fn struct_to_ocamlrep( + s: &synstructure::Structure<'_>, + struct_data: &syn::DataStruct, +) -> TokenStream { + match struct_data.fields { + syn::Fields::Unit => { + // Represent unit structs with unit. + s.each_variant(|_| quote! { arena.add(&()) }) + } + syn::Fields::Unnamed(ref fields) if fields.unnamed.len() == 1 => { + // For the newtype pattern (a tuple struct with a single field), + // don't allocate a block--just use the inner value directly. + s.each(|bi| quote! { arena.add(#bi) }) + } + syn::Fields::Named(_) | syn::Fields::Unnamed(_) => { + // Otherwise, we have a record-like struct or a tuple struct. Both + // are represented with a block. + s.each_variant(|v| allocate_block(v, 0)) + } + } +} + +/// Fetch all the parameters from ocamlrep attributes: +/// #[ocamlrep(foo, bar), ocamlrep(baz)] +/// yields: +/// [foo, bar, baz] +fn parse_ocamlrep_attr(attrs: &[Attribute]) -> Option> { + let mut res = None; + for attr in attrs { + let meta = attr.parse_meta().unwrap(); + match meta { + Meta::Path(_) => { + // #[foo] + } + Meta::List(list) => { + // #[foo(bar)] + if list.path.is_ident("ocamlrep") { + res.get_or_insert_with(Vec::new).extend(list.nested); + } + } + Meta::NameValue(_) => { + // #[foo = bar] + } + } + } + + res +} + +/// Returns true if the attributes contain an `#[ocamlrep(skip)]` +fn has_ocamlrep_skip_attr(attrs: &[Attribute]) -> bool { + if let Some(ocamlrep) = parse_ocamlrep_attr(attrs) { + for rep in ocamlrep { + match rep { + NestedMeta::Meta(Meta::Path(path)) if path.is_ident("skip") => { + return true; + } + _ => {} + } + } + } + + false +} + +fn struct_from_ocamlrep( + s: &mut synstructure::Structure<'_>, + struct_data: &syn::DataStruct, + from_in: bool, +) -> TokenStream { + let variant = &mut s.variants_mut()[0]; + match struct_data.fields { + syn::Fields::Unit => { + let constructor = variant.construct(|_, _| quote!(unreachable!())); + quote! { <()>::from_ocamlrep(value)?; Ok(#constructor) } + } + syn::Fields::Unnamed(ref fields) if fields.unnamed.len() == 1 => { + let constructor = variant.construct(|field, _| { + let ty = &field.ty; + if from_in { + quote! { <#ty>::from_ocamlrep_in(value, alloc)? } + } else { + quote! { <#ty>::from_ocamlrep(value)? } + } + }); + quote! { Ok(#constructor) } + } + syn::Fields::Named(_) | syn::Fields::Unnamed(_) => { + let mut binding = 0; + let constructor = variant.construct(|field, _| { + if has_ocamlrep_skip_attr(&field.attrs) { + quote!(::std::default::Default::default()) + } else { + let idx = binding; + binding += 1; + field_constructor(idx, from_in) + } + }); + quote! { + let block = ::ocamlrep::from::expect_tuple(value, #binding)?; + Ok(#constructor) + } + } + } +} + +struct EnumVariants<'a> { + nullary_variants: Vec<(&'a synstructure::VariantInfo<'a>, isize)>, + block_variants: Vec<(&'a synstructure::VariantInfo<'a>, isize)>, +} + +fn collect_enum_variants<'a>(s: &'a synstructure::Structure<'_>) -> EnumVariants<'a> { + // For tagging purposes, variant constructors of zero arguments are numbered + // separately from variant constructors of one or more arguments, so we need + // to count them separately to learn their tags. + let mut nullary_variants = vec![]; + let mut block_variants = vec![]; + for variant in s.variants().iter() { + if variant.bindings().is_empty() { + nullary_variants.push((variant, nullary_variants.len() as isize)); + } else { + block_variants.push((variant, block_variants.len() as isize)); + }; + } + // Block tags larger than this value indicate specific OCaml types (and tags + // larger than 255 wouldn't fit in a u8 anyway). + // See https://github.com/ocaml/ocaml/blob/3.08/utils/config.mlp#L55 + assert!( + block_variants.len() <= 246, + "Too many non-constant enum variants -- maximum is 246" + ); + EnumVariants { + nullary_variants, + block_variants, + } +} + +fn enum_to_ocamlrep(s: &synstructure::Structure<'_>, variants: EnumVariants<'_>) -> TokenStream { + let EnumVariants { + nullary_variants, + mut block_variants, + } = variants; + let mut all_variants = nullary_variants; + all_variants.append(&mut block_variants); + s.each_variant(|v| { + let size = v.bindings().len(); + let tag = { + all_variants + .iter() + .find(|(var, _)| *var == v) + .map(|(_, tag)| *tag) + .unwrap() + }; + if size == 0 { + quote!(::ocamlrep::Value::int(#tag)) + } else { + let tag = tag as u8; + match get_boxed_tuple_len(v) { + None => allocate_block(v, tag), + Some(len) => boxed_tuple_variant_to_block(&v.bindings()[0], tag, len), + } + } + }) +} + +fn enum_from_ocamlrep(variants: EnumVariants<'_>, from_in: bool) -> TokenStream { + let EnumVariants { + nullary_variants, + block_variants, + } = variants; + let max_nullary_tag = nullary_variants.len().saturating_sub(1); + let max_block_tag = block_variants.len().saturating_sub(1) as u8; + + let mut nullary_arms = TokenStream::new(); + for (variant, tag) in nullary_variants.iter() { + let constructor = variant.construct(|_, _| quote!(unreachable!())); + nullary_arms.extend(quote! { #tag => Ok(#constructor), }); + } + nullary_arms.extend(quote! { + tag => Err(::ocamlrep::FromError::NullaryVariantTagOutOfRange { + max: #max_nullary_tag, + actual: tag, + }) + }); + + let mut block_arms = TokenStream::new(); + for (variant, tag) in block_variants.iter() { + let tag = *tag as u8; + let (size, constructor) = match get_boxed_tuple_len(variant) { + None => ( + variant.bindings().len(), + variant.construct(|_, i| field_constructor(i, from_in)), + ), + Some(len) => (len, boxed_tuple_variant_constructor(variant, len, from_in)), + }; + block_arms.extend(quote! { #tag => { + ::ocamlrep::from::expect_block_size(block, #size)?; + Ok(#constructor) + } }); + } + block_arms.extend(quote! { + tag => Err(::ocamlrep::FromError::BlockTagOutOfRange { + max: #max_block_tag, + actual: tag, + }) + }); + + match (nullary_variants.is_empty(), block_variants.is_empty()) { + // An enum with no variants is not instantiable. + (true, true) => panic!("cannot derive OcamlRep for non-instantiable enum"), + // Nullary variants only. + (false, true) => quote! { + match ::ocamlrep::from::expect_int(value)? { #nullary_arms } + }, + // Block variants only. + (true, false) => quote! { + let block = ::ocamlrep::from::expect_block(value)?; + match block.tag() { #block_arms } + }, + // Both nullary and block variants. + (false, false) => quote! { + if value.is_int() { + match value.as_int().unwrap() { #nullary_arms } + } else { + let block = value.as_block().unwrap(); + match block.tag() { #block_arms } + } + }, + } +} + +fn allocate_block(variant: &VariantInfo<'_>, tag: u8) -> TokenStream { + let size = variant.bindings().len(); + let mut fields = TokenStream::new(); + for (i, bi) in variant.bindings().iter().enumerate() { + fields.extend(quote! { + arena.set_field(&mut block, #i, arena.add(#bi)); + }); + } + quote! { + let mut block = arena.block_with_size_and_tag(#size, #tag); + #fields + block.build() + } +} + +fn boxed_tuple_variant_to_block(bi: &BindingInfo<'_>, tag: u8, len: usize) -> TokenStream { + let mut fields = TokenStream::new(); + for i in 0..len { + let idx = syn::Index::from(i); + fields.extend(quote! { + arena.set_field(&mut block, #i, arena.add(&#bi.#idx)); + }); + } + quote! { + let mut block = arena.block_with_size_and_tag(#len, #tag); + #fields + block.build() + } +} + +fn field_constructor(index: usize, from_in: bool) -> TokenStream { + if from_in { + quote! { ::ocamlrep::from::field_in(block, #index, alloc)? } + } else { + quote! { ::ocamlrep::from::field(block, #index)? } + } +} + +fn boxed_tuple_variant_constructor( + variant: &VariantInfo<'_>, + len: usize, + from_in: bool, +) -> TokenStream { + let mut ident = TokenStream::new(); + if let Some(prefix) = variant.prefix { + ident.extend(quote!(#prefix ::)); + } + let id = variant.ast().ident; + ident.extend(quote!(#id)); + + let mut fields = TokenStream::new(); + for idx in 0..len { + fields.extend(if from_in { + quote! { ::ocamlrep::from::field_in(block, #idx, alloc)?, } + } else { + quote! { ::ocamlrep::from::field(block, #idx)?, } + }) + } + if from_in { + quote! { #ident(alloc.alloc((#fields))) } + } else { + quote! { #ident(::std::boxed::Box::new((#fields))) } + } +} + +fn get_boxed_tuple_len(variant: &VariantInfo<'_>) -> Option { + use syn::Fields; + use syn::GenericArgument; + use syn::PathArguments; + use syn::Type; + use syn::TypePath; + use syn::TypeReference; + + match &variant.ast().fields { + Fields::Unnamed(_) => {} + _ => return None, + } + let bi = match variant.bindings() { + [bi] => bi, + _ => return None, + }; + let tuple = match &bi.ast().ty { + Type::Path(TypePath { path, .. }) => { + let path_seg = match path.segments.first() { + Some(s) if s.ident == "Box" => s, + _ => return None, + }; + let args = match &path_seg.arguments { + PathArguments::AngleBracketed(args) => args, + _ => return None, + }; + match args.args.first() { + Some(GenericArgument::Type(Type::Tuple(tuple))) => tuple, + _ => return None, + } + } + Type::Reference(TypeReference { elem, .. }) => match &**elem { + Type::Tuple(tuple) => tuple, + _ => return None, + }, + _ => return None, + }; + Some(tuple.elems.len()) +} + +#[cfg(test)] +mod tests { + use anyhow::Result; + use macro_test_util::assert_pat_eq; + use synstructure::Structure; + + use super::*; + + #[test] + fn basic_to() -> Result<()> { + let input = quote! { + struct A { + a: i64, + b: i64, + #[ocamlrep(skip)] + c: f64, + d: String, + } + }; + assert_pat_eq::( + Ok(derive_to_ocamlrep(Structure::new(&syn::parse2(input)?))), + quote! { + #[allow(non_upper_case_globals)] + const _DERIVE_ocamlrep_ToOcamlRep_FOR_A: () = { + impl ::ocamlrep::ToOcamlRep for A { + fn to_ocamlrep<'__ocamlrep_derive_allocator, Alloc: ::ocamlrep::Allocator>( + &'__ocamlrep_derive_allocator self, + arena: &'__ocamlrep_derive_allocator Alloc, + ) -> ::ocamlrep::Value<'__ocamlrep_derive_allocator> { + use ::ocamlrep::Allocator; + match self { + A { + a: ref __binding_0, + b: ref __binding_1, + d: ref __binding_3, + .. + } => { + let mut block = arena.block_with_size_and_tag(3usize, 0u8); + arena.set_field(&mut block, 0usize, arena.add(__binding_0)); + arena.set_field(&mut block, 1usize, arena.add(__binding_1)); + arena.set_field(&mut block, 2usize, arena.add(__binding_3)); + block.build() + } + } + } + } + }; + }, + ); + Ok(()) + } + + #[test] + fn basic_from() -> Result<()> { + let input = quote! { + struct A { + a: i64, + b: i64, + #[ocamlrep(skip)] + c: f64, + d: String, + } + }; + assert_pat_eq::( + Ok(derive_from_ocamlrep(Structure::new(&syn::parse2(input)?))), + quote! { + #[allow(non_upper_case_globals)] + const _DERIVE_ocamlrep_FromOcamlRep_FOR_A: () = { + impl ::ocamlrep::FromOcamlRep for A { + fn from_ocamlrep( + value: ::ocamlrep::Value<'_> + ) -> ::std::result::Result { + use ::ocamlrep::FromOcamlRep; + let block = ::ocamlrep::from::expect_tuple(value, 3usize)?; + Ok(A { + a: ::ocamlrep::from::field(block, 0usize)?, + b: ::ocamlrep::from::field(block, 1usize)?, + c: ::std::default::Default::default(), + d: ::ocamlrep::from::field(block, 2usize)?, + }) + } + } + }; + }, + ); + Ok(()) + } +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/Cargo.toml new file mode 100644 index 00000000000..3323f266da4 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/Cargo.toml @@ -0,0 +1,22 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool:ocamlrep_ocamlpool + +[package] +name = "ocamlrep_ocamlpool" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" +build = "build.rs" + +[lib] +path = "lib.rs" +test = false +doctest = false +crate-type = ["lib", "staticlib"] + +[dependencies] +bumpalo = { version = "3.14.0", features = ["allocator_api", "collections"] } +ocamlrep = { path = "../ocamlrep" } + +[build-dependencies] +cc = "1.0.78" diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/build.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/build.rs new file mode 100644 index 00000000000..9a1b778918c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/build.rs @@ -0,0 +1,40 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +// Assume an opam environment (`eval "$(opam env --switch=default +// --set-switch)"`) then to find the prevailing standard library caml +// headers, `OCAMLLIB=$(ocamlopt.opt -config | grep standard_library: +// | awk '{ print $2 }')`. +fn ocamllib_dir() -> std::path::PathBuf { + let mut sh = std::process::Command::new("sh"); + sh.args([ + "-c", + "ocamlopt.opt -config | grep standard_library: | awk '{ print $2 }'", + ]); + let output = sh.output().unwrap().stdout; + let proposed_path = std::path::Path::new(std::str::from_utf8(&output).unwrap().trim()); + // A supercaml 'ocamlopt.opt' can report standard library paths that don't + // exist. + if proposed_path.exists() { + proposed_path.to_path_buf() + } else { + // Fallback to guessing the location given knowledge of where + // 'ocamlopt.opt' itself it. + let mut sh = std::process::Command::new("sh"); + sh.args(["-c", "which ocamlopt.opt"]); + let output = sh.output().unwrap().stdout; + std::path::Path::new(std::str::from_utf8(&output).unwrap().trim()) + .ancestors() + .nth(2) + .unwrap() + .join("lib/ocaml") + } +} + +fn main() { + // Tell Cargo that if the given file changes, to rerun this build script. + println!("cargo:rerun-if-changed=ocamlpool.c"); + cc::Build::new() + .include(ocamllib_dir().as_path().to_str().unwrap()) + .file("ocamlpool.c") + .compile("ocamlpool"); +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/dune b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/dune new file mode 100644 index 00000000000..c53d28c9bd2 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/dune @@ -0,0 +1,8 @@ +(library + (name ocamlpool) + (package errpy) + (wrapped false) + (modules) + (foreign_stubs + (language c) + (names ocamlpool))) diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/lib.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/lib.rs new file mode 100644 index 00000000000..f740c5c81ff --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/lib.rs @@ -0,0 +1,463 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::ffi::CString; +use std::panic::UnwindSafe; + +pub use bumpalo::Bump; +use ocamlrep::Allocator; +use ocamlrep::BlockBuilder; +pub use ocamlrep::FromOcamlRep; +pub use ocamlrep::FromOcamlRepIn; +use ocamlrep::MemoizationCache; +use ocamlrep::ToOcamlRep; +pub use ocamlrep::Value; + +extern "C" { + fn ocamlpool_enter(); + fn ocamlpool_leave(); + fn ocamlpool_reserve_block(tag: u8, size: usize) -> usize; + fn caml_failwith(msg: *const i8); + fn caml_initialize(addr: *mut usize, value: usize); + static ocamlpool_generation: usize; + + pub fn caml_named_value(name: *const std::ffi::c_char) -> *mut usize; + pub fn caml_callbackN_exn(closure: usize, n: std::ffi::c_int, args: *const usize) -> usize; +} + +pub struct Pool { + cache: MemoizationCache, +} + +impl Pool { + /// Prepare the ocamlpool library to allocate values directly on the OCaml + /// runtime's garbage-collected heap. + /// + /// # Safety + /// + /// The OCaml runtime is not thread-safe, and this function will interact + /// with it. If any other thread interacts with the OCaml runtime or + /// ocamlpool library during the lifetime of the `Pool`, undefined behavior + /// will result. + #[inline(always)] + pub unsafe fn new() -> Self { + ocamlpool_enter(); + Self { + cache: MemoizationCache::new(), + } + } + + #[inline(always)] + pub fn add<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + value.to_ocamlrep(self) + } +} + +impl Drop for Pool { + #[inline(always)] + fn drop(&mut self) { + unsafe { ocamlpool_leave() }; + } +} + +impl Allocator for Pool { + #[inline(always)] + fn generation(&self) -> usize { + unsafe { ocamlpool_generation } + } + + #[inline(always)] + fn block_with_size_and_tag(&self, size: usize, tag: u8) -> BlockBuilder<'_> { + let ptr = unsafe { ocamlpool_reserve_block(tag, size) as *mut Value<'_> }; + BlockBuilder::new(unsafe { std::slice::from_raw_parts_mut(ptr, size) }) + } + + #[inline(always)] + fn set_field<'a>(&self, block: &mut BlockBuilder<'a>, index: usize, value: Value<'a>) { + assert!(index < block.size()); + unsafe { + caml_initialize( + (self.block_ptr_mut(block) as *mut usize).add(index), + value.to_bits(), + ) + }; + } + + unsafe fn block_ptr_mut<'a>(&self, block: &mut BlockBuilder<'a>) -> *mut Value<'a> { + block.address() as *mut _ + } + + fn memoized<'a>( + &'a self, + ptr: usize, + size: usize, + f: impl FnOnce(&'a Self) -> Value<'a>, + ) -> Value<'a> { + let bits = self.cache.memoized(ptr, size, || f(self).to_bits()); + // SAFETY: The only memoized values in the cache are those computed in + // the closure on the previous line. Since f returns Value<'a>, any + // cached bits must represent a valid Value<'a>, + unsafe { Value::from_bits(bits) } + } + + fn add_root<'a, T: ToOcamlRep + ?Sized>(&'a self, value: &'a T) -> Value<'a> { + self.cache.with_cache(|| value.to_ocamlrep(self)) + } +} + +/// Convert the given value to an OCaml value on the OCaml runtime's +/// garbage-collected heap. +/// +/// # Safety +/// +/// The OCaml runtime is not thread-safe, and this function will interact with +/// it. If any other thread interacts with the OCaml runtime or ocamlpool +/// library during the execution of `to_ocaml`, undefined behavior will result. +/// +/// # Panics +/// +/// Panics upon attempts to re-enter `to_ocaml`. +#[inline(always)] +pub unsafe fn to_ocaml(value: &T) -> usize { + let pool = Pool::new(); + let result = pool.add_root(value); + result.to_bits() +} + +/// Catches panics in `f` and raises a OCaml exception of type Failure +/// with the panic message (if the panic was raised with a `&str` or `String`). +pub fn catch_unwind(f: impl FnOnce() -> usize + UnwindSafe) -> usize { + catch_unwind_with_handler(f, |msg: &str| -> Result { Err(msg.into()) }) +} + +/// Catches panics in `f` and raises a OCaml exception of type Failure +/// with the panic message (if the panic was raised with a `&str` or `String`). +/// `h` handles panic msg, it may re-raise by returning Err. +pub fn catch_unwind_with_handler( + f: impl FnOnce() -> usize + UnwindSafe, + h: impl FnOnce(&str) -> Result, +) -> usize { + let err = match std::panic::catch_unwind(f) { + Ok(value) => return value, + Err(err) => err, + }; + let msg: &str = if let Some(s) = err.downcast_ref::<&str>() { + s + } else if let Some(s) = err.downcast_ref::() { + s.as_str() + } else { + // TODO: Build a smarter message in this case (using panic::set_hook?) + "Panicked with non-string object" + }; + match h(msg) { + Ok(value) => return value, + Err(err) => unsafe { + let msg = CString::new(err).unwrap(); + caml_failwith(msg.as_ptr().cast()); + }, + } + unreachable!(); +} + +/// Assume that some Pool exists in some parent scope. Since ocamlpool is +/// implemented with statics, we don't need a reference to that pool to write to +/// it. +/// +/// Does not preserve sharing of values referred to by multiple references or +/// Rcs (but sharing is preserved for `ocamlrep::rc::RcOc`). +/// +/// # Safety +/// +/// The OCaml runtime is not thread-safe, and this function will interact with +/// it. If any other thread interacts with the OCaml runtime or ocamlpool +/// library during the execution of this function, undefined behavior will +/// result. +#[inline(always)] +pub unsafe fn add_to_ambient_pool(value: &T) -> usize { + let fake_pool = Pool { + cache: MemoizationCache::new(), + }; + let result = value.to_ocamlrep(&fake_pool).to_bits(); + std::mem::forget(fake_pool); + result +} + +/// Check if an OCaml value is an exception. +/// +/// For internal purposes. +pub fn is_exception_result(v: usize) -> bool { + v & 3 == 2 +} + +#[macro_export] +macro_rules! ocaml_ffi_fn { + (fn $name:ident($($param:ident: $ty:ty),+ $(,)?) -> $ret:ty $code:block) => { + #[no_mangle] + pub unsafe extern "C" fn $name ($($param: usize,)*) -> usize { + $crate::catch_unwind(|| { + fn inner($($param: $ty,)*) -> $ret { $code } + use $crate::FromOcamlRep; + $(let $param = <$ty>::from_ocaml($param).unwrap();)* + let result = inner($($param,)*); + $crate::to_ocaml(&result) + }) + } + }; + + (fn $name:ident() -> $ret:ty $code:block) => { + #[no_mangle] + pub unsafe extern "C" fn $name (_unit: usize) -> usize { + $crate::catch_unwind(|| { + fn inner() -> $ret { $code } + let result = inner(); + $crate::to_ocaml(&result) + }) + } + }; + + (fn $name:ident($($param:ident: $ty:ty),* $(,)?) $code:block) => { + $crate::ocaml_ffi_fn! { + fn $name($($param: $ty),*) -> () $code + } + }; +} + +/// Convenience macro for declaring OCaml FFI wrappers. +/// +/// Each parameter will be converted from OCaml using `ocamlrep` and the result +/// will be converted to OCaml using `ocamlrep` and allocated on the OCaml GC +/// heap using `ocamlpool`. +/// +/// Panics in the function body will be caught and converted to an OCaml +/// exception of type Failure. +#[macro_export] +macro_rules! ocaml_ffi { + ($(fn $name:ident($($param:ident: $ty:ty),* $(,)?) $(-> $ret:ty)? $code:block)*) => { + $($crate::ocaml_ffi_fn! { + fn $name($($param: $ty),*) $(-> $ret)* $code + })* + }; +} + +#[macro_export] +macro_rules! ocaml_ffi_with_arena_fn { + (fn $name:ident<$lifetime:lifetime>($arena:ident: $arena_ty:ty, $($param:ident: $ty:ty),+ $(,)?) -> $ret:ty $code:block) => { + #[no_mangle] + pub unsafe extern "C" fn $name ($($param: usize,)*) -> usize { + $crate::catch_unwind(|| { + use $crate::FromOcamlRepIn; + let arena = &$crate::Bump::new(); + fn inner<$lifetime>($arena: $arena_ty, $($param: usize,)*) -> $ret { + $(let $param = unsafe { + <$ty>::from_ocamlrep_in($crate::Value::from_bits($param), $arena).unwrap() + };)* + $code + } + let result = inner(arena, $($param,)*); + $crate::to_ocaml(&result) + }) + } + }; + + (fn $name:ident<$lifetime:lifetime>($arena:ident: $arena_ty:ty $(,)?) -> $ret:ty $code:block) => { + #[no_mangle] + pub unsafe extern "C" fn $name (_unit: usize) -> usize { + $crate::catch_unwind(|| { + fn inner<$lifetime>($arena: $arena_ty) -> $ret { $code } + let arena = &$crate::Bump::new(); + let result = inner(arena); + $crate::to_ocaml(&result) + }) + } + }; + + (fn $name:ident<$lifetime:lifetime>($($param:ident: $ty:ty),* $(,)?) $code:block) => { + $crate::ocaml_ffi_with_arena_fn! { + fn $name<$lifetime>($($param: $ty),*) -> () $code + } + }; +} + +/// Convenience macro for declaring OCaml FFI wrappers which use an arena to +/// allocate the arguments and return value. +/// +/// FFI functions declared with this macro must declare exactly one lifetime +/// parameter. The function's first value parameter must be a reference to a +/// `bumpalo::Bump` arena with that lifetime: +/// +/// ``` +/// ocaml_ffi_with_arena! { +/// fn swap_str_pair<'a>(arena: &'a Bump, pair: (&'a str, &'a str)) -> (&'a str, &'a str) { +/// (pair.1, pair.0) +/// } +/// } +/// ``` +/// +/// An OCaml extern declaration for this function would look like this: +/// +/// ``` +/// external swap_str_pair : string * string -> string * string = "swap_str_pair" +/// ``` +/// +/// Note that no parameter for the arena appears on the OCaml side--it is +/// constructed on the Rust side and lives only for the duration of one FFI +/// call. +/// +/// Each (non-arena) parameter will be converted from OCaml using +/// `ocamlrep::FromOcamlRepIn`, and allocated in the given arena (if its +/// `FromOcamlRepIn` implementation makes use of the arena). +/// +/// The return value (which may be allocated in the given arena, if convenient) +/// will be converted to OCaml using `ocamlrep::ToOcamlRep`. The converted OCaml +/// value will be allocated on the OCaml heap using `ocamlpool`. +/// +/// Panics in the function body will be caught and converted to an OCaml +/// exception of type `Failure`. +#[macro_export] +macro_rules! ocaml_ffi_with_arena { + ($(fn $name:ident<$lifetime:lifetime>($($param:ident: $ty:ty),* $(,)?) $(-> $ret:ty)? $code:block)*) => { + $($crate::ocaml_ffi_with_arena_fn! { + fn $name<$lifetime>($($param: $ty),*) $(-> $ret)* $code + })* + }; +} + +#[macro_export] +macro_rules! ocaml_ffi_arena_result_fn { + (fn $name:ident<$lifetime:lifetime>($arena:ident: $arena_ty:ty, $($param:ident: $ty:ty),+ $(,)?) -> $ret:ty $code:block) => { + #[no_mangle] + pub unsafe extern "C" fn $name ($($param: usize,)*) -> usize { + $crate::catch_unwind(|| { + fn inner<$lifetime>($arena: $arena_ty, $($param: $ty,)*) -> $ret { + $code + } + use $crate::FromOcamlRep; + $(let $param = <$ty>::from_ocaml($param).unwrap();)* + let arena = &$crate::Bump::new(); + let result = inner(arena, $($param,)*); + $crate::to_ocaml(&result) + }) + } + }; +} + +/// Convenience macro for declaring OCaml FFI wrappers which use an arena to +/// just the return value. +/// +/// FFI functions declared with this macro must declare exactly one lifetime +/// parameter. The function's first value parameter must be a reference to a +/// `bumpalo::Bump` arena with that lifetime: +/// +/// ``` +/// ocaml_ffi_arena_result! { +/// fn parse_example<'a>(arena: &'a Bump, text: String) -> ('a str, &'a str) { +/// /* copy parts of text into arena while parsing */ +/// (pair.1, pair.0) +/// } +/// } +/// ``` +/// +/// An OCaml extern declaration for this function would look like this: +/// +/// ``` +/// external parse_example : string -> string * string = "parse_example" +/// ``` +/// +/// Note that no parameter for the arena appears on the OCaml side--it is +/// constructed on the Rust side and lives only for the duration of one FFI +/// call. +/// +/// Each parameter after the arena parameter will be converted from OCaml using +/// `ocamlrep` and passed in as an owned value. +/// +/// The return value (which may be allocated in the given arena, if convenient) +/// will be converted to OCaml using `ocamlrep::ToOcamlRep`. The converted OCaml +/// value will be allocated on the OCaml heap using `ocamlpool`. +/// +/// Panics in the function body will be caught and converted to an OCaml +/// exception of type `Failure`. +#[macro_export] +macro_rules! ocaml_ffi_arena_result { + ($(fn $name:ident<$lifetime:lifetime>($($param:ident: $ty:ty),* $(,)?) $(-> $ret:ty)? $code:block)*) => { + $($crate::ocaml_ffi_arena_result_fn! { + fn $name<$lifetime>($($param: $ty),*) $(-> $ret)* $code + })* + }; +} + +#[macro_export] +macro_rules! ocaml_registered_function_fn { + // This needs to be first, as macro matching is linear. + // + // caml_callback_exn works as it directly calls into the implemented OCaml functions. + // + // caml_callback{2,3,N}_exn don't work, as they go through caml_apply2, + // caml_apply3 etc. which for some reason crashes! + // + // TODO: FIgure out how to make caml_apply2 and friends not crash, and remove the below rule. + ($ocaml_name:expr, fn $name:ident($param1:ident: $ty1:ty, $($params:ident: $ty:ty),+ $(,)?) -> $ret:ty) => { + compile_error!("We don't support functions with more than one parameter."); + }; + + ($ocaml_name:expr, fn $name:ident($($param:ident: $ty:ty),+ $(,)?) -> $ret:ty) => { + #[no_mangle] + pub unsafe fn $name ($($param: $ty,)*) -> $ret { + use std::sync::OnceLock; + static FN: OnceLock = OnceLock::new(); + let the_function_to_call = *FN.get_or_init(|| { + let the_function_to_call_name = std::ffi::CString::new($ocaml_name).expect("string contained null byte"); + let the_function_to_call = $crate::caml_named_value(the_function_to_call_name.as_ptr()); + if the_function_to_call.is_null() { + panic!("Could not find function. Use Callback.register"); + } + *the_function_to_call + }); + let args_to_function: Vec = vec![$($crate::to_ocaml(&$param),)*]; + let args_to_function_ptr: *const usize = args_to_function.as_ptr(); + let result = $crate::caml_callbackN_exn(the_function_to_call, args_to_function.len().try_into().unwrap(), args_to_function_ptr); + if $crate::is_exception_result(result) { + panic!("OCaml function threw an unknown exception"); + } + let result = <$ret>::from_ocaml(result).unwrap(); + result + } + }; + + ($ocaml_name:expr, fn $name:ident() -> $ret:ty) => { + unsafe fn $name() -> $ret { + $crate::ocaml_registered_function_fn!( + $ocaml_name, + fn inner(_unit: ()) -> $ret + ); + inner(()) + } + }; + + ($ocaml_name:expr, fn $name:ident($($param:ident: $ty:ty),* $(,)?)) => { + $crate::ocaml_registered_function_fn!( + $ocaml_name, + fn $name($($param: $ty),*) -> () + ); + }; +} + +/// Convenience macro for declaring Rust FFI wrappers around OCaml-defined functions. +/// +/// Each parameter will be converted to OCaml using `ocamlrep` and allocated on +/// the OCaml GC heap using `ocamlpool`. The result will be converted from OCaml +/// using `ocamlrep`. +/// +/// Exceptions in OCaml will be caught and converted to a Rust panic. The panic +/// will not contain useful information due to the limitations of deserializing +/// arbitrary OCaml exceptions. +#[macro_export] +macro_rules! ocaml_registered_function { + ($(fn $name:ident($($param:ident: $ty:ty),* $(,)?) $(-> $ret:ty)?;)*) => { + $($crate::ocaml_registered_function_fn!( + stringify!($name), + fn $name($($param: $ty),*) $(-> $ret)* + );)* + }; +} diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.c b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.c new file mode 100644 index 00000000000..aa0e541ca56 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.c @@ -0,0 +1,412 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +#define CAML_NAME_SPACE + +#include +#include + +#if OCAML_VERSION < 50000 + +#include "ocamlpool.h" + +#if OCAML_VERSION < 40700 + +extern value* caml_young_ptr; +extern uintnat caml_allocated_words; +typedef struct { + void* block; /* address of the malloced block this chunk lives in */ + asize_t alloc; /* in bytes, used for compaction */ + asize_t size; /* in bytes */ + char* next; +} heap_chunk_head; + +#define Chunk_size(c) (((heap_chunk_head*)(c))[-1]).size + +#else + +#define CAML_INTERNALS + +#endif /* OCAML_VERSION < 40700 */ + +#include +#include +#include + +/* Global state + * =========================================================================== + */ + +/* An OCaml root pointing to the current chunk, or Val_unit */ +static value ocamlpool_root = Val_unit; + +/* 1 iff we are inside an ocamlpool section */ +static int ocamlpool_in_section = 0; + +/* For sanity checks, caml_young_ptr is copied when entering the section. + * While inside the section, we check that the value has not changed as this + * would result in difficult to track bugs. */ +static void* ocamlpool_sane_young_ptr; + +/* The GC color to give to blocks that are allocated inside the pool. + * Updated when allocating a new chunk and when entering the section. */ +color_t ocamlpool_color = 0; + +static int ocamlpool_allocated_chunks_counter = 0; +static size_t ocamlpool_next_chunk_size = OCAMLPOOL_DEFAULT_SIZE; + +/* */ +uintnat ocamlpool_generation = 0; +value *ocamlpool_limit = 0, *ocamlpool_cursor = 0, *ocamlpool_bound = 0; + +/* Sanity checks + * =========================================================================== + * + * Contracts checking that the invariants are maintained inside the library + * and that the API is used correctly. + */ + +static void abort_unless(int x, const char* message) { + if (!x) { + fprintf(stderr, "OCamlPool invariant violation (%d): %s\n", x, message); + abort(); + } +} + +#define WORD_SIZE (sizeof(void*)) +#define IS_WORD_ALIGNED(x) (((x) & (WORD_SIZE - 1)) == 0) + +#ifndef OCAMLPOOL_NO_ASSERT + +static void ocamlpool_assert(int x, const char* message) { + abort_unless(x, message); +} + +#else + +static void ocamlpool_assert(int x, const char* message) { + (void)x; +} + +#endif /* !defined(OCAMLPOOL_NO_ASSERT) */ + +static void assert_in_section(void) { + ocamlpool_assert( + ocamlpool_in_section == 1 && ocamlpool_sane_young_ptr == caml_young_ptr, + "assert_in_section"); +} + +static void assert_out_of_section(void) { + ocamlpool_assert(ocamlpool_in_section == 0, "assert_out_of_section"); +} + +#define OCAMLPOOL_SET_HEADER(v, size, tag, color) \ + *((header_t*)(((value*)(v)) - 1)) = Make_header(size, tag, color); + +/* OCamlpool sections + * =========================================================================== + * + * Inside the section, the OCaml heap will be in an invalid state. + * OCaml runtime functions should not be called. + * + * Since the GC will never run while in an OCaml pool section, + * it is safe to keep references to OCaml values as long as these does not + * outlive the section. + */ + +static void init_cursor(void) { + ocamlpool_limit = + (value*)ocamlpool_root + 1; // Need one word left for header block + ocamlpool_bound = (value*)ocamlpool_root + Wosize_val(ocamlpool_root); + ocamlpool_cursor = ocamlpool_bound; +} + +static void ocamlpool_chunk_alloc(void); + +__attribute__((no_sanitize("undefined"))) static void ocamlpool_chunk_truncate( + void) { + if (ocamlpool_root == Val_unit) { + return; + } + + size_t word_size = (value*)ocamlpool_cursor - (value*)ocamlpool_root; + + OCAMLPOOL_SET_HEADER(ocamlpool_root, word_size, String_tag, ocamlpool_color); + value* first_word = (value*)ocamlpool_root; + abort_unless(word_size > 0, "ocamlpool_truncate 0 words left for terminator"); + first_word[word_size - 1] = 0; +} + +void ocamlpool_enter(void) { + assert_out_of_section(); + + static int ocamlpool_initialized = 0; + if (ocamlpool_initialized == 0) { + ocamlpool_initialized = 1; + caml_register_global_root(&ocamlpool_root); + } + + if (ocamlpool_root != Val_unit) { + ocamlpool_color = caml_allocation_color((void*)ocamlpool_root); + init_cursor(); + } else { + ocamlpool_chunk_alloc(); + } + + ocamlpool_in_section = 1; + ocamlpool_sane_young_ptr = caml_young_ptr; + + assert_in_section(); +} + +void ocamlpool_leave(void) { + if (ocamlpool_in_section != 1) { + return; + } + + assert_in_section(); + + ocamlpool_chunk_truncate(); + ocamlpool_in_section = 0; + ocamlpool_limit = 0; + ocamlpool_bound = 0; + ocamlpool_cursor = 0; + + ocamlpool_generation += 1; + + assert_out_of_section(); +} + +/* Memory chunking + * =========================================================================== + * + * Pool memory is allocated by large chunks. + * The default settings should work well, though it is possible to tweak + * and monitor these parameters. + * + * FIXME: The current chunking system might be incorrect if the incremental + * scan stops in the middle of the unallocated chunk. + * To prevent that, this chunk is marked as non-scannable (a string), + * but I should double check the behavior of Obj.truncate. + */ + +/* Number of chunks allocated by ocamlpool since beginning of execution */ +int ocamlpool_allocated_chunks(void) { + return ocamlpool_allocated_chunks_counter; +} + +/* Controlling the size of allocated chunks. + * Must be multiple of sizeof(void*), preferably >= 2^20. */ +size_t ocamlpool_get_next_chunk_size(void) { + return ocamlpool_next_chunk_size; +} + +void ocamlpool_set_next_chunk_size(size_t sz) { + abort_unless(IS_WORD_ALIGNED(sz), "ocamlpool_set_next_chunk_size"); + ocamlpool_next_chunk_size = sz; +} + +void ocamlpool_chunk_release(void) { + ocamlpool_chunk_truncate(); + ocamlpool_limit = 0; + ocamlpool_bound = 0; + ocamlpool_cursor = 0; + ocamlpool_root = Val_unit; +} + +static void ocamlpool_chunk_alloc(void) { + ocamlpool_assert( + ocamlpool_next_chunk_size > 1, + "ocamlpool_chunk_alloc: next chunk size > 1"); + void* block = caml_alloc_for_heap(ocamlpool_next_chunk_size * WORD_SIZE); + abort_unless(block != NULL, "ocamlpool_chunk_alloc"); + + size_t chunk_size = Chunk_size(block); + ocamlpool_assert( + IS_WORD_ALIGNED(chunk_size), "ocamlpool_chunk_alloc: is word-aligned"); + + ocamlpool_color = caml_allocation_color(block); + ocamlpool_allocated_chunks_counter += 1; + + size_t words = (chunk_size / WORD_SIZE); + + // Adjust root to account for ocaml header + ocamlpool_root = (value)((value*)block + 1); + OCAMLPOOL_SET_HEADER(ocamlpool_root, words - 1, String_tag, ocamlpool_color); + init_cursor(); + caml_add_to_heap(block); + + caml_allocated_words += words; +} + +/* OCaml value allocations + * =========================================================================== + * + * A fast way to reserve OCaml memory when inside ocamlpool section. + */ +value ocamlpool_reserve_block(int tag, size_t words) { + // Add 1 word for rust header + size_t size = words + 1; + value* pointer = ocamlpool_cursor - size; + + if (pointer < ocamlpool_limit || pointer >= ocamlpool_bound) { + size_t old_ocamlpool_next_chunk_size = ocamlpool_next_chunk_size; + if (size >= ocamlpool_next_chunk_size) { + // Add 2 words for ocaml's header + block + ocamlpool_next_chunk_size = size + 2; + } + ocamlpool_chunk_truncate(); + ocamlpool_chunk_alloc(); + ocamlpool_next_chunk_size = old_ocamlpool_next_chunk_size; + pointer = ocamlpool_cursor - size; + abort_unless(pointer >= ocamlpool_limit, "ocamlpool_reserve_block"); + } + + ocamlpool_cursor = pointer; + value result = (value)(pointer + 1); + + OCAMLPOOL_SET_HEADER(result, words, tag, ocamlpool_color); + return result; +} + +value ocamlpool_reserve_string(size_t bytes) { + assert_in_section(); + + size_t words = + ((bytes + 1 /*null-ending*/ + (WORD_SIZE - 1) /*rounding*/) / WORD_SIZE); + size_t length = (words * WORD_SIZE); + abort_unless(words > 0, "ocamlpool_reserve_string 0 length"); + value result = ocamlpool_reserve_block(String_tag, words); + + ((value*)result)[words - 1] = 0; + ((char*)result)[length - 1] = length - bytes - 1; + + return result; +} +#else /* >= ocaml-5.0 */ + +#define CAML_INTERNALS + +#include "ocamlpool.h" + +#include +#include +#include +#include + +/* Global state + * =========================================================================== + */ + +/* 1 iff we are inside an ocamlpool section */ +static int ocamlpool_in_section = 0; + +/* For sanity checks, caml_young_ptr is copied when entering the section. + * While inside the section, we check that the value has not changed as this + * would result in difficult to track bugs. */ +static void* ocamlpool_sane_young_ptr; + +/* Sanity checks + * =========================================================================== + * + * Contracts checking that the invariants are maintained inside the library + * and that the API is used correctly. + */ + +static void abort_unless(int x, const char* message) { + if (!x) { + fprintf(stderr, "OCamlPool invariant violation (%d): %s\n", x, message); + abort(); + } +} + +#ifndef OCAMLPOOL_NO_ASSERT + +static void ocamlpool_assert(int x, const char* message) { + abort_unless(x, message); +} + +#else + +static void ocamlpool_assert(int x, const char* message) { + (void)x; +} + +#endif /* !defined(OCAMLPOOL_NO_ASSERT) */ + +static void assert_in_section(void) { + ocamlpool_assert( + ocamlpool_in_section == 1 && ocamlpool_sane_young_ptr == caml_young_ptr, + "assert_in_section"); +} + +static void assert_out_of_section(void) { + ocamlpool_assert(ocamlpool_in_section == 0, "assert_out_of_section"); +} + +/* OCamlpool sections + * =========================================================================== + * + * Inside the section, the OCaml heap will be in an invalid state. + * OCaml runtime functions should not be called. + * + * Since the GC will never run while in an OCaml pool section, + * it is safe to keep references to OCaml values as long as these does not + * outlive the section. + */ + +void ocamlpool_enter(void) { + assert_out_of_section(); + + ocamlpool_in_section = 1; + ocamlpool_sane_young_ptr = caml_young_ptr; +} + +void ocamlpool_leave(void) { + assert_in_section(); + + ocamlpool_in_section = 0; + + // We require no GC until control has returned to OCaml thus we may + // not call this here! + // caml_process_pending_actions(); +} + +/* OCaml value allocations + * =========================================================================== + * + * A fast way to reserve OCaml memory when inside ocamlpool section. + */ +value ocamlpool_reserve_block(tag_t tag, mlsize_t wosize) { + caml_domain_state* d = Caml_state; + value* p = caml_shared_try_alloc( + d->shared_heap, + wosize, + tag, +#if OCAML_VERSION >= 50100 + 0 /* no reserved bits */ +#endif +#if OCAML_VERSION < 50200 + , + 0 /* not pinned*/ +#endif + ); + d->allocated_words += Whsize_wosize(wosize); + + if (p == NULL) { + /* TODO: handle this case... */ + abort(); + } + + Hd_hp(p) = Make_header(wosize, tag, caml_global_heap_state.MARKED); + return Val_hp(p); +} + +// This definition is provided for backwards compatibility with OCaml 4.x's +// `ocamlrep_ocamlpool` implementation. +uintnat ocamlpool_generation = 0; + +#endif /* OCAML_VERSION < 50000 */ diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.h b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.h new file mode 100644 index 00000000000..f4dc5aee6db --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/ocamlpool.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +#ifndef OCAMLPOOL_H +#define OCAMLPOOL_H + +#include +#include + +/* OCamlpool sections + * =========================================================================== + * + * Inside the section, the OCaml heap will be in an invalid state. + * OCaml runtime functions should not be called. + * + * Since the GC will never run while in an OCaml pool section, + * it is safe to keep references to OCaml values as long as these does not + * outlive the section. + */ + +void ocamlpool_enter(void); +void ocamlpool_leave(void); + +/* OCaml value allocations + * =========================================================================== + * + * Reserve OCaml memory when inside ocamlpool section. + */ + +#if OCAML_VERSION < 50000 +value ocamlpool_reserve_block(int tag, size_t words); +#else +value ocamlpool_reserve_block(tag_t tag, mlsize_t words); +#endif + +#if OCAML_VERSION < 50000 + +/* + * FIXME: The current system always maintain the heap in a well formed state, + * making the current pool look like a string to the OCaml GC and + * fragmenting it during allocation. + * This is not necessary, it should be correct to just keep a pointer + * and the size of the unallocated area while in the section and make + * it look like a string when leaving the section. + * FIXME: The current chunking system might be incorrect if the incremental + * scan stops in the middle of the unallocated chunk. + * To prevent that, this chunk is marked as non-scannable (a string), + * but I should double check the behavior of Obj.truncate. + * FIXME: For now, the chunk is just strongly referenced during used and + * unreferenced when released. + * Improvements: + * - make it weak so that OCaml GC can grab it under memory pressure + * - add it to freelist on release, so that memory can be reclaimed + * before next GC. + */ + +/* Memory chunking + * =========================================================================== + * + * Pool memory is allocated by large chunks. + * The default settings should work well, though it is possible to tweak + * and monitor these parameters. + * + */ + +/* Number of chunks allocated by ocamlpool since beginning of execution */ +int ocamlpool_allocated_chunks(void); + +/* Controlling the size of allocated chunks. + * >= 512, preferably >= 2^20 + * + * NOTE: When changing this value, change the magic number in ocamlpool_test.rs + */ +#define OCAMLPOOL_DEFAULT_SIZE (1024 * 1024) +size_t ocamlpool_get_next_chunk_size(void); +void ocamlpool_set_next_chunk_size(size_t sz); + +/* Return the current chunk to OCaml memory system */ +void ocamlpool_chunk_release(void); + +value ocamlpool_reserve_string(size_t bytes); + +extern color_t ocamlpool_color; +extern value *ocamlpool_limit, *ocamlpool_cursor, *ocamlpool_bound; + +#endif /* OCAML_VERSION < 50000 */ + +// Defined for now in the `OCAML_VERSION >= 50000` case too for compatibility +// with the expectations of `ocamlrep_ocamlpool`. +extern uintnat ocamlpool_generation; + +#endif /* !defined(OCAMLPOOL_H) */ diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/Cargo.toml b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/Cargo.toml new file mode 100644 index 00000000000..29aab0d0384 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/Cargo.toml @@ -0,0 +1,20 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test:ocamlpool_test + +[package] +name = "ocamlpool_test" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "ocamlpool_test.rs" +doctest = false +crate-type = ["lib", "staticlib"] + +[dependencies] +anyhow = "1.0.75" +cargo_test_utils = { path = "../../cargo_test_utils" } +ocamlrep_ocamlpool = { path = ".." } +once_cell = "1.12" +tempfile = "3.8" diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.ml b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.ml new file mode 100644 index 00000000000..cb0f8b1d882 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.ml @@ -0,0 +1,33 @@ +(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + *) + +external test : unit -> unit = "test" +external test_call_ocaml_from_rust : unit -> unit = "test_call_ocaml_from_rust" + +let f_unit_to_unit (): unit = () +let f_one_arg_to_unit (x: int) = assert (x = 3) +let f_sum_tuple ((x,y):int*int): int = x + y + +(* Although the test is entirely written in rust, + * we need to build the rust code with the ocaml runtime dependencies + * in order to allocate memory for ocaml. Calling rust from ocaml + * is a good way of ensuring this dependecy is built. + *) +let () = begin + print_endline "[ocamlpool_test][info]: start"; + + Callback.register "f_unit_to_unit" f_unit_to_unit; + Callback.register "f_one_arg_to_unit" f_one_arg_to_unit; + Callback.register "f_sum_tuple" f_sum_tuple; + + test (); + + test_call_ocaml_from_rust (); + + print_endline "[ocamlpool_test][info]: finish" +end diff --git a/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.rs b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.rs new file mode 100644 index 00000000000..b6bf8e98bb4 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/ocamlrep_ocamlpool/test/ocamlpool_test.rs @@ -0,0 +1,146 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#![allow(unused_crate_dependencies)] +#![feature(exit_status_error)] + +use ocamlrep_ocamlpool::ocaml_ffi; +use ocamlrep_ocamlpool::ocaml_registered_function; +use ocamlrep_ocamlpool::FromOcamlRep; + +extern "C" { + fn ocamlpool_enter(); + fn ocamlpool_reserve_block(tag: u8, size: usize) -> usize; + fn ocamlpool_leave(); +} + +// This test attempts to catch off by one issues in ocamlpool.c + +// Magic constant needs to fulfill two requirements: +// Needs to be above the OCAMLPOOL_DEFAULT_SIZE constant in ocamlpool.h +// This requirement is easy to fulfill +// Needs to be the exact size of memory block allocated by ocamlpool_reserve_block +// which is given by the Chunk_size call in chunk_alloc in ocamlpool.c +// This requirement requires some magic +const MAGIC_MEMORY_SIZE: usize = 1053183; + +ocaml_registered_function! { + fn f_unit_to_unit(); + fn f_one_arg_to_unit(x: i64); + fn f_sum_tuple(args: (i64, i64)) -> i64; +} + +ocaml_ffi! { + fn test() { + unsafe { + ocamlpool_enter(); + // This line will crash on off by one error + ocamlpool_reserve_block(0, MAGIC_MEMORY_SIZE); + ocamlpool_leave(); + } + } + + fn test_call_ocaml_from_rust() { + for _ in 0..4 { + unsafe { + f_unit_to_unit(); + f_one_arg_to_unit(3); + assert!(f_sum_tuple((3, 4)) == 7); + } + } + } +} + +// [Note: Test blocks for Cargo] +// ----------------------------- +// With buck, where testing involves compiling OCaml we make use of +// `ocaml_binary` & `custom_unnittest` rules. +// +// When testing with cargo we instead use `#[cfg(test_blocks)]` within which we +// compile OCaml "manually" using the rust `command` crate. Thus, in these cases +// the `#[cfg(test)]` blocks are for cargo only & not buck. We express that +// according to the following schema: +// ``` +// rust_library( +// name = "foo_test", +// ... +// autocargo = { +// ... +// "test": True, // Yes, unittests for Cargo... +// ... +// }, +// ... +// unittests=False, // No! No, no unittests for Buck! +// ... +// ) +//``` +// +// If in such a `#[cfg(test)]` block we now wish to use a crate not otherwise +// dependend upon & put it in the target's `deps` section in `TARGETS` there +// will be an unsused-crate error. If we put it in the target's `test_deps` +// section in `TARGETS` buck will rightly complain that `unittests=False` (so +// how can there be `tests_deps`?). +// +// The workaround I employ is to add `allow(unused_crate_dependencies)` to this +// module. That way they can be enumerated in the `deps` and are thereby +// availabe for use in the `#[cfg(test)]` blocks. + +#[cfg(test)] +mod tests { + use anyhow::Result; + use cargo_test_utils::*; + use tempfile::TempDir; + + #[test] + fn ocamlpool_test() -> Result<()> { + let tmp_dir = TempDir::with_prefix("ocamlpool_test.")?; + std::fs::copy( + "ocamlpool_test.ml", + tmp_dir.path().join("ocamlpool_test.ml"), + )?; + let compile_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-c", + "ocamlpool_test.ml", + "-o", + "ocamlpool_test_ml.cmx", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(compile_cmd).map_err(fmt_exit_status_err), Ok(())); + let link_cmd = cmd( + "ocamlopt.opt", + &[ + "-verbose", + "-o", + "ocamlpool_test", + "ocamlpool_test_ml.cmx", + "-ccopt", + &("-L".to_owned() + workspace_dir(&["target", build_flavor()]).to_str().unwrap()), + "-cclib", + "-locamlpool_test", + "-cclib", + "-locamlrep_ocamlpool", + ], + Some(tmp_dir.path()), + ); + assert_eq!(run(link_cmd).map_err(fmt_exit_status_err), Ok(())); + let ocamlpool_test_cmd = cmd( + tmp_dir + .path() + .join("ocamlpool_test") + .as_path() + .to_str() + .unwrap(), + &[], + None, + ); + assert_eq!(run(ocamlpool_test_cmd).map_err(fmt_exit_status_err), Ok(())); + tmp_dir.close()?; + Ok(()) + } +} diff --git a/source/errpy/vendor/ocaml/interop/oss/.buckconfig b/source/errpy/vendor/ocaml/interop/oss/.buckconfig new file mode 100644 index 00000000000..bc15e5c3ca0 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/.buckconfig @@ -0,0 +1,20 @@ +[repositories] +root = . +prelude = prelude +shim = shim + +[repository_aliases] +config = prelude +ovr_config = prelude +toolchains = shim +fbcode = shim +fbcode_macros = shim +fbsource = shim +buck = shim + +[parser] +target_platform_detector_spec = target:root//...->prelude//platforms:default target:shim//...->prelude//platforms:default + +# Enable this in the fullness of time. +# [buildfile] +# name=TARGETS diff --git a/source/errpy/vendor/ocaml/interop/oss/.gitignore b/source/errpy/vendor/ocaml/interop/oss/.gitignore new file mode 100644 index 00000000000..ac55e79dee5 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/.gitignore @@ -0,0 +1,10 @@ +target +cargo-out +Cargo.lock +buck-out +shim/third-party/rust/BUCK +shim/third-party/rust/vendor +shim/third-party/ocaml/opam +shim/third-party/ocaml/standard_library +**/.DS_Store +**/.cargo diff --git a/source/errpy/vendor/ocaml/interop/oss/CHANGELOG.md b/source/errpy/vendor/ocaml/interop/oss/CHANGELOG.md new file mode 100644 index 00000000000..fa4599a80db --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/CHANGELOG.md @@ -0,0 +1,2 @@ +### 0.alpha (December, 2022) +Creation of the repository diff --git a/source/errpy/vendor/ocaml/interop/oss/CODE_OF_CONDUCT.md b/source/errpy/vendor/ocaml/interop/oss/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..3232ed66556 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/CODE_OF_CONDUCT.md @@ -0,0 +1,80 @@ +# Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic +address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a +professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when +an individual is representing the project or its community in public spaces. +Examples of representing a project or community include using an official +project e-mail address, posting via an official social media account, or acting +as an appointed representative at an online or offline event. Representation of +a project may be further defined and clarified by project maintainers. + +This Code of Conduct also applies outside the project spaces when there is a +reasonable belief that an individual's behavior may have a negative impact on +the project or its community. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/source/errpy/vendor/ocaml/interop/oss/CONTRIBUTING.md b/source/errpy/vendor/ocaml/interop/oss/CONTRIBUTING.md new file mode 100644 index 00000000000..747c24bc275 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# Contributing to ocamlrep +We want to make contributing to this project as easy and transparent as +possible. + +## Our Development Process +The project is in its early steps and the process is not yet finalized. + +## Pull Requests +We actively welcome your pull requests. + +1. Fork the repo and create your branch from `main`. +2. Code shall pass our test-suite. +3. If you've changed APIs, update the documentation. +4. If you haven't already, complete the Contributor License Agreement ("CLA"). + +## Contributor License Agreement ("CLA") +In order to accept your pull request, we need you to submit a CLA. You only need +to do this once to work on any of Facebook's open source projects. + +Complete your CLA here: + +## Issues +We use GitHub issues to track public bugs. Please ensure your description is +clear and has sufficient instructions to be able to reproduce the issue. + +Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe +disclosure of security bugs. In those cases, please go through the process +outlined on that page and do not file a public issue. + +## Coding Style +* 2 spaces for indentation rather than tabs +* 80 character line length if possible + +## License +By contributing to ocamlrep, you agree that your contributions will be licensed +under the LICENSE file in the root directory of this source tree. diff --git a/source/errpy/vendor/ocaml/interop/oss/LICENSE b/source/errpy/vendor/ocaml/interop/oss/LICENSE new file mode 100644 index 00000000000..b93be90515c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Meta Platforms, Inc. and affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/source/errpy/vendor/ocaml/interop/oss/README-BUCK.md b/source/errpy/vendor/ocaml/interop/oss/README-BUCK.md new file mode 100644 index 00000000000..73cce243983 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/README-BUCK.md @@ -0,0 +1,62 @@ +# Building ocamlrep with Buck2 + +## Setup + +These are things that need to be done once to get going. + +### Install Buck2 + +Buck2 provides prebuilt binaries. For example the following commands will install a prebuilt Buck2 and symlink it into `/usr/local/bin`. +```bash + wget https://github.com/facebook/buck2/releases/download/latest/buck2-"$PLAT".zst + zstd -d buck2-"$PLAT".zst -o buck2 + chmod +x buck2 + sudo ln -s "$(pwd)"/buck2 /usr/local/bin/buck2 +``` +Valid values for `$PLAT` are `x86_64-unknown-linux-gnu` on Linux, `x86_64-apple-darwin` on x86 macOS and `aarch64-apple-darwin` on ARM macOS. + +It's also possible to install Buck2 from source into `~/.cargo/bin` like this. +```bash + cargo +nightly-2023-12-11 install --git https://github.com/facebook/buck2.git buck2 +``` +*Note: If on aarch64-apple-darwin then be sure install to `brew install protobuf` and for the now it's necessary to add +```bash + export BUCK2_BUILD_PROTOC=/opt/homebrew/opt/protobuf/bin/protoc + export BUCK2_BUILD_PROTOC_INCLUDE=/opt/homebrew/opt/protobuf/include +``` +to the build environment.* + +### Install Reindeer + +Install the `reindeer` binary from source into '~/.cargo/bin' like this. +```bash + cargo +nightly-2023-12-11 install --git https://github.com/facebookincubator/reindeer.git reindeer +``` + +*Note: Make sure after installing Buck2 and Reindeer to configure your `PATH` environment variable if necessary so they can be found.* + +### Install the OCaml package Manager + +If you haven't already, install [opam](https://opam.ocaml.org/). + +When opam has been installed execute `~/.ocaml-setup.sh` from the root of the distribution. The effect of `ocaml-setup.sh` is to create symlinks in `shim/third/party/ocaml` that point into the local opam installation. + +*Note: The script assumes that [`OPAM_SWITCH_PREFIX`](https://opam.ocaml.org/doc/Manual.html#Switches) is set.* + +## Vendor sources & generate buck rules for ocamlrep's Rust dependencies + +[Reindeer](https://github.com/facebookincubator/reindeer) is a a tool that imports Rust crates from crates.io and generates Buck2 build rules for them. Run it from the root of the ocamlrep repository like this. +```bash + reindeer --third-party-dir shim/third-party/rust buckify +``` + +That's it, you're all set. + +## Profit! + +Run this command from the root of the repository to build all the targets you can. +``` + buck2 build root//... +``` + +More examples and more detail about building with Buck2 are available on the [Buck2 website](https://buck2.build/)! diff --git a/source/errpy/vendor/ocaml/interop/oss/ocaml-setup.sh b/source/errpy/vendor/ocaml/interop/oss/ocaml-setup.sh new file mode 100755 index 00000000000..f31bd4af6ff --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/oss/ocaml-setup.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under both the MIT license found in the +# LICENSE-MIT file in the root directory of this source tree and the Apache +# License, Version 2.0 found in the LICENSE-APACHE file in the root directory +# of this source tree. + +set -euxo pipefail + +if ! command -v opam &> /dev/null +then + echo "opam is not installed, which is a dependency for building targets in ocaml." + exit +fi + +set +u +if [ -z "$OPAM_SWITCH_PREFIX" ]; then + echo "OPAM_SWITCH_PREFIX is undefined. First execute \`eval (\$opam env)\` and then try running $0 again." + exit +fi +set -u + +# Link 'third-party/ocaml/opam'. +if [ ! -L shim/third-party/ocaml/opam ]; then + (cd shim/third-party/ocaml && ln -s "$OPAM_SWITCH_PREFIX" opam) +else + echo "Link 'shim/third-party/ocaml/opam' exists. To overwrite it, first remove it and run $0 again" +fi diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr/rust_to_ocaml_attr.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr/rust_to_ocaml_attr.rs new file mode 100644 index 00000000000..b03f94b8d31 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr/rust_to_ocaml_attr.rs @@ -0,0 +1,21 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use proc_macro::TokenStream; + +/// This attribute macro is intended to be consumed by the rust_to_ocaml codegen +/// tool, so this proc macro doesn't need to do anything other than return the +/// item (with the rust_to_ocaml attribute stripped by rustc). +/// +/// Use of the rust_to_ocaml attribute in positions other than items (like field +/// definitions) are stripped by ocamlrep_derive macros (which is simpler than +/// filtering them from the `item` in this crate). +/// +/// We may want to add validation later so that incorrect use of the attribute +/// emits errors at compile time, but stripping is good enough for now. +#[proc_macro_attribute] +pub fn rust_to_ocaml(_attr: TokenStream, item: TokenStream) -> TokenStream { + item +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/Cargo.toml b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/Cargo.toml new file mode 100644 index 00000000000..c9ba18617f8 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/Cargo.toml @@ -0,0 +1,16 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/rust_to_ocaml:attr_parser + +[package] +name = "attr_parser" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "attr_parser.rs" +test = false +doctest = false + +[dependencies] +syn = { version = "1.0.109", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] } diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/attr_parser.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/attr_parser.rs new file mode 100644 index 00000000000..b26e855e140 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/attr_parser/attr_parser.rs @@ -0,0 +1,280 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use syn::Meta::List; +use syn::Meta::NameValue; +use syn::Meta::Path; +use syn::NestedMeta::Lit; +use syn::NestedMeta::Meta; + +static DOC: &str = "doc"; +static RUST_TO_OCAML: &str = "rust_to_ocaml"; +static PREFIX: &str = "prefix"; +static AND: &str = "and"; +static ATTR: &str = "attr"; +static NAME: &str = "name"; +static INLINE_TUPLE: &str = "inline_tuple"; + +/// The attributes understood by `rust_to_ocaml`. +#[derive(Clone, Debug)] +pub struct Attrs { + /// Doc comments (and their desugared form, the `#[doc]` attribute) are + /// picked up by rust_to_ocaml and included as ocamldoc comments. + /// + /// /// Type A + /// pub type A = X; + /// + /// is converted to: + /// + /// (** Type A *) + /// type a = x + pub doc: Vec, + + /// Sometimes OCaml programs use prefixes to distinguish fields of the same + /// name in different records (avoiding OCaml warning 30). The `prefix` + /// attribute (on a declaration of a struct or a struct-like enum variant) + /// indicates the prefix that should be added to each field name. + /// + /// #[rust_to_ocaml(prefix = "a_")] + /// pub struct StructA { pub foo: isize, pub bar: isize } + /// #[rust_to_ocaml(prefix = "b_")] + /// pub struct StructB { pub foo: isize, pub bar: isize } + /// + /// is converted to: + /// + /// type struct_a = { a_foo: int; a_bar: int; } + /// type struct_b = { b_foo: int; b_bar: int; } + pub prefix: Option, + + /// OCaml attributes (in OCaml syntax) to annotate a type or field + /// declaration with in the generated OCaml. + /// + /// #[rust_to_ocaml(attr = "deriving show")] + /// pub type X = A; + /// + /// is converted to: + /// + /// type x = a [@@deriving show] + pub attrs: Vec, + + /// Mutual recursion in type definitions is opt-in in OCaml; one writes + /// `type x = y list and y = x list` rather than `type x = y list ;; type y + /// = x list` (which is an error because the type name `y` is not bound in + /// the declaration of `x`). Use the `#[rust_to_ocaml(and)]` attribute to + /// indicate when the `and` keyword should be used to continue a mutually + /// recursive type declaration. + /// + /// pub struct Foo(pub Bar, pub Bar); + /// #[rust_to_ocaml(and)] + /// pub struct Bar(pub Option, pub Option); + /// + /// is converted to: + /// + /// type foo = bar * bar + /// and bar = foo option * foo option + pub mutual_rec: bool, + + /// Normally, rust_to_ocaml will convert the names of fields and enum + /// variants by attempting to convert idiomatic Rust casing to idiomatic + /// OCaml casing. Use the `#[rust_to_ocaml(name = "my_name")]` attribute to + /// override this behavior and provide some other name. This attribute takes + /// precedence over the `prefix` attribute (no prefix will be applied to the + /// given name). This attribute cannot be used to rename types (use + /// rust_to_ocaml_config.toml instead). + pub name: Option, + + /// In OCaml, a variant declared as `Foo of (a * b)` is a variant with one + /// field which is a pointer to a heap-allocated tuple. A variant declared + /// as `Baz of a * b` is a variant with two fields of type `a` and `b`. + /// + /// By default, rust_to_ocaml will produce variants with a single field. But + /// this behavior can be overridden with the `inline_tuple` attribute, + /// converting the fields of a tuple (possibly behind a reference, `Box`, or + /// any other wrapper type declared in the `types.transparent` section in + /// rust_to_ocaml_config.toml) to fields of the OCaml variant. + /// + /// pub enum E { + /// Foo((A, B)), + /// Bar(Box<(A, B)>), + /// #[rust_to_ocaml(inline_tuple)] + /// Baz((A, B)), + /// #[rust_to_ocaml(inline_tuple)] + /// Qux(Box<(A, B)>), + /// } + /// + /// is converted to: + /// + /// type e = + /// | Foo of (a * b) + /// | Bar of (a * b) + /// | Baz of a * b + /// | Qux of a * b + pub inline_tuple: bool, +} + +impl Attrs { + pub fn from_type(item: &syn::ItemType) -> Self { + Self::from_attributes(&item.attrs, AttrKind::Container) + } + pub fn from_struct(item: &syn::ItemStruct) -> Self { + Self::from_attributes(&item.attrs, AttrKind::Container) + } + pub fn from_enum(item: &syn::ItemEnum) -> Self { + Self::from_attributes(&item.attrs, AttrKind::Container) + } + + pub fn from_variant(variant: &syn::Variant) -> Self { + Self::from_attributes(&variant.attrs, AttrKind::Variant) + } + pub fn from_field(field: &syn::Field) -> Self { + Self::from_attributes(&field.attrs, AttrKind::Field) + } + + fn from_attributes(attrs: &[syn::Attribute], kind: AttrKind) -> Self { + let doc = get_doc_comment(attrs); + let mut prefix = None; + let mut ocaml_attrs = vec![]; + let mut mutual_rec = false; + let mut name = None; + let mut inline_tuple = false; + + for meta_item in attrs + .iter() + .flat_map(get_rust_to_ocaml_meta_items) + .flatten() + { + match &meta_item { + // Parse `#[rust_to_ocaml(prefix = "foo")]` + Meta(NameValue(m)) if m.path.is_ident(PREFIX) => { + // TODO: emit error for AttrKind::Field (should use the + // `name` meta item instead) + if let Ok(s) = get_lit_str(PREFIX, &m.lit) { + prefix = Some(s.value()); + } + } + // Parse `#[rust_to_ocaml(attr = "deriving eq")]` + Meta(NameValue(m)) if m.path.is_ident(ATTR) => { + if let Ok(s) = get_lit_str(ATTR, &m.lit) { + ocaml_attrs.push(s.value()); + } + } + // Parse `#[rust_to_ocaml(and)]` + Meta(Path(word)) if word.is_ident(AND) => { + // TODO: emit an error instead + assert_eq!(kind, AttrKind::Container); + mutual_rec = true; + } + // Parse `#[rust_to_ocaml(name = "foo")]` + Meta(NameValue(m)) if m.path.is_ident(NAME) => { + // TODO: emit error for AttrKind::Container (should add to + // types.rename config instead) + if let Ok(s) = get_lit_str(NAME, &m.lit) { + name = Some(s.value()); + } + } + // Parse `#[rust_to_ocaml(inline_tuple)]` + Meta(Path(word)) if word.is_ident(INLINE_TUPLE) => { + // TODO: emit an error instead + assert_eq!(kind, AttrKind::Variant); + inline_tuple = true; + } + Meta(_meta_item) => { + // let path = meta_item + // .path() + // .into_token_stream() + // .to_string() + // .replace(' ', ""); + // cx.error_spanned_by( + // meta_item.path(), + // format!("unknown rust_to_ocaml {} attribute `{}`", kind, path), + // ); + } + Lit(_lit) => { + // cx.error_spanned_by(lit, format!("unexpected literal in rust_to_ocaml {} attribute", kind)); + } + } + } + + Self { + doc, + prefix, + attrs: ocaml_attrs, + mutual_rec, + name, + inline_tuple, + } + } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +enum AttrKind { + Container, + Variant, + Field, +} + +impl std::fmt::Display for AttrKind { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Container => write!(f, "container"), + Self::Variant => write!(f, "variant"), + Self::Field => write!(f, "field"), + } + } +} + +pub fn get_doc_comment(attrs: &[syn::Attribute]) -> Vec { + attrs + .iter() + .filter_map(|attr| { + if !attr.path.is_ident(DOC) { + return None; + } + match attr.parse_meta() { + Ok(syn::Meta::NameValue(meta)) => { + if let syn::Lit::Str(s) = meta.lit { + Some(s.value()) + } else { + None + } + } + _ => None, + } + }) + .collect() +} + +fn get_rust_to_ocaml_meta_items(attr: &syn::Attribute) -> Result, ()> { + if !attr.path.is_ident(RUST_TO_OCAML) { + return Ok(vec![]); + } + + match attr.parse_meta() { + Ok(List(meta)) => Ok(meta.nested.into_iter().collect()), + Ok(_other) => { + // cx.error_spanned_by(other, "expected #[rust_to_ocaml(...)]"); + Err(()) + } + Err(_err) => { + // cx.syn_error(err); + Err(()) + } + } +} + +fn get_lit_str<'a>(_attr_name: &'static str, lit: &'a syn::Lit) -> Result<&'a syn::LitStr, ()> { + if let syn::Lit::Str(lit) = lit { + Ok(lit) + } else { + // cx.error_spanned_by( + // lit, + // format!( + // "expected rust_to_ocaml {} attribute to be a string: `{} = \"...\"`", + // attr_name, attr_name + // ), + // ); + Err(()) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/Cargo.toml b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/Cargo.toml new file mode 100644 index 00000000000..83998c02943 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/Cargo.toml @@ -0,0 +1,25 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/rust_to_ocaml:rust_to_ocaml + +[package] +name = "rust_to_ocaml" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[[bin]] +name = "rust_to_ocaml" +path = "rust_to_ocaml.rs" +test = false + +[dependencies] +anyhow = "1.0.75" +attr_parser = { path = "../attr_parser" } +clap = { version = "3.2.25", features = ["derive", "env", "regex", "unicode", "wrap_help"] } +convert_case = "0.4.0" +derive_more = "0.99.17" +indexmap = { version = "2.2.6", features = ["arbitrary", "rayon", "serde"] } +serde = { version = "1.0.185", features = ["derive", "rc"] } +signed_source = { path = "../../signed_source" } +syn = { version = "1.0.109", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] } +toml = "0.8.4" diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/config.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/config.rs new file mode 100644 index 00000000000..87ab6b403d7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/config.rs @@ -0,0 +1,153 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::str::FromStr; + +use indexmap::indexmap; +use indexmap::indexset; +use indexmap::IndexMap; +use indexmap::IndexSet; +use serde::Deserialize; +use serde::Serialize; + +use crate::ir; +use crate::ir::ModuleName; +use crate::ir::TypeName; + +#[derive(Debug, Default, Serialize, Deserialize)] +pub struct Config { + #[serde(default)] + modules: ModulesConfig, + #[serde(default)] + types: TypesConfig, +} + +#[derive(Debug, Default, Serialize, Deserialize)] +struct ModulesConfig { + #[serde(default, with = "indexmap::map::serde_seq")] + rename: IndexMap, +} + +#[derive(Debug, Serialize, Deserialize)] +struct TypesConfig { + transparent: IndexSet, + #[serde(with = "indexmap::map::serde_seq")] + rename: IndexMap, +} + +#[derive(Clone, PartialEq, Eq, Hash)] +pub struct RustTypePath { + pub modules: Vec, + pub ty: TypeName, +} + +#[derive(Clone, PartialEq, Eq, Hash)] +pub struct OcamlTypePath { + pub modules: Vec, + pub ty: TypeName, +} + +impl Config { + pub fn get_renamed_module(&self, name: &ModuleName) -> Option { + self.modules.rename.get(name).cloned() + } + pub fn is_transparent_type(&self, path: &ir::TypePath) -> bool { + let rust_path = RustTypePath::from(path); + self.types.transparent.contains(&rust_path) + } + pub fn get_renamed_type(&self, path: &ir::TypePath) -> Option { + let rust_path = RustTypePath::from(path); + self.types.rename.get(&rust_path).cloned() + } +} + +impl Default for TypesConfig { + fn default() -> Self { + let r = |s| RustTypePath::from_str(s).unwrap(); + let o = |s| OcamlTypePath::from_str(s).unwrap(); + Self { + transparent: indexset! { + r("Box"), + r("std::boxed::Box"), + r("Rc"), + r("std::rc::Rc"), + r("Arc"), + r("std::sync::Arc"), + }, + rename: indexmap! { + r("Vec") => o("list"), + r("std::vec::Vec") => o("list"), + }, + } + } +} + +impl From<&ir::TypePath> for RustTypePath { + fn from(path: &ir::TypePath) -> Self { + Self { + modules: path.modules.clone(), + ty: path.ty.clone(), + } + } +} + +impl std::fmt::Display for RustTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for m in self.modules.iter() { + write!(f, "{}", m.as_str())?; + write!(f, "::")?; + } + write!(f, "{}", self.ty.as_str()) + } +} +impl std::fmt::Display for OcamlTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for m in self.modules.iter() { + write!(f, "{}", m.as_str())?; + write!(f, ".")?; + } + write!(f, "{}", self.ty.as_str()) + } +} + +impl std::fmt::Debug for RustTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + format!("{self}").fmt(f) + } +} +impl std::fmt::Debug for OcamlTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + format!("{self}").fmt(f) + } +} + +impl FromStr for RustTypePath { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + let (modules, ty) = parse_type_path(s, "::")?; + Ok(Self { modules, ty }) + } +} +impl FromStr for OcamlTypePath { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + let (modules, ty) = parse_type_path(s, ".")?; + Ok(Self { modules, ty }) + } +} + +fn parse_type_path(s: &str, sep: &str) -> anyhow::Result<(Vec, TypeName)> { + let mut split = s.rsplit(sep); + let ty = match split.next() { + None | Some("") => anyhow::bail!("Invalid type name: {:?}", s), + Some(ty) => TypeName(ty.to_owned()), + }; + let mut modules = split.map(ModuleName::new).collect::, _>>()?; + modules.reverse(); + Ok((modules, ty)) +} + +serde_from_display!(RustTypePath, "a valid Rust type path string"); +serde_from_display!(OcamlTypePath, "a valid OCaml type path string"); diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/convert.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/convert.rs new file mode 100644 index 00000000000..3c52f8f25b5 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/convert.rs @@ -0,0 +1,323 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use anyhow::bail; +use anyhow::ensure; +use anyhow::Context; +use anyhow::Result; +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; +use crate::ir::Def; +use crate::ir::FieldName; +use crate::ir::File; +use crate::ir::TypeName; +use crate::ir::VariantName; +use crate::Config; + +pub fn convert_file( + config: &'static Config, + filename: &std::path::Path, + file: &syn::File, +) -> Result { + let defs = (file.items.iter()) + .filter_map(|item| ItemConverter::convert_item(config, item).transpose()) + .collect::>()?; + let file_stem = filename.file_stem().context("expected nonempty filename")?; + let module_name = file_stem.to_str().context("non-UTF8 filename")?.to_owned(); + let mut file = File { + root: ir::Module { + name: ir::ModuleName::new(module_name)?, + defs, + }, + }; + crate::rewrite_types::rewrite_file(config, &mut file); + crate::rewrite_module_names::rewrite_file(config, &mut file); + Ok(file.to_string()) +} + +struct ItemConverter { + config: &'static Config, + tparams: Vec, +} + +impl ItemConverter { + fn convert_item(config: &'static Config, item: &syn::Item) -> Result> { + use syn::Item; + match item { + Item::Type(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_type(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Struct(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_struct(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Enum(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_enum(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Mod(item) => { + if let Some((_brace, items)) = &item.content { + let defs = items + .iter() + .filter_map(|item| Self::convert_item(config, item).transpose()) + .collect::>() + .with_context(|| format!("Failed to convert module {}", item.ident))?; + Ok(Some(Def::Module(ir::Module { + name: ir::ModuleName::new(item.ident.to_string())?, + defs, + }))) + } else { + Ok(None) + } + } + _ => Ok(None), + } + } + + fn new(config: &'static Config, generics: &syn::Generics) -> Self { + let tparams = generics + .type_params() + .map(|tparam| tparam.ident.to_string()) + .collect(); + Self { config, tparams } + } + + fn convert_item_type(self, item: &syn::ItemType) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let attrs = attr_parser::Attrs::from_type(item); + let ty = self.convert_type(&item.ty)?; + Ok(Def::Alias { + doc: attrs.doc, + attrs: attrs.attrs, + mutual_rec: attrs.mutual_rec, + tparams: self.tparams, + name, + ty, + }) + } + + fn convert_item_struct(self, item: &syn::ItemStruct) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let container_attrs = attr_parser::Attrs::from_struct(item); + match &item.fields { + syn::Fields::Unit => Ok(Def::Alias { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + ty: ir::Type::Path(ir::TypePath::simple("unit")), + }), + syn::Fields::Unnamed(fields) => { + let elems = (fields.unnamed.iter()) + .map(|field| self.convert_type(&field.ty)) + .collect::>>()?; + Ok(Def::Alias { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + ty: if elems.is_empty() { + ir::Type::Path(ir::TypePath::simple("unit")) + } else { + ir::Type::Tuple(ir::TypeTuple { elems }) + }, + }) + } + syn::Fields::Named(fields) => { + let fields = (fields.named.iter()) + .map(|field| { + let field_attrs = attr_parser::Attrs::from_field(field); + let name = if let Some(name) = field_attrs.name { + FieldName(name) + } else { + field_name(field.ident.as_ref(), container_attrs.prefix.as_deref()) + }; + let ty = self.convert_type(&field.ty)?; + Ok(ir::Field { + name, + ty, + doc: field_attrs.doc, + attrs: field_attrs.attrs, + }) + }) + .collect::>>()?; + Ok(Def::Record { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + fields, + }) + } + } + } + + fn convert_item_enum(self, item: &syn::ItemEnum) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let container_attrs = attr_parser::Attrs::from_enum(item); + let variants = item + .variants + .iter() + .map(|variant| { + let variant_attrs = attr_parser::Attrs::from_variant(variant); + let name = if let Some(name) = variant_attrs.name { + VariantName(name) + } else { + variant_name(&variant.ident, container_attrs.prefix.as_deref()) + }; + let fields = match &variant.fields { + syn::Fields::Unit => None, + syn::Fields::Unnamed(fields) => { + let mut fields = (fields.unnamed.iter()) + .map(|field| self.convert_type(&field.ty)) + .collect::>>()?; + if variant_attrs.inline_tuple { + assert_eq!(fields.len(), 1); + let field = fields.pop().unwrap(); + match field { + ir::Type::Path(mut path) => { + if path.targs.len() == 1 + && self.config.is_transparent_type(&path) + && matches!(path.targs[0], ir::Type::Tuple(..)) + { + if let Some(ir::Type::Tuple(tuple)) = path.targs.pop() { + Some(ir::VariantFields::Unnamed(tuple.elems)) + } else { + unreachable!() + } + } else { + anyhow::bail!( + "Variant {} must have a single argument which is a tuple", + variant.ident.to_string() + ) + } + } + ir::Type::Tuple(tuple) => { + Some(ir::VariantFields::Unnamed(tuple.elems)) + } + } + } else { + Some(ir::VariantFields::Unnamed(fields)) + } + } + syn::Fields::Named(fields) => Some(ir::VariantFields::Named( + (fields.named.iter()) + .map(|field| { + let field_attrs = attr_parser::Attrs::from_field(field); + let name = if let Some(name) = field_attrs.name { + FieldName(name) + } else { + field_name( + field.ident.as_ref(), + variant_attrs.prefix.as_deref(), + ) + }; + let ty = self.convert_type(&field.ty)?; + Ok(ir::Field { + name, + ty, + doc: field_attrs.doc, + attrs: field_attrs.attrs, + }) + }) + .collect::>()?, + )), + }; + Ok(ir::Variant { + name, + fields, + doc: variant_attrs.doc, + attrs: variant_attrs.attrs, + }) + }) + .collect::>>()?; + Ok(Def::Variant { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + variants, + }) + } + + fn convert_type(&self, ty: &syn::Type) -> Result { + match ty { + syn::Type::Path(ty) => Ok(ir::Type::Path(self.convert_type_path(ty)?)), + syn::Type::Tuple(ty) => { + if ty.elems.is_empty() { + Ok(ir::Type::Path(ir::TypePath::simple("unit"))) + } else { + Ok(ir::Type::Tuple(ir::TypeTuple { + elems: (ty.elems.iter()) + .map(|e| self.convert_type(e)) + .collect::>()?, + })) + } + } + syn::Type::Reference(ty) => Ok(self.convert_type(&ty.elem)?), + syn::Type::Slice(ty) => Ok(ir::Type::Path(ir::TypePath { + modules: vec![], + targs: vec![self.convert_type(&ty.elem)?], + ty: ir::TypeName(String::from("list")), + })), + _ => bail!("Not supported: {:?}", ty), + } + } + + fn convert_type_path(&self, ty: &syn::TypePath) -> Result { + ensure!(ty.qself.is_none(), "Qualified self in paths not supported"); + let last_seg = ty.path.segments.last().unwrap(); + if ty.path.segments.len() == 1 && last_seg.arguments.is_empty() { + let ident = last_seg.ident.to_string(); + if self.tparams.contains(&ident) { + let tparam = format!("'{}", ident.to_case(Case::Snake)); + return Ok(ir::TypePath::simple(tparam)); + } + } + let segments_except_last = ty.path.segments.iter().rev().skip(1).rev(); + Ok(ir::TypePath { + modules: segments_except_last + .map(|seg| { + ensure!( + seg.arguments.is_empty(), + "Type args only supported in last path segment" + ); + ir::ModuleName::new(seg.ident.to_string()) + }) + .collect::>()?, + ty: TypeName(last_seg.ident.to_string()), + targs: match &last_seg.arguments { + syn::PathArguments::AngleBracketed(args) => (args.args.iter()) + .filter_map(|arg| match arg { + syn::GenericArgument::Type(arg) => Some(self.convert_type(arg)), + _ => None, + }) + .collect::>()?, + _ => vec![], + }, + }) + } +} + +fn field_name(ident: Option<&syn::Ident>, prefix: Option<&str>) -> FieldName { + FieldName(format!("{}{}", prefix.unwrap_or_default(), ident.unwrap())) +} + +fn variant_name(ident: &syn::Ident, prefix: Option<&str>) -> VariantName { + VariantName(format!("{}{}", prefix.unwrap_or_default(), ident)) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir.rs new file mode 100644 index 00000000000..c58428633b7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir.rs @@ -0,0 +1,169 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +mod display; + +use derive_more::Display; + +#[derive(Debug)] +pub struct File { + pub root: Module, +} + +#[derive(Debug)] +pub struct Module { + pub name: ModuleName, + pub defs: Vec, +} + +#[derive(Debug)] +pub enum Def { + Module(Module), + Alias { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + ty: Type, + }, + Record { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + fields: Vec, + }, + Variant { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + variants: Vec, + }, +} + +#[derive(Debug)] +pub struct Variant { + pub name: VariantName, + pub fields: Option, + pub doc: Vec, + pub attrs: Vec, +} + +#[derive(Debug)] +pub enum VariantFields { + Unnamed(Vec), + Named(Vec), +} + +#[derive(Debug)] +pub struct Field { + pub name: FieldName, + pub ty: Type, + pub doc: Vec, + pub attrs: Vec, +} + +#[derive(Debug)] +pub enum Type { + Path(TypePath), + Tuple(TypeTuple), +} + +#[derive(Debug)] +pub struct TypePath { + pub targs: Vec, + pub modules: Vec, + pub ty: TypeName, +} + +impl TypePath { + pub fn simple(id: impl Into) -> Self { + Self { + modules: vec![], + ty: TypeName(id.into()), + targs: vec![], + } + } +} + +#[derive(Debug)] +pub struct TypeTuple { + pub elems: Vec, +} + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct ModuleName(String); + +impl ModuleName { + pub fn new(name: impl Into) -> anyhow::Result { + let name: String = name.into(); + anyhow::ensure!(!name.is_empty(), "Module names must not be empty"); + let first_char = name.chars().next().unwrap(); + anyhow::ensure!( + first_char.is_ascii(), + "Module names must start with an ASCII character: {}", + name + ); + anyhow::ensure!( + first_char.to_ascii_uppercase().is_ascii_uppercase(), + "Module names must start with a character which can be converted to uppercase: {}", + name + ); + Ok(Self(name)) + } + + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +impl std::str::FromStr for ModuleName { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + Self::new(s) + } +} + +serde_from_display!(ModuleName, "a valid Rust or OCaml module name"); + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct TypeName(pub String); + +impl TypeName { + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct FieldName(pub String); + +#[derive(Clone, Hash, PartialEq, Eq, Display)] +pub struct VariantName(pub String); + +impl std::fmt::Debug for ModuleName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for TypeName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for FieldName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for VariantName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir/display.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir/display.rs new file mode 100644 index 00000000000..b510c41bda7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/ir/display.rs @@ -0,0 +1,314 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::fmt::Display; +use std::fmt::Formatter; +use std::fmt::Result; + +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; + +impl Display for ir::File { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + self.root.fmt(f) + } +} + +impl Display for ir::Module { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + for def in self.defs.iter() { + def.fmt(f)? + } + Ok(()) + } +} + +impl Display for ir::Def { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Module(module) => { + writeln!(f, "module {} = struct", module.name)?; + module.fmt(f)?; + writeln!(f, "end")? + } + Self::Alias { + doc, + attrs, + mutual_rec, + tparams, + name, + ty, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + write!(f, "{name} = {ty}")?; + for attr in attrs { + write!(f, " [@@{}]", attr)?; + } + writeln!(f)?; + } + Self::Record { + doc, + attrs, + mutual_rec, + tparams, + name, + fields, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + writeln!(f, "{name} = {{")?; + for field in fields { + writeln!(f, " {field}")?; + } + write!(f, "}}")?; + for attr in attrs { + write!(f, " [@@{}]", attr)?; + } + writeln!(f)?; + } + Self::Variant { + doc, + attrs, + mutual_rec, + tparams, + name, + variants, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + writeln!(f, "{name} =")?; + for variant in variants { + writeln!(f, " | {variant}")?; + } + for attr in attrs { + writeln!(f)?; + write!(f, "[@@{}]", attr)?; + } + writeln!(f)?; + } + } + writeln!(f)?; + Ok(()) + } +} + +impl Display for ir::Variant { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let Self { + name, + fields, + doc, + attrs, + } = self; + write!(f, "{name}")?; + if let Some(fields) = fields { + write!(f, " of {fields}")?; + } + for attr in attrs { + write!(f, " [@{}]", attr)?; + } + write_field_or_variant_doc_comment(f, doc)?; + Ok(()) + } +} + +impl Display for ir::VariantFields { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Unnamed(fields) => { + let mut iter = fields.iter(); + let ty = iter.next().expect("empty VariantFields::Unnamed"); + ty.fmt(f)?; + for ty in iter { + write!(f, " * {ty}")?; + } + Ok(()) + } + Self::Named(fields) => { + writeln!(f, "{{")?; + for field in fields { + writeln!(f, " {field}")?; + } + write!(f, "}}") + } + } + } +} + +impl Display for ir::Field { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let Self { + name, + ty, + doc, + attrs, + } = self; + write!(f, "{name}: {ty};")?; + for attr in attrs { + write!(f, " [@{}]", attr)?; + } + write_field_or_variant_doc_comment(f, doc)?; + Ok(()) + } +} + +impl Display for ir::Type { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Path(ty) => ty.fmt(f), + Self::Tuple(ty) => ty.fmt(f), + } + } +} + +impl Display for ir::TypePath { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self.targs.as_slice() { + [] => {} + [targ] => write!(f, "{} ", targ)?, + [first, rest @ ..] => { + write!(f, "({}", first)?; + for targ in rest { + write!(f, ", {}", targ)?; + } + write!(f, ") ")?; + } + } + for module in self.modules.iter() { + write!(f, "{}.", module)?; + } + write!(f, "{}", self.ty) + } +} + +impl Display for ir::TypeTuple { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + write!(f, "(")?; + let mut elems = self.elems.iter(); + let elem = elems.next().expect("empty TypeTuple"); + write!(f, "{elem}")?; + for elem in elems { + write!(f, " * {elem}")?; + } + write!(f, ")") + } +} + +impl Display for ir::ModuleName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = &self.0; + let mut first_char = name.chars().next().unwrap(); // Invariant: self.0 is nonempty + // OCaml modules _must_ start with an uppercase letter (the OCaml parser + // depends on this). We ensure in `ModuleName`'s constructor that the + // first character is ASCII, so we can use `make_ascii_uppercase`. + first_char.make_ascii_uppercase(); + assert!(first_char.is_ascii_uppercase()); + write!(f, "{}", first_char)?; + write!(f, "{}", &name[1..]) + } +} + +fn is_ocaml_keyword(name: &str) -> bool { + match name { + "and" | "as" | "assert" | "asr" | "begin" | "class" | "constraint" | "do" | "done" + | "downto" | "else" | "end" | "exception" | "external" | "false" | "for" | "fun" + | "function" | "functor" | "if" | "in" | "include" | "inherit" | "initializer" | "land" + | "lazy" | "let" | "lor" | "lsl" | "lsr" | "lxor" | "match" | "method" | "mod" + | "module" | "mutable" | "new" | "nonrec" | "object" | "of" | "open" | "or" | "private" + | "rec" | "sig" | "struct" | "then" | "to" | "true" | "try" | "type" | "val" + | "virtual" | "when" | "while" | "with" => true, + _ => false, + } +} + +impl Display for ir::TypeName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = self.0.to_case(Case::Snake); + if is_ocaml_keyword(name.as_str()) { + write!(f, "{}_", name) + } else { + name.fmt(f) + } + } +} + +impl Display for ir::FieldName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = self.0.to_case(Case::Snake); + if is_ocaml_keyword(name.as_str()) { + write!(f, "{}_", name) + } else { + name.fmt(f) + } + } +} + +fn write_toplevel_doc_comment( + f: &mut std::fmt::Formatter<'_>, + doc: &Vec, +) -> std::fmt::Result { + if doc.is_empty() { + return Ok(()); + } + write!(f, "(**{}", doc.join("\n *"))?; + if doc.len() == 1 { + if !doc[0].contains('\n') { + write!(f, " ")?; + } + } else { + write!(f, "\n ")?; + } + writeln!(f, "*)")?; + Ok(()) +} + +fn write_field_or_variant_doc_comment( + f: &mut std::fmt::Formatter<'_>, + doc: &Vec, +) -> std::fmt::Result { + if doc.is_empty() { + return Ok(()); + } + let joined = doc.join("\n *"); + write!(f, "(**{}", joined)?; + if !joined.ends_with(' ') { + write!(f, " ")?; + } + writeln!(f, "*)")?; + Ok(()) +} + +fn write_type_parameters(f: &mut std::fmt::Formatter<'_>, tparams: &[String]) -> std::fmt::Result { + match tparams { + [] => {} + [tparam] => write!(f, "'{} ", tparam.to_case(Case::Snake))?, + [first, rest @ ..] => { + write!(f, "('{}", first.to_case(Case::Snake))?; + for tparam in rest { + write!(f, ", '{} ", tparam.to_case(Case::Snake))?; + } + write!(f, ") ")?; + } + } + Ok(()) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/macros.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/macros.rs new file mode 100644 index 00000000000..29b6175cd9b --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/macros.rs @@ -0,0 +1,42 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +/// Provide impls of `Serialize` and `Deserialize` which delegate to the impls +/// of `std::fmt::Display` and `std::str::FromStr` respectively. +macro_rules! serde_from_display { + ($name:ident, $expecting:expr) => { + impl ::serde::Serialize for $name { + fn serialize(&self, serializer: S) -> Result { + serializer.serialize_str(&self.to_string()) + } + } + impl<'de> ::serde::Deserialize<'de> for $name { + fn deserialize(deserializer: D) -> Result + where + D: ::serde::Deserializer<'de>, + { + struct Visitor; + impl<'de> ::serde::de::Visitor<'de> for Visitor { + type Value = $name; + fn expecting( + &self, + formatter: &mut ::std::fmt::Formatter<'_>, + ) -> ::std::fmt::Result { + formatter.write_str($expecting) + } + fn visit_str(self, value: &str) -> Result + where + E: ::serde::de::Error, + { + value.parse().map_err(|e| { + E::invalid_value(::serde::de::Unexpected::Other(&format!("{e}")), &self) + }) + } + } + deserializer.deserialize_str(Visitor) + } + } + }; +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_module_names.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_module_names.rs new file mode 100644 index 00000000000..1797ff62000 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_module_names.rs @@ -0,0 +1,79 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use crate::ir; +use crate::Config; + +pub fn rewrite_file(config: &'static Config, file: &mut ir::File) { + let rewriter = Rewriter { config }; + rewriter.rewrite_module(&mut file.root) +} + +struct Rewriter { + config: &'static Config, +} + +impl Rewriter { + fn rewrite_module(&self, module: &mut ir::Module) { + module.defs.iter_mut().for_each(|def| self.rewrite_def(def)) + } + + fn rewrite_def(&self, def: &mut ir::Def) { + match def { + ir::Def::Module(module) => self.rewrite_module(module), + ir::Def::Alias { ty, .. } => self.rewrite_type(ty), + ir::Def::Record { fields, .. } => fields.iter_mut().for_each(|f| self.rewrite_field(f)), + ir::Def::Variant { variants, .. } => { + variants.iter_mut().for_each(|v| self.rewrite_variant(v)) + } + } + } + + fn rewrite_field(&self, field: &mut ir::Field) { + self.rewrite_type(&mut field.ty) + } + + fn rewrite_variant(&self, variant: &mut ir::Variant) { + variant + .fields + .iter_mut() + .for_each(|f| self.rewrite_variant_fields(f)) + } + + fn rewrite_variant_fields(&self, fields: &mut ir::VariantFields) { + match fields { + ir::VariantFields::Unnamed(tys) => tys.iter_mut().for_each(|ty| self.rewrite_type(ty)), + ir::VariantFields::Named(fields) => { + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + } + } + + fn rewrite_type(&self, ty: &mut ir::Type) { + match ty { + ir::Type::Path(path) => self.rewrite_type_path(path), + ir::Type::Tuple(tuple) => self.rewrite_type_tuple(tuple), + } + } + + fn rewrite_type_path(&self, path: &mut ir::TypePath) { + match path.modules.get(0).map(ir::ModuleName::as_str) { + Some("crate" | "super") => { + path.modules.remove(0); + } + _ => {} + } + path.modules.iter_mut().for_each(|m| { + if let Some(name) = self.config.get_renamed_module(m) { + *m = name; + } + }); + path.targs.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } + + fn rewrite_type_tuple(&self, tuple: &mut ir::TypeTuple) { + tuple.elems.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_types.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_types.rs new file mode 100644 index 00000000000..e71078e30e7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rewrite_types.rs @@ -0,0 +1,118 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; +use crate::Config; + +pub fn rewrite_file(config: &'static Config, file: &mut ir::File) { + Rewriter::rewrite_module(config, &mut file.root) +} + +struct Rewriter { + config: &'static Config, + module_name: ir::ModuleName, +} + +impl Rewriter { + fn rewrite_module(config: &'static Config, module: &mut ir::Module) { + let this = Self { + config, + module_name: module.name.clone(), + }; + module.defs.iter_mut().for_each(|def| this.rewrite_def(def)) + } + + fn rewrite_def(&self, def: &mut ir::Def) { + let rewrite_name = |name: &mut ir::TypeName| { + if name.as_str() == self.module_name.as_str() { + *name = ir::TypeName(String::from("t")); + } + }; + match def { + ir::Def::Module(module) => Self::rewrite_module(self.config, module), + ir::Def::Alias { name, ty, .. } => { + rewrite_name(name); + self.rewrite_type(ty) + } + ir::Def::Record { name, fields, .. } => { + rewrite_name(name); + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + ir::Def::Variant { name, variants, .. } => { + rewrite_name(name); + variants.iter_mut().for_each(|v| self.rewrite_variant(v)) + } + } + } + + fn rewrite_field(&self, field: &mut ir::Field) { + self.rewrite_type(&mut field.ty) + } + + fn rewrite_variant(&self, variant: &mut ir::Variant) { + variant + .fields + .iter_mut() + .for_each(|f| self.rewrite_variant_fields(f)) + } + + fn rewrite_variant_fields(&self, fields: &mut ir::VariantFields) { + match fields { + ir::VariantFields::Unnamed(tys) => tys.iter_mut().for_each(|ty| self.rewrite_type(ty)), + ir::VariantFields::Named(fields) => { + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + } + } + + fn rewrite_type(&self, ty: &mut ir::Type) { + match ty { + ir::Type::Path(path) => { + if path.targs.len() == 1 && self.config.is_transparent_type(path) { + *ty = path.targs.pop().unwrap(); + self.rewrite_type(ty); + } else { + self.rewrite_type_path(path); + } + } + ir::Type::Tuple(tuple) => self.rewrite_type_tuple(tuple), + } + } + + fn rewrite_type_path(&self, path: &mut ir::TypePath) { + // Convert all integer types to `int`. The impls of ToOcamlRep + // and FromOcamlRep for integer types do checked conversions, so + // we'll fail at runtime if our int value doesn't fit into + // OCaml's integer width. + if path.modules.is_empty() && path.targs.is_empty() { + match path.ty.as_str() { + "i8" | "u8" | "i16" | "u16" | "i32" | "u32" | "i64" | "u64" | "i128" | "u128" + | "isize" | "usize" => { + path.ty = ir::TypeName(String::from("int")); + return; + } + _ => {} + } + } + if let Some(renamed_path) = self.config.get_renamed_type(path) { + path.ty = renamed_path.ty; + path.modules = renamed_path.modules; + } + let ty = path.ty.as_str().to_case(Case::Snake); + let ty_matches_last_module_in_path = + (path.modules.last()).map_or(false, |module| ty == module.as_str()); + if ty_matches_last_module_in_path || ty == self.module_name.as_str() { + path.ty = ir::TypeName(String::from("t")); + } + path.targs.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } + + fn rewrite_type_tuple(&self, tuple: &mut ir::TypeTuple) { + tuple.elems.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rust_to_ocaml.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rust_to_ocaml.rs new file mode 100644 index 00000000000..81d48a3c2d6 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml/rust_to_ocaml.rs @@ -0,0 +1,160 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#[macro_use] +mod macros; + +mod config; +mod convert; +mod ir; +mod rewrite_module_names; +mod rewrite_types; + +use std::io::Write; +use std::path::Path; +use std::path::PathBuf; + +use anyhow::Context; +use anyhow::Result; + +use crate::config::Config; + +#[derive(Debug, clap::Parser)] +struct Opts { + /// The Hack source file to convert. + #[clap(value_name("FILEPATH"))] + filename: PathBuf, + + /// The OCaml source file to generate. + #[clap(value_name("OUTPATH"))] + out_path: Option, + + /// Path to a configuration file. + #[clap(long)] + config: Option, + + /// Command to regenerate the output. This text will be included in generated file headers. + #[clap(long)] + regen_cmd: Option, + + /// Do not add copyright header and generated tag (for tests). + #[clap(long)] + no_header: bool, + + /// Path to an OCaml formatter binary which will be used on the generated output. + #[clap(long)] + formatter: Option, +} + +fn main() -> Result<()> { + let opts = ::from_args(); + + let config = Box::leak(Box::new(match opts.config { + Some(path) => { + let contents = std::fs::read_to_string(&path) + .with_context(|| format!("Failed to read config file at {}", path.display()))?; + toml::from_str(&contents) + .with_context(|| format!("Failed to parse config file at {}", path.display()))? + } + None => Config::default(), + })); + + let src = std::fs::read_to_string(&opts.filename) + .with_context(|| format!("Failed to read input file {}", opts.filename.display()))?; + let file = syn::parse_file(&src)?; + let mut ocaml_src = convert::convert_file(config, &opts.filename, &file)?; + + if !opts.no_header { + ocaml_src = attach_header(opts.regen_cmd.as_deref(), &ocaml_src); + } + let absolute_filename = opts.filename.canonicalize()?; + let mut ocaml_src = ocamlformat( + opts.formatter.as_deref(), + opts.out_path + .as_deref() + .and_then(Path::parent) + .or_else(|| absolute_filename.parent()), + ocaml_src.into_bytes(), + ) + .context("failed to run ocamlformat")?; + if !opts.no_header { + ocaml_src = signed_source::sign_file(&ocaml_src)?; + } + + if let Some(out_path) = &opts.out_path { + write_file(out_path, &ocaml_src)?; + } else { + let mut stdout = std::io::stdout().lock(); + stdout.write_all(&ocaml_src)?; + } + + Ok(()) +} + +fn attach_header(regen_cmd: Option<&str>, contents: &str) -> String { + let regen_cmd = regen_cmd.map_or_else(String::new, |regen_cmd| { + format!(" *\n * To regenerate this file, run:\n * {}\n", regen_cmd) + }); + format!( + r#"(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * {} +{} *) + +{}"#, + signed_source::SIGNING_TOKEN, + regen_cmd, + contents + ) +} + +fn ocamlformat( + formatter: Option<&str>, + out_dir: Option<&Path>, + contents: Vec, +) -> Result> { + let formatter = match formatter { + None => return Ok(contents), + Some(f) => f, + }; + // Even if we format the file on disk (i.e., at `opts.out_path`), + // ocamlformat won't look for an .ocamlformat file in the directory + // containing the file. It only looks up from the current working directory. + // There's a --root arg, but it doesn't seem to produce the same behavior. + let prev_dir = std::env::current_dir()?; + if let Some(out_dir) = out_dir { + std::env::set_current_dir(out_dir)?; + } + let mut child = std::process::Command::new(formatter) + .stdin(std::process::Stdio::piped()) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + // In the event that an .ocamlformat file is still not available, tell + // ocamlformat to please format it anyway. + .arg("--enable-outside-detected-project") + .arg("--impl") + .arg("-") + .spawn()?; + let child_stdin = child.stdin.as_mut().unwrap(); + child_stdin.write_all(&contents)?; + let output = child.wait_with_output()?; + if !output.status.success() { + anyhow::bail!("Formatter failed:\n{:#?}", output); + } + if out_dir.is_some() { + std::env::set_current_dir(prev_dir)?; + } + Ok(output.stdout) +} + +fn write_file(path: &Path, contents: &[u8]) -> Result<()> { + let mut file = std::fs::File::create(path)?; + file.write_all(contents)?; + Ok(()) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/Cargo.toml b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/Cargo.toml new file mode 100644 index 00000000000..4d69965dad4 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/Cargo.toml @@ -0,0 +1,14 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/rust_to_ocaml:rust_to_ocaml_attr + +[package] +name = "rust_to_ocaml_attr" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "rust_to_ocaml_attr.rs" +test = false +doctest = false +proc-macro = true diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/rust_to_ocaml_attr.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/rust_to_ocaml_attr.rs new file mode 100644 index 00000000000..b03f94b8d31 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/rust_to_ocaml_attr/rust_to_ocaml_attr.rs @@ -0,0 +1,21 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use proc_macro::TokenStream; + +/// This attribute macro is intended to be consumed by the rust_to_ocaml codegen +/// tool, so this proc macro doesn't need to do anything other than return the +/// item (with the rust_to_ocaml attribute stripped by rustc). +/// +/// Use of the rust_to_ocaml attribute in positions other than items (like field +/// definitions) are stripped by ocamlrep_derive macros (which is simpler than +/// filtering them from the `item` in this crate). +/// +/// We may want to add validation later so that incorrect use of the attribute +/// emits errors at compile time, but stripping is good enough for now. +#[proc_macro_attribute] +pub fn rust_to_ocaml(_attr: TokenStream, item: TokenStream) -> TokenStream { + item +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/config.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/config.rs new file mode 100644 index 00000000000..87ab6b403d7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/config.rs @@ -0,0 +1,153 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::str::FromStr; + +use indexmap::indexmap; +use indexmap::indexset; +use indexmap::IndexMap; +use indexmap::IndexSet; +use serde::Deserialize; +use serde::Serialize; + +use crate::ir; +use crate::ir::ModuleName; +use crate::ir::TypeName; + +#[derive(Debug, Default, Serialize, Deserialize)] +pub struct Config { + #[serde(default)] + modules: ModulesConfig, + #[serde(default)] + types: TypesConfig, +} + +#[derive(Debug, Default, Serialize, Deserialize)] +struct ModulesConfig { + #[serde(default, with = "indexmap::map::serde_seq")] + rename: IndexMap, +} + +#[derive(Debug, Serialize, Deserialize)] +struct TypesConfig { + transparent: IndexSet, + #[serde(with = "indexmap::map::serde_seq")] + rename: IndexMap, +} + +#[derive(Clone, PartialEq, Eq, Hash)] +pub struct RustTypePath { + pub modules: Vec, + pub ty: TypeName, +} + +#[derive(Clone, PartialEq, Eq, Hash)] +pub struct OcamlTypePath { + pub modules: Vec, + pub ty: TypeName, +} + +impl Config { + pub fn get_renamed_module(&self, name: &ModuleName) -> Option { + self.modules.rename.get(name).cloned() + } + pub fn is_transparent_type(&self, path: &ir::TypePath) -> bool { + let rust_path = RustTypePath::from(path); + self.types.transparent.contains(&rust_path) + } + pub fn get_renamed_type(&self, path: &ir::TypePath) -> Option { + let rust_path = RustTypePath::from(path); + self.types.rename.get(&rust_path).cloned() + } +} + +impl Default for TypesConfig { + fn default() -> Self { + let r = |s| RustTypePath::from_str(s).unwrap(); + let o = |s| OcamlTypePath::from_str(s).unwrap(); + Self { + transparent: indexset! { + r("Box"), + r("std::boxed::Box"), + r("Rc"), + r("std::rc::Rc"), + r("Arc"), + r("std::sync::Arc"), + }, + rename: indexmap! { + r("Vec") => o("list"), + r("std::vec::Vec") => o("list"), + }, + } + } +} + +impl From<&ir::TypePath> for RustTypePath { + fn from(path: &ir::TypePath) -> Self { + Self { + modules: path.modules.clone(), + ty: path.ty.clone(), + } + } +} + +impl std::fmt::Display for RustTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for m in self.modules.iter() { + write!(f, "{}", m.as_str())?; + write!(f, "::")?; + } + write!(f, "{}", self.ty.as_str()) + } +} +impl std::fmt::Display for OcamlTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for m in self.modules.iter() { + write!(f, "{}", m.as_str())?; + write!(f, ".")?; + } + write!(f, "{}", self.ty.as_str()) + } +} + +impl std::fmt::Debug for RustTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + format!("{self}").fmt(f) + } +} +impl std::fmt::Debug for OcamlTypePath { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + format!("{self}").fmt(f) + } +} + +impl FromStr for RustTypePath { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + let (modules, ty) = parse_type_path(s, "::")?; + Ok(Self { modules, ty }) + } +} +impl FromStr for OcamlTypePath { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + let (modules, ty) = parse_type_path(s, ".")?; + Ok(Self { modules, ty }) + } +} + +fn parse_type_path(s: &str, sep: &str) -> anyhow::Result<(Vec, TypeName)> { + let mut split = s.rsplit(sep); + let ty = match split.next() { + None | Some("") => anyhow::bail!("Invalid type name: {:?}", s), + Some(ty) => TypeName(ty.to_owned()), + }; + let mut modules = split.map(ModuleName::new).collect::, _>>()?; + modules.reverse(); + Ok((modules, ty)) +} + +serde_from_display!(RustTypePath, "a valid Rust type path string"); +serde_from_display!(OcamlTypePath, "a valid OCaml type path string"); diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/convert.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/convert.rs new file mode 100644 index 00000000000..3c52f8f25b5 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/convert.rs @@ -0,0 +1,323 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use anyhow::bail; +use anyhow::ensure; +use anyhow::Context; +use anyhow::Result; +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; +use crate::ir::Def; +use crate::ir::FieldName; +use crate::ir::File; +use crate::ir::TypeName; +use crate::ir::VariantName; +use crate::Config; + +pub fn convert_file( + config: &'static Config, + filename: &std::path::Path, + file: &syn::File, +) -> Result { + let defs = (file.items.iter()) + .filter_map(|item| ItemConverter::convert_item(config, item).transpose()) + .collect::>()?; + let file_stem = filename.file_stem().context("expected nonempty filename")?; + let module_name = file_stem.to_str().context("non-UTF8 filename")?.to_owned(); + let mut file = File { + root: ir::Module { + name: ir::ModuleName::new(module_name)?, + defs, + }, + }; + crate::rewrite_types::rewrite_file(config, &mut file); + crate::rewrite_module_names::rewrite_file(config, &mut file); + Ok(file.to_string()) +} + +struct ItemConverter { + config: &'static Config, + tparams: Vec, +} + +impl ItemConverter { + fn convert_item(config: &'static Config, item: &syn::Item) -> Result> { + use syn::Item; + match item { + Item::Type(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_type(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Struct(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_struct(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Enum(item) => { + let this = ItemConverter::new(config, &item.generics); + Ok(Some(this.convert_item_enum(item).with_context(|| { + format!("Failed to convert type {}", item.ident) + })?)) + } + Item::Mod(item) => { + if let Some((_brace, items)) = &item.content { + let defs = items + .iter() + .filter_map(|item| Self::convert_item(config, item).transpose()) + .collect::>() + .with_context(|| format!("Failed to convert module {}", item.ident))?; + Ok(Some(Def::Module(ir::Module { + name: ir::ModuleName::new(item.ident.to_string())?, + defs, + }))) + } else { + Ok(None) + } + } + _ => Ok(None), + } + } + + fn new(config: &'static Config, generics: &syn::Generics) -> Self { + let tparams = generics + .type_params() + .map(|tparam| tparam.ident.to_string()) + .collect(); + Self { config, tparams } + } + + fn convert_item_type(self, item: &syn::ItemType) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let attrs = attr_parser::Attrs::from_type(item); + let ty = self.convert_type(&item.ty)?; + Ok(Def::Alias { + doc: attrs.doc, + attrs: attrs.attrs, + mutual_rec: attrs.mutual_rec, + tparams: self.tparams, + name, + ty, + }) + } + + fn convert_item_struct(self, item: &syn::ItemStruct) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let container_attrs = attr_parser::Attrs::from_struct(item); + match &item.fields { + syn::Fields::Unit => Ok(Def::Alias { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + ty: ir::Type::Path(ir::TypePath::simple("unit")), + }), + syn::Fields::Unnamed(fields) => { + let elems = (fields.unnamed.iter()) + .map(|field| self.convert_type(&field.ty)) + .collect::>>()?; + Ok(Def::Alias { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + ty: if elems.is_empty() { + ir::Type::Path(ir::TypePath::simple("unit")) + } else { + ir::Type::Tuple(ir::TypeTuple { elems }) + }, + }) + } + syn::Fields::Named(fields) => { + let fields = (fields.named.iter()) + .map(|field| { + let field_attrs = attr_parser::Attrs::from_field(field); + let name = if let Some(name) = field_attrs.name { + FieldName(name) + } else { + field_name(field.ident.as_ref(), container_attrs.prefix.as_deref()) + }; + let ty = self.convert_type(&field.ty)?; + Ok(ir::Field { + name, + ty, + doc: field_attrs.doc, + attrs: field_attrs.attrs, + }) + }) + .collect::>>()?; + Ok(Def::Record { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + fields, + }) + } + } + } + + fn convert_item_enum(self, item: &syn::ItemEnum) -> Result { + let name = TypeName(item.ident.to_string().to_case(Case::Snake)); + let container_attrs = attr_parser::Attrs::from_enum(item); + let variants = item + .variants + .iter() + .map(|variant| { + let variant_attrs = attr_parser::Attrs::from_variant(variant); + let name = if let Some(name) = variant_attrs.name { + VariantName(name) + } else { + variant_name(&variant.ident, container_attrs.prefix.as_deref()) + }; + let fields = match &variant.fields { + syn::Fields::Unit => None, + syn::Fields::Unnamed(fields) => { + let mut fields = (fields.unnamed.iter()) + .map(|field| self.convert_type(&field.ty)) + .collect::>>()?; + if variant_attrs.inline_tuple { + assert_eq!(fields.len(), 1); + let field = fields.pop().unwrap(); + match field { + ir::Type::Path(mut path) => { + if path.targs.len() == 1 + && self.config.is_transparent_type(&path) + && matches!(path.targs[0], ir::Type::Tuple(..)) + { + if let Some(ir::Type::Tuple(tuple)) = path.targs.pop() { + Some(ir::VariantFields::Unnamed(tuple.elems)) + } else { + unreachable!() + } + } else { + anyhow::bail!( + "Variant {} must have a single argument which is a tuple", + variant.ident.to_string() + ) + } + } + ir::Type::Tuple(tuple) => { + Some(ir::VariantFields::Unnamed(tuple.elems)) + } + } + } else { + Some(ir::VariantFields::Unnamed(fields)) + } + } + syn::Fields::Named(fields) => Some(ir::VariantFields::Named( + (fields.named.iter()) + .map(|field| { + let field_attrs = attr_parser::Attrs::from_field(field); + let name = if let Some(name) = field_attrs.name { + FieldName(name) + } else { + field_name( + field.ident.as_ref(), + variant_attrs.prefix.as_deref(), + ) + }; + let ty = self.convert_type(&field.ty)?; + Ok(ir::Field { + name, + ty, + doc: field_attrs.doc, + attrs: field_attrs.attrs, + }) + }) + .collect::>()?, + )), + }; + Ok(ir::Variant { + name, + fields, + doc: variant_attrs.doc, + attrs: variant_attrs.attrs, + }) + }) + .collect::>>()?; + Ok(Def::Variant { + doc: container_attrs.doc, + attrs: container_attrs.attrs, + mutual_rec: container_attrs.mutual_rec, + tparams: self.tparams, + name, + variants, + }) + } + + fn convert_type(&self, ty: &syn::Type) -> Result { + match ty { + syn::Type::Path(ty) => Ok(ir::Type::Path(self.convert_type_path(ty)?)), + syn::Type::Tuple(ty) => { + if ty.elems.is_empty() { + Ok(ir::Type::Path(ir::TypePath::simple("unit"))) + } else { + Ok(ir::Type::Tuple(ir::TypeTuple { + elems: (ty.elems.iter()) + .map(|e| self.convert_type(e)) + .collect::>()?, + })) + } + } + syn::Type::Reference(ty) => Ok(self.convert_type(&ty.elem)?), + syn::Type::Slice(ty) => Ok(ir::Type::Path(ir::TypePath { + modules: vec![], + targs: vec![self.convert_type(&ty.elem)?], + ty: ir::TypeName(String::from("list")), + })), + _ => bail!("Not supported: {:?}", ty), + } + } + + fn convert_type_path(&self, ty: &syn::TypePath) -> Result { + ensure!(ty.qself.is_none(), "Qualified self in paths not supported"); + let last_seg = ty.path.segments.last().unwrap(); + if ty.path.segments.len() == 1 && last_seg.arguments.is_empty() { + let ident = last_seg.ident.to_string(); + if self.tparams.contains(&ident) { + let tparam = format!("'{}", ident.to_case(Case::Snake)); + return Ok(ir::TypePath::simple(tparam)); + } + } + let segments_except_last = ty.path.segments.iter().rev().skip(1).rev(); + Ok(ir::TypePath { + modules: segments_except_last + .map(|seg| { + ensure!( + seg.arguments.is_empty(), + "Type args only supported in last path segment" + ); + ir::ModuleName::new(seg.ident.to_string()) + }) + .collect::>()?, + ty: TypeName(last_seg.ident.to_string()), + targs: match &last_seg.arguments { + syn::PathArguments::AngleBracketed(args) => (args.args.iter()) + .filter_map(|arg| match arg { + syn::GenericArgument::Type(arg) => Some(self.convert_type(arg)), + _ => None, + }) + .collect::>()?, + _ => vec![], + }, + }) + } +} + +fn field_name(ident: Option<&syn::Ident>, prefix: Option<&str>) -> FieldName { + FieldName(format!("{}{}", prefix.unwrap_or_default(), ident.unwrap())) +} + +fn variant_name(ident: &syn::Ident, prefix: Option<&str>) -> VariantName { + VariantName(format!("{}{}", prefix.unwrap_or_default(), ident)) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir.rs new file mode 100644 index 00000000000..c58428633b7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir.rs @@ -0,0 +1,169 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +mod display; + +use derive_more::Display; + +#[derive(Debug)] +pub struct File { + pub root: Module, +} + +#[derive(Debug)] +pub struct Module { + pub name: ModuleName, + pub defs: Vec, +} + +#[derive(Debug)] +pub enum Def { + Module(Module), + Alias { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + ty: Type, + }, + Record { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + fields: Vec, + }, + Variant { + doc: Vec, + attrs: Vec, + mutual_rec: bool, + tparams: Vec, + name: TypeName, + variants: Vec, + }, +} + +#[derive(Debug)] +pub struct Variant { + pub name: VariantName, + pub fields: Option, + pub doc: Vec, + pub attrs: Vec, +} + +#[derive(Debug)] +pub enum VariantFields { + Unnamed(Vec), + Named(Vec), +} + +#[derive(Debug)] +pub struct Field { + pub name: FieldName, + pub ty: Type, + pub doc: Vec, + pub attrs: Vec, +} + +#[derive(Debug)] +pub enum Type { + Path(TypePath), + Tuple(TypeTuple), +} + +#[derive(Debug)] +pub struct TypePath { + pub targs: Vec, + pub modules: Vec, + pub ty: TypeName, +} + +impl TypePath { + pub fn simple(id: impl Into) -> Self { + Self { + modules: vec![], + ty: TypeName(id.into()), + targs: vec![], + } + } +} + +#[derive(Debug)] +pub struct TypeTuple { + pub elems: Vec, +} + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct ModuleName(String); + +impl ModuleName { + pub fn new(name: impl Into) -> anyhow::Result { + let name: String = name.into(); + anyhow::ensure!(!name.is_empty(), "Module names must not be empty"); + let first_char = name.chars().next().unwrap(); + anyhow::ensure!( + first_char.is_ascii(), + "Module names must start with an ASCII character: {}", + name + ); + anyhow::ensure!( + first_char.to_ascii_uppercase().is_ascii_uppercase(), + "Module names must start with a character which can be converted to uppercase: {}", + name + ); + Ok(Self(name)) + } + + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +impl std::str::FromStr for ModuleName { + type Err = anyhow::Error; + fn from_str(s: &str) -> anyhow::Result { + Self::new(s) + } +} + +serde_from_display!(ModuleName, "a valid Rust or OCaml module name"); + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct TypeName(pub String); + +impl TypeName { + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +#[derive(Clone, Hash, PartialEq, Eq)] +pub struct FieldName(pub String); + +#[derive(Clone, Hash, PartialEq, Eq, Display)] +pub struct VariantName(pub String); + +impl std::fmt::Debug for ModuleName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for TypeName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for FieldName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +impl std::fmt::Debug for VariantName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir/display.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir/display.rs new file mode 100644 index 00000000000..b510c41bda7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/ir/display.rs @@ -0,0 +1,314 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::fmt::Display; +use std::fmt::Formatter; +use std::fmt::Result; + +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; + +impl Display for ir::File { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + self.root.fmt(f) + } +} + +impl Display for ir::Module { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + for def in self.defs.iter() { + def.fmt(f)? + } + Ok(()) + } +} + +impl Display for ir::Def { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Module(module) => { + writeln!(f, "module {} = struct", module.name)?; + module.fmt(f)?; + writeln!(f, "end")? + } + Self::Alias { + doc, + attrs, + mutual_rec, + tparams, + name, + ty, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + write!(f, "{name} = {ty}")?; + for attr in attrs { + write!(f, " [@@{}]", attr)?; + } + writeln!(f)?; + } + Self::Record { + doc, + attrs, + mutual_rec, + tparams, + name, + fields, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + writeln!(f, "{name} = {{")?; + for field in fields { + writeln!(f, " {field}")?; + } + write!(f, "}}")?; + for attr in attrs { + write!(f, " [@@{}]", attr)?; + } + writeln!(f)?; + } + Self::Variant { + doc, + attrs, + mutual_rec, + tparams, + name, + variants, + } => { + write_toplevel_doc_comment(f, doc)?; + if *mutual_rec { + write!(f, "and ")?; + } else { + write!(f, "type ")?; + } + write_type_parameters(f, tparams)?; + writeln!(f, "{name} =")?; + for variant in variants { + writeln!(f, " | {variant}")?; + } + for attr in attrs { + writeln!(f)?; + write!(f, "[@@{}]", attr)?; + } + writeln!(f)?; + } + } + writeln!(f)?; + Ok(()) + } +} + +impl Display for ir::Variant { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let Self { + name, + fields, + doc, + attrs, + } = self; + write!(f, "{name}")?; + if let Some(fields) = fields { + write!(f, " of {fields}")?; + } + for attr in attrs { + write!(f, " [@{}]", attr)?; + } + write_field_or_variant_doc_comment(f, doc)?; + Ok(()) + } +} + +impl Display for ir::VariantFields { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Unnamed(fields) => { + let mut iter = fields.iter(); + let ty = iter.next().expect("empty VariantFields::Unnamed"); + ty.fmt(f)?; + for ty in iter { + write!(f, " * {ty}")?; + } + Ok(()) + } + Self::Named(fields) => { + writeln!(f, "{{")?; + for field in fields { + writeln!(f, " {field}")?; + } + write!(f, "}}") + } + } + } +} + +impl Display for ir::Field { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let Self { + name, + ty, + doc, + attrs, + } = self; + write!(f, "{name}: {ty};")?; + for attr in attrs { + write!(f, " [@{}]", attr)?; + } + write_field_or_variant_doc_comment(f, doc)?; + Ok(()) + } +} + +impl Display for ir::Type { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self { + Self::Path(ty) => ty.fmt(f), + Self::Tuple(ty) => ty.fmt(f), + } + } +} + +impl Display for ir::TypePath { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + match self.targs.as_slice() { + [] => {} + [targ] => write!(f, "{} ", targ)?, + [first, rest @ ..] => { + write!(f, "({}", first)?; + for targ in rest { + write!(f, ", {}", targ)?; + } + write!(f, ") ")?; + } + } + for module in self.modules.iter() { + write!(f, "{}.", module)?; + } + write!(f, "{}", self.ty) + } +} + +impl Display for ir::TypeTuple { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + write!(f, "(")?; + let mut elems = self.elems.iter(); + let elem = elems.next().expect("empty TypeTuple"); + write!(f, "{elem}")?; + for elem in elems { + write!(f, " * {elem}")?; + } + write!(f, ")") + } +} + +impl Display for ir::ModuleName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = &self.0; + let mut first_char = name.chars().next().unwrap(); // Invariant: self.0 is nonempty + // OCaml modules _must_ start with an uppercase letter (the OCaml parser + // depends on this). We ensure in `ModuleName`'s constructor that the + // first character is ASCII, so we can use `make_ascii_uppercase`. + first_char.make_ascii_uppercase(); + assert!(first_char.is_ascii_uppercase()); + write!(f, "{}", first_char)?; + write!(f, "{}", &name[1..]) + } +} + +fn is_ocaml_keyword(name: &str) -> bool { + match name { + "and" | "as" | "assert" | "asr" | "begin" | "class" | "constraint" | "do" | "done" + | "downto" | "else" | "end" | "exception" | "external" | "false" | "for" | "fun" + | "function" | "functor" | "if" | "in" | "include" | "inherit" | "initializer" | "land" + | "lazy" | "let" | "lor" | "lsl" | "lsr" | "lxor" | "match" | "method" | "mod" + | "module" | "mutable" | "new" | "nonrec" | "object" | "of" | "open" | "or" | "private" + | "rec" | "sig" | "struct" | "then" | "to" | "true" | "try" | "type" | "val" + | "virtual" | "when" | "while" | "with" => true, + _ => false, + } +} + +impl Display for ir::TypeName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = self.0.to_case(Case::Snake); + if is_ocaml_keyword(name.as_str()) { + write!(f, "{}_", name) + } else { + name.fmt(f) + } + } +} + +impl Display for ir::FieldName { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + let name = self.0.to_case(Case::Snake); + if is_ocaml_keyword(name.as_str()) { + write!(f, "{}_", name) + } else { + name.fmt(f) + } + } +} + +fn write_toplevel_doc_comment( + f: &mut std::fmt::Formatter<'_>, + doc: &Vec, +) -> std::fmt::Result { + if doc.is_empty() { + return Ok(()); + } + write!(f, "(**{}", doc.join("\n *"))?; + if doc.len() == 1 { + if !doc[0].contains('\n') { + write!(f, " ")?; + } + } else { + write!(f, "\n ")?; + } + writeln!(f, "*)")?; + Ok(()) +} + +fn write_field_or_variant_doc_comment( + f: &mut std::fmt::Formatter<'_>, + doc: &Vec, +) -> std::fmt::Result { + if doc.is_empty() { + return Ok(()); + } + let joined = doc.join("\n *"); + write!(f, "(**{}", joined)?; + if !joined.ends_with(' ') { + write!(f, " ")?; + } + writeln!(f, "*)")?; + Ok(()) +} + +fn write_type_parameters(f: &mut std::fmt::Formatter<'_>, tparams: &[String]) -> std::fmt::Result { + match tparams { + [] => {} + [tparam] => write!(f, "'{} ", tparam.to_case(Case::Snake))?, + [first, rest @ ..] => { + write!(f, "('{}", first.to_case(Case::Snake))?; + for tparam in rest { + write!(f, ", '{} ", tparam.to_case(Case::Snake))?; + } + write!(f, ") ")?; + } + } + Ok(()) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/macros.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/macros.rs new file mode 100644 index 00000000000..29b6175cd9b --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/macros.rs @@ -0,0 +1,42 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +/// Provide impls of `Serialize` and `Deserialize` which delegate to the impls +/// of `std::fmt::Display` and `std::str::FromStr` respectively. +macro_rules! serde_from_display { + ($name:ident, $expecting:expr) => { + impl ::serde::Serialize for $name { + fn serialize(&self, serializer: S) -> Result { + serializer.serialize_str(&self.to_string()) + } + } + impl<'de> ::serde::Deserialize<'de> for $name { + fn deserialize(deserializer: D) -> Result + where + D: ::serde::Deserializer<'de>, + { + struct Visitor; + impl<'de> ::serde::de::Visitor<'de> for Visitor { + type Value = $name; + fn expecting( + &self, + formatter: &mut ::std::fmt::Formatter<'_>, + ) -> ::std::fmt::Result { + formatter.write_str($expecting) + } + fn visit_str(self, value: &str) -> Result + where + E: ::serde::de::Error, + { + value.parse().map_err(|e| { + E::invalid_value(::serde::de::Unexpected::Other(&format!("{e}")), &self) + }) + } + } + deserializer.deserialize_str(Visitor) + } + } + }; +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_module_names.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_module_names.rs new file mode 100644 index 00000000000..1797ff62000 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_module_names.rs @@ -0,0 +1,79 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use crate::ir; +use crate::Config; + +pub fn rewrite_file(config: &'static Config, file: &mut ir::File) { + let rewriter = Rewriter { config }; + rewriter.rewrite_module(&mut file.root) +} + +struct Rewriter { + config: &'static Config, +} + +impl Rewriter { + fn rewrite_module(&self, module: &mut ir::Module) { + module.defs.iter_mut().for_each(|def| self.rewrite_def(def)) + } + + fn rewrite_def(&self, def: &mut ir::Def) { + match def { + ir::Def::Module(module) => self.rewrite_module(module), + ir::Def::Alias { ty, .. } => self.rewrite_type(ty), + ir::Def::Record { fields, .. } => fields.iter_mut().for_each(|f| self.rewrite_field(f)), + ir::Def::Variant { variants, .. } => { + variants.iter_mut().for_each(|v| self.rewrite_variant(v)) + } + } + } + + fn rewrite_field(&self, field: &mut ir::Field) { + self.rewrite_type(&mut field.ty) + } + + fn rewrite_variant(&self, variant: &mut ir::Variant) { + variant + .fields + .iter_mut() + .for_each(|f| self.rewrite_variant_fields(f)) + } + + fn rewrite_variant_fields(&self, fields: &mut ir::VariantFields) { + match fields { + ir::VariantFields::Unnamed(tys) => tys.iter_mut().for_each(|ty| self.rewrite_type(ty)), + ir::VariantFields::Named(fields) => { + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + } + } + + fn rewrite_type(&self, ty: &mut ir::Type) { + match ty { + ir::Type::Path(path) => self.rewrite_type_path(path), + ir::Type::Tuple(tuple) => self.rewrite_type_tuple(tuple), + } + } + + fn rewrite_type_path(&self, path: &mut ir::TypePath) { + match path.modules.get(0).map(ir::ModuleName::as_str) { + Some("crate" | "super") => { + path.modules.remove(0); + } + _ => {} + } + path.modules.iter_mut().for_each(|m| { + if let Some(name) = self.config.get_renamed_module(m) { + *m = name; + } + }); + path.targs.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } + + fn rewrite_type_tuple(&self, tuple: &mut ir::TypeTuple) { + tuple.elems.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_types.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_types.rs new file mode 100644 index 00000000000..e71078e30e7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rewrite_types.rs @@ -0,0 +1,118 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use convert_case::Case; +use convert_case::Casing; + +use crate::ir; +use crate::Config; + +pub fn rewrite_file(config: &'static Config, file: &mut ir::File) { + Rewriter::rewrite_module(config, &mut file.root) +} + +struct Rewriter { + config: &'static Config, + module_name: ir::ModuleName, +} + +impl Rewriter { + fn rewrite_module(config: &'static Config, module: &mut ir::Module) { + let this = Self { + config, + module_name: module.name.clone(), + }; + module.defs.iter_mut().for_each(|def| this.rewrite_def(def)) + } + + fn rewrite_def(&self, def: &mut ir::Def) { + let rewrite_name = |name: &mut ir::TypeName| { + if name.as_str() == self.module_name.as_str() { + *name = ir::TypeName(String::from("t")); + } + }; + match def { + ir::Def::Module(module) => Self::rewrite_module(self.config, module), + ir::Def::Alias { name, ty, .. } => { + rewrite_name(name); + self.rewrite_type(ty) + } + ir::Def::Record { name, fields, .. } => { + rewrite_name(name); + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + ir::Def::Variant { name, variants, .. } => { + rewrite_name(name); + variants.iter_mut().for_each(|v| self.rewrite_variant(v)) + } + } + } + + fn rewrite_field(&self, field: &mut ir::Field) { + self.rewrite_type(&mut field.ty) + } + + fn rewrite_variant(&self, variant: &mut ir::Variant) { + variant + .fields + .iter_mut() + .for_each(|f| self.rewrite_variant_fields(f)) + } + + fn rewrite_variant_fields(&self, fields: &mut ir::VariantFields) { + match fields { + ir::VariantFields::Unnamed(tys) => tys.iter_mut().for_each(|ty| self.rewrite_type(ty)), + ir::VariantFields::Named(fields) => { + fields.iter_mut().for_each(|f| self.rewrite_field(f)) + } + } + } + + fn rewrite_type(&self, ty: &mut ir::Type) { + match ty { + ir::Type::Path(path) => { + if path.targs.len() == 1 && self.config.is_transparent_type(path) { + *ty = path.targs.pop().unwrap(); + self.rewrite_type(ty); + } else { + self.rewrite_type_path(path); + } + } + ir::Type::Tuple(tuple) => self.rewrite_type_tuple(tuple), + } + } + + fn rewrite_type_path(&self, path: &mut ir::TypePath) { + // Convert all integer types to `int`. The impls of ToOcamlRep + // and FromOcamlRep for integer types do checked conversions, so + // we'll fail at runtime if our int value doesn't fit into + // OCaml's integer width. + if path.modules.is_empty() && path.targs.is_empty() { + match path.ty.as_str() { + "i8" | "u8" | "i16" | "u16" | "i32" | "u32" | "i64" | "u64" | "i128" | "u128" + | "isize" | "usize" => { + path.ty = ir::TypeName(String::from("int")); + return; + } + _ => {} + } + } + if let Some(renamed_path) = self.config.get_renamed_type(path) { + path.ty = renamed_path.ty; + path.modules = renamed_path.modules; + } + let ty = path.ty.as_str().to_case(Case::Snake); + let ty_matches_last_module_in_path = + (path.modules.last()).map_or(false, |module| ty == module.as_str()); + if ty_matches_last_module_in_path || ty == self.module_name.as_str() { + path.ty = ir::TypeName(String::from("t")); + } + path.targs.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } + + fn rewrite_type_tuple(&self, tuple: &mut ir::TypeTuple) { + tuple.elems.iter_mut().for_each(|ty| self.rewrite_type(ty)) + } +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rust_to_ocaml.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rust_to_ocaml.rs new file mode 100644 index 00000000000..81d48a3c2d6 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/src/rust_to_ocaml.rs @@ -0,0 +1,160 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#[macro_use] +mod macros; + +mod config; +mod convert; +mod ir; +mod rewrite_module_names; +mod rewrite_types; + +use std::io::Write; +use std::path::Path; +use std::path::PathBuf; + +use anyhow::Context; +use anyhow::Result; + +use crate::config::Config; + +#[derive(Debug, clap::Parser)] +struct Opts { + /// The Hack source file to convert. + #[clap(value_name("FILEPATH"))] + filename: PathBuf, + + /// The OCaml source file to generate. + #[clap(value_name("OUTPATH"))] + out_path: Option, + + /// Path to a configuration file. + #[clap(long)] + config: Option, + + /// Command to regenerate the output. This text will be included in generated file headers. + #[clap(long)] + regen_cmd: Option, + + /// Do not add copyright header and generated tag (for tests). + #[clap(long)] + no_header: bool, + + /// Path to an OCaml formatter binary which will be used on the generated output. + #[clap(long)] + formatter: Option, +} + +fn main() -> Result<()> { + let opts = ::from_args(); + + let config = Box::leak(Box::new(match opts.config { + Some(path) => { + let contents = std::fs::read_to_string(&path) + .with_context(|| format!("Failed to read config file at {}", path.display()))?; + toml::from_str(&contents) + .with_context(|| format!("Failed to parse config file at {}", path.display()))? + } + None => Config::default(), + })); + + let src = std::fs::read_to_string(&opts.filename) + .with_context(|| format!("Failed to read input file {}", opts.filename.display()))?; + let file = syn::parse_file(&src)?; + let mut ocaml_src = convert::convert_file(config, &opts.filename, &file)?; + + if !opts.no_header { + ocaml_src = attach_header(opts.regen_cmd.as_deref(), &ocaml_src); + } + let absolute_filename = opts.filename.canonicalize()?; + let mut ocaml_src = ocamlformat( + opts.formatter.as_deref(), + opts.out_path + .as_deref() + .and_then(Path::parent) + .or_else(|| absolute_filename.parent()), + ocaml_src.into_bytes(), + ) + .context("failed to run ocamlformat")?; + if !opts.no_header { + ocaml_src = signed_source::sign_file(&ocaml_src)?; + } + + if let Some(out_path) = &opts.out_path { + write_file(out_path, &ocaml_src)?; + } else { + let mut stdout = std::io::stdout().lock(); + stdout.write_all(&ocaml_src)?; + } + + Ok(()) +} + +fn attach_header(regen_cmd: Option<&str>, contents: &str) -> String { + let regen_cmd = regen_cmd.map_or_else(String::new, |regen_cmd| { + format!(" *\n * To regenerate this file, run:\n * {}\n", regen_cmd) + }); + format!( + r#"(* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * {} +{} *) + +{}"#, + signed_source::SIGNING_TOKEN, + regen_cmd, + contents + ) +} + +fn ocamlformat( + formatter: Option<&str>, + out_dir: Option<&Path>, + contents: Vec, +) -> Result> { + let formatter = match formatter { + None => return Ok(contents), + Some(f) => f, + }; + // Even if we format the file on disk (i.e., at `opts.out_path`), + // ocamlformat won't look for an .ocamlformat file in the directory + // containing the file. It only looks up from the current working directory. + // There's a --root arg, but it doesn't seem to produce the same behavior. + let prev_dir = std::env::current_dir()?; + if let Some(out_dir) = out_dir { + std::env::set_current_dir(out_dir)?; + } + let mut child = std::process::Command::new(formatter) + .stdin(std::process::Stdio::piped()) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + // In the event that an .ocamlformat file is still not available, tell + // ocamlformat to please format it anyway. + .arg("--enable-outside-detected-project") + .arg("--impl") + .arg("-") + .spawn()?; + let child_stdin = child.stdin.as_mut().unwrap(); + child_stdin.write_all(&contents)?; + let output = child.wait_with_output()?; + if !output.status.success() { + anyhow::bail!("Formatter failed:\n{:#?}", output); + } + if out_dir.is_some() { + std::env::set_current_dir(prev_dir)?; + } + Ok(output.stdout) +} + +fn write_file(path: &Path, contents: &[u8]) -> Result<()> { + let mut file = std::fs::File::create(path)?; + file.write_all(contents)?; + Ok(()) +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/Cargo.toml b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/Cargo.toml new file mode 100644 index 00000000000..931e31e7759 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/Cargo.toml @@ -0,0 +1,18 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test:test_rust_to_ocaml + +[package] +name = "test_rust_to_ocaml" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[[bin]] +name = "test_rust_to_ocaml" +path = "test_rust_to_ocaml.rs" + +[dependencies] +anyhow = "1.0.75" +clap = { version = "3.2.25", features = ["derive", "env", "regex", "unicode", "wrap_help"] } +similar = { version = "2.2.0", features = ["inline"] } +walkdir = "2.3" diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/.ocamlformat b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/.ocamlformat new file mode 100644 index 00000000000..70c6150146d --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/.ocamlformat @@ -0,0 +1,7 @@ +# -*- conf -*- + +doc-comments = before +field-space = tight-decl +module-item-spacing = sparse +space-around-lists = false +type-decl = sparse diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs new file mode 100644 index 00000000000..ef2beec0304 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs @@ -0,0 +1,36 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +/// type X +#[rust_to_ocaml(attr = "deriving show")] +pub type X = A; + +/// type Y +#[rust_to_ocaml( + prefix = "y_", + attr = r#"deriving visitors { + variety = "iter"; + ancestors = ["iter_ab"]; + }"# +)] +pub struct Y { + /// foo + #[rust_to_ocaml(attr = "opaque")] + #[rust_to_ocaml(attr = "visitors.opaque")] + pub foo: A, + /// bar + pub bar: B, +} + +/// type Visibility +#[rust_to_ocaml(prefix = "V", attr = "deriving eq, ord, show { with_path = false }")] +enum Visibility { + /// Private + #[rust_to_ocaml(attr = "visitors.name \"visibility_VPrivate\"")] + Private, + /// Public + #[rust_to_ocaml(attr = r#"visitors.name "visibility_VPublic""#)] + Public, +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs.exp new file mode 100644 index 00000000000..e197e8e1791 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/attrs.rs.exp @@ -0,0 +1,15 @@ +(** type X *) +type x = a [@@deriving show] + +(** type Y *) +type y = { + y_foo: a; [@opaque] [@visitors.opaque] (** foo *) + y_bar: b; (** bar *) +} +[@@deriving visitors { variety = "iter"; ancestors = ["iter_ab"] }] + +(** type Visibility *) +type visibility = + | VPrivate [@visitors.name "visibility_VPrivate"] (** Private *) + | VPublic [@visitors.name "visibility_VPublic"] (** Public *) +[@@deriving eq, ord, show { with_path = false }] diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs new file mode 100644 index 00000000000..8ebcc76998f --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs @@ -0,0 +1,6 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type A = bool; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs.exp new file mode 100644 index 00000000000..b63888b5ac6 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/bool_alias.rs.exp @@ -0,0 +1 @@ +type a = bool diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs new file mode 100644 index 00000000000..86a4f45fd7c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs @@ -0,0 +1,70 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +/// Type A +pub type A = X; + +/// Type B +/// is int +pub type B = X; + +/// Type C has a fenced code block: +/// +/// ``` +/// function f(): int { +/// return 0; +/// } +/// ``` +/// +/// And an unfenced code block: +/// +/// function g(): int { +/// return 0; +/// } +/// +/// It should stay indented. +pub type C = X; + +/** Type D has a multiline delimited comment: + +``` +function f(): int { + return 0; +} +``` + +And an indented code block: + + ``` + function g(): int { + return 0; + } + ``` +*/ +pub type D = X; + +/// Records can have comments on the fields. +pub struct Record { + /// The comments come after the field declaration in OCaml. + pub foo: X, + /// bar comment + pub bar: X, +} + +/// Variant types can have comments on each variant. +pub enum Variant { + /// Again, the comments come after the variant declaration. + /// Multiline comments are understood. + Foo, + /** Bar has a multiline delimited comment, even though it's + unusual in Rust source. */ + Bar, + /// Baz comment + Baz { a: X, b: X }, + /// Qux is a struct-like variant with a long comment spanning + /// multiple lines. + #[rust_to_ocaml(prefix = "q_")] + Qux { a: X, b: X }, +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs.exp new file mode 100644 index 00000000000..82754a691fa --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/doc_comment.rs.exp @@ -0,0 +1,68 @@ +(** Type A *) +type a = x + +(** Type B + * is int + *) +type b = x + +(** Type C has a fenced code block: + * + * ``` + * function f(): int { + * return 0; + * } + * ``` + * + * And an unfenced code block: + * + * function g(): int { + * return 0; + * } + * + * It should stay indented. + *) +type c = x + +(** Type D has a multiline delimited comment: + +``` +function f(): int { + return 0; +} +``` + +And an indented code block: + + ``` + function g(): int { + return 0; + } + ``` +*) +type d = x + +(** Records can have comments on the fields. *) +type record = { + foo: x; (** The comments come after the field declaration in OCaml. *) + bar: x; (** bar comment *) +} + +(** Variant types can have comments on each variant. *) +type variant = + | Foo + (** Again, the comments come after the variant declaration. + * Multiline comments are understood. *) + | Bar + (** Bar has a multiline delimited comment, even though it's + unusual in Rust source. *) + | Baz of { + a: x; + b: x; + } (** Baz comment *) + | Qux of { + q_a: x; + q_b: x; + } + (** Qux is a struct-like variant with a long comment spanning + * multiple lines. *) diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs new file mode 100644 index 00000000000..71d542525d0 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs @@ -0,0 +1,13 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub enum E { + Foo((A, B)), + Bar(Box<(A, B)>), + #[rust_to_ocaml(inline_tuple)] + Baz((A, B)), + #[rust_to_ocaml(inline_tuple)] + Qux(Box<(A, B)>), +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs.exp new file mode 100644 index 00000000000..77386f23f0f --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple.rs.exp @@ -0,0 +1,5 @@ +type e = + | Foo of (a * b) + | Bar of (a * b) + | Baz of a * b + | Qux of a * b diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs new file mode 100644 index 00000000000..1f8f353be1d --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs @@ -0,0 +1,9 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub enum E { + #[rust_to_ocaml(inline_tuple)] + Foo(Box), +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs.exp new file mode 100644 index 00000000000..4d4515f2112 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/inline_tuple_bad.rs.exp @@ -0,0 +1,4 @@ +Error: Failed to convert type E + +Caused by: + Variant Foo must have a single argument which is a tuple diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs new file mode 100644 index 00000000000..99571f6c09a --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs @@ -0,0 +1,28 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type A = i8; + +pub type B = u8; + +pub type C = i16; + +pub type D = u16; + +pub type E = i32; + +pub type F = u32; + +pub type G = i64; + +pub type H = u64; + +pub type I = i128; + +pub type J = u128; + +pub type K = isize; + +pub type L = usize; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs.exp new file mode 100644 index 00000000000..69bcd77dd74 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/int.rs.exp @@ -0,0 +1,23 @@ +type a = int + +type b = int + +type c = int + +type d = int + +type e = int + +type f = int + +type g = int + +type h = int + +type i = int + +type j = int + +type k = int + +type l = int diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs new file mode 100644 index 00000000000..08423f1423c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs @@ -0,0 +1,104 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub struct Foo { + and: A, + assert: A, + asr: A, + begin: A, + class: A, + constraint: A, + done: A, + downto: A, + end: A, + exception: A, + external: A, + fun: A, + function: A, + functor: A, + include: A, + inherit: A, + initializer: A, + land: A, + lazy: A, + lor: A, + lsl: A, + lsr: A, + lxor: A, + method: A, + module: A, + mutable: A, + new: A, + nonrec: A, + object: A, + of: A, + open: A, + or: A, + private: A, + rec: A, + sig: A, + then: A, + to: A, + val: A, + when: A, + with: A, +} + +type A = And; +type A = As; +type A = Assert; +type A = Asr; +type A = Begin; +type A = Class; +type A = Constraint; +type A = Do; +type A = Done; +type A = Downto; +type A = Else; +type A = End; +type A = Exception; +type A = External; +type A = False; +type A = For; +type A = Fun; +type A = Function; +type A = Functor; +type A = If; +type A = In; +type A = Include; +type A = Inherit; +type A = Initializer; +type A = Land; +type A = Lazy; +type A = Let; +type A = Lor; +type A = Lsl; +type A = Lsr; +type A = Lxor; +type A = Match; +type A = Method; +type A = Mod; +type A = Module; +type A = Mutable; +type A = New; +type A = Nonrec; +type A = Object; +type A = Of; +type A = Open; +type A = Or; +type A = Private; +type A = Rec; +type A = Sig; +type A = Struct; +type A = Then; +type A = To; +type A = True; +type A = Try; +type A = Type; +type A = Val; +type A = Virtual; +type A = When; +type A = While; +type A = With; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs.exp new file mode 100644 index 00000000000..d4e153e5446 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/keywords.rs.exp @@ -0,0 +1,154 @@ +type foo = { + and_: a; + assert_: a; + asr_: a; + begin_: a; + class_: a; + constraint_: a; + done_: a; + downto_: a; + end_: a; + exception_: a; + external_: a; + fun_: a; + function_: a; + functor_: a; + include_: a; + inherit_: a; + initializer_: a; + land_: a; + lazy_: a; + lor_: a; + lsl_: a; + lsr_: a; + lxor_: a; + method_: a; + module_: a; + mutable_: a; + new_: a; + nonrec_: a; + object_: a; + of_: a; + open_: a; + or_: a; + private_: a; + rec_: a; + sig_: a; + then_: a; + to_: a; + val_: a; + when_: a; + with_: a; +} + +type a = and_ + +type a = as_ + +type a = assert_ + +type a = asr_ + +type a = begin_ + +type a = class_ + +type a = constraint_ + +type a = do_ + +type a = done_ + +type a = downto_ + +type a = else_ + +type a = end_ + +type a = exception_ + +type a = external_ + +type a = false_ + +type a = for_ + +type a = fun_ + +type a = function_ + +type a = functor_ + +type a = if_ + +type a = in_ + +type a = include_ + +type a = inherit_ + +type a = initializer_ + +type a = land_ + +type a = lazy_ + +type a = let_ + +type a = lor_ + +type a = lsl_ + +type a = lsr_ + +type a = lxor_ + +type a = match_ + +type a = method_ + +type a = mod_ + +type a = module_ + +type a = mutable_ + +type a = new_ + +type a = nonrec_ + +type a = object_ + +type a = of_ + +type a = open_ + +type a = or_ + +type a = private_ + +type a = rec_ + +type a = sig_ + +type a = struct_ + +type a = then_ + +type a = to_ + +type a = true_ + +type a = try_ + +type a = type_ + +type a = val_ + +type a = virtual_ + +type a = when_ + +type a = while_ + +type a = with_ diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs new file mode 100644 index 00000000000..43461590d2a --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs @@ -0,0 +1,11 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type MyVec = Vec; +pub type BoxedSlice = Box<[X]>; +pub type Slice<'a> = &'a [X]; + +pub type StdVec = std::vec::Vec; +pub type StdBoxedSlice = std::boxed::Box<[X]>; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs.exp new file mode 100644 index 00000000000..9239a305ee2 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/lists.rs.exp @@ -0,0 +1,9 @@ +type my_vec = x list + +type boxed_slice = x list + +type slice = x list + +type std_vec = x list + +type std_boxed_slice = x list diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs new file mode 100644 index 00000000000..9de7496684a --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs @@ -0,0 +1,9 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub struct Foo(pub Bar, pub Bar); + +#[rust_to_ocaml(and)] +pub struct Bar(pub Option, pub Option); diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs.exp new file mode 100644 index 00000000000..0b8ab7c99df --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/mutual_rec.rs.exp @@ -0,0 +1,3 @@ +type foo = bar * bar + +and bar = foo option * foo option diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs new file mode 100644 index 00000000000..f34c10a6bcb --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs @@ -0,0 +1,9 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub enum Result { + Ok(T), + Err(E), +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs.exp new file mode 100644 index 00000000000..8f4e2e8a856 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/my_result.rs.exp @@ -0,0 +1,3 @@ +type ('t, 'e) result = + | Ok of 't + | Err of 'e diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs new file mode 100644 index 00000000000..0aef02f4a81 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs @@ -0,0 +1,36 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +#[rust_to_ocaml(name = "aa")] // ignored +type A = X; + +#[rust_to_ocaml(name = "bb")] // ignored +struct B { + #[rust_to_ocaml(name = "bb_x")] + foo: x, + #[rust_to_ocaml(name = "bb_y")] + bar: y, +} + +#[rust_to_ocaml(name = "cc")] // ignored +#[rust_to_ocaml(prefix = "C")] +enum C { + #[rust_to_ocaml(name = "C_foo")] + Foo, + #[rust_to_ocaml(name = "Bar")] + Bar { + #[rust_to_ocaml(name = "bar_x")] + foo: x, + #[rust_to_ocaml(name = "bar_y")] + bar: y, + }, + Baz, +} + +type a_alias = a; + +type b_alias = b; + +type c_alias = c; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs.exp new file mode 100644 index 00000000000..31173ff3f67 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/name_attribute.rs.exp @@ -0,0 +1,20 @@ +type a = x + +type b = { + bb_x: x; + bb_y: y; +} + +type c = + | C_foo + | Bar of { + bar_x: x; + bar_y: y; + } + | CBaz + +type a_alias = a + +type b_alias = b + +type c_alias = c diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs new file mode 100644 index 00000000000..741b346416a --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs @@ -0,0 +1,9 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub enum MyOption { + None, + Some(A), +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs.exp new file mode 100644 index 00000000000..ec17c2503cc --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/option.rs.exp @@ -0,0 +1,3 @@ +type 'a my_option = + | None + | Some of 'a diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs new file mode 100644 index 00000000000..b7b934013fe --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs @@ -0,0 +1,16 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type BoxA = Box; +pub type RcA = Rc; +pub type ArcA = Arc; +pub type RcOcA = RcOc; + +pub type StdBoxA = std::boxed::Box; +pub type StdRcA = std::rc::Rc; +pub type StdArcA = std::sync::Arc; +pub type OcamlrepRcOcA = ocamlrep::rc::RcOc; + +pub type BoxedTuple = Box<(Box, Box)>; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs.exp new file mode 100644 index 00000000000..e52149925a7 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/pointers.rs.exp @@ -0,0 +1,17 @@ +type box_a = a + +type rc_a = a + +type arc_a = a + +type rc_oc_a = a + +type std_box_a = a + +type std_rc_a = a + +type std_arc_a = a + +type ocamlrep_rc_oc_a = a + +type boxed_tuple = a * b diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs new file mode 100644 index 00000000000..c91e7881cd9 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs @@ -0,0 +1,12 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type A = x::Foo; + +pub type B = y::z::Foo; + +pub type C = my_module::some_submodule::Foo; + +pub type D = i_map::IMap; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs.exp new file mode 100644 index 00000000000..59b837d4292 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/qualified_name.rs.exp @@ -0,0 +1,7 @@ +type a = X.foo + +type b = Y.Z.foo + +type c = My_module.Some_submodule.foo + +type d = x IMap.t diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs new file mode 100644 index 00000000000..42a33252d33 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs @@ -0,0 +1,21 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub struct MyStruct { + pub foo: isize, + pub bar: isize, +} + +#[rust_to_ocaml(prefix = "a_")] +pub struct StructA { + pub foo: isize, + pub bar: isize, +} + +#[rust_to_ocaml(prefix = "b_")] +pub struct StructB { + pub foo: isize, + pub bar: isize, +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs.exp new file mode 100644 index 00000000000..e3420bcff22 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/struct.rs.exp @@ -0,0 +1,14 @@ +type my_struct = { + foo: int; + bar: int; +} + +type struct_a = { + a_foo: int; + a_bar: int; +} + +type struct_b = { + b_foo: int; + b_bar: int; +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs new file mode 100644 index 00000000000..a2f0ef86d37 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs @@ -0,0 +1,8 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +type TupleA = (A, B); + +type TupleB = (A, (B, C)); diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs.exp new file mode 100644 index 00000000000..c46ee4dfa1c --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple.rs.exp @@ -0,0 +1,3 @@ +type tuple_a = a * b + +type tuple_b = a * (b * c) diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs new file mode 100644 index 00000000000..27f094871a9 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs @@ -0,0 +1,14 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub struct A; + +pub struct B(); + +pub struct C(()); + +pub struct D(pub X); + +pub struct E(pub Y, pub Z); diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs.exp new file mode 100644 index 00000000000..16048fc77ee --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/tuple_structs.rs.exp @@ -0,0 +1,9 @@ +type a = unit + +type b = unit + +type c = unit + +type d = x + +type e = y * z diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs new file mode 100644 index 00000000000..290c95469b5 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs @@ -0,0 +1,10 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type MaybeA = Option; + +pub type MyResult = Result; + +pub type Bar = foo::Bar; diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs.exp new file mode 100644 index 00000000000..0f796f48c28 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_args.rs.exp @@ -0,0 +1,5 @@ +type maybe_a = a option + +type my_result = (b, c) result + +type bar = (d, e, f) Foo.bar diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs new file mode 100644 index 00000000000..83c32d0b488 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs @@ -0,0 +1,17 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub type A = pos::Pos; + +pub type B = crate::relative_path::RelativePath; + +pub type C = collections::s_set::SSet; + +pub type TypeNameMatchesModuleName = D; + +pub mod foo { + pub type Foo = E; + pub type Maybe = Option; +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs.exp new file mode 100644 index 00000000000..8a1d3c5a15e --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/type_name_matches_module_name.rs.exp @@ -0,0 +1,13 @@ +type a = Pos.t + +type b = Relative_path.t + +type c = Collections.SSet.t + +type t = d + +module Foo = struct + type t = e + + type maybe = t option +end diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs new file mode 100644 index 00000000000..85990a7544f --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs @@ -0,0 +1,25 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +pub enum A { + I, + J(isize), + K(isize, isize), + L((isize, isize)), + M { x: isize, y: isize }, +} + +#[rust_to_ocaml(prefix = "P")] +pub enum Prefixed { + I, + J(isize), + K(isize, isize), + L((isize, isize)), + #[rust_to_ocaml(prefix = "m_")] + M { + x: isize, + y: isize, + }, +} diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs.exp b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs.exp new file mode 100644 index 00000000000..e59375a1761 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/cases/variants.rs.exp @@ -0,0 +1,19 @@ +type a = + | I + | J of int + | K of int * int + | L of (int * int) + | M of { + x: int; + y: int; + } + +type prefixed = + | PI + | PJ of int + | PK of int * int + | PL of (int * int) + | PM of { + m_x: int; + m_y: int; + } diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/config.toml b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/config.toml new file mode 100644 index 00000000000..f5319cbcadd --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/config.toml @@ -0,0 +1,19 @@ +[modules] +rename = [ + ["i_map", "IMap"], + ["i_set", "ISet"], + ["s_map", "SMap"], + ["s_set", "SSet"], +] + +[types] +transparent = [ + "Box", "std::boxed::Box", + "Rc", "std::rc::Rc", + "Arc", "std::sync::Arc", + "RcOc", "ocamlrep::rc::RcOc", +] +rename = [ + ["Vec", "list"], + ["std::vec::Vec", "list"], +] diff --git a/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/test_rust_to_ocaml.rs b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/test_rust_to_ocaml.rs new file mode 100644 index 00000000000..4ddf14d0483 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/rust_to_ocaml/test/test_rust_to_ocaml.rs @@ -0,0 +1,126 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use std::ffi::OsStr; +use std::path::Path; +use std::path::PathBuf; + +#[derive(Debug, clap::Parser)] +struct Opts { + /// The directory containing snapshot test cases (.rs) and expected output + /// files (.rs.exp). + cases: PathBuf, + + /// The rust_to_ocaml binary. + rust_to_ocaml_bin: PathBuf, + + /// Update the expected output files instead of testing that the actual + /// output matches the expected. + #[clap(long)] + update_snapshots: bool, + + /// Arguments which will be passed to the rust_to_ocaml binary. + rust_to_ocaml_args: Vec, +} + +const IN_EXT: &str = "rs"; +const EXP_EXT: &str = "exp"; + +fn main() -> anyhow::Result<()> { + let opts = ::from_args(); + if opts.update_snapshots { + update_snapshots(&opts)?; + } else { + run_test_cases(&opts)?; + } + Ok(()) +} + +fn get_test_cases(dir: &Path) -> impl Iterator + '_ { + walkdir::WalkDir::new(dir) + .sort_by_file_name() + .into_iter() + .map(|e| e.unwrap()) + .filter(|e| e.file_type().is_file()) + .filter(|e| e.path().extension().and_then(OsStr::to_str) == Some(IN_EXT)) + .map(|e| e.path().to_owned()) +} + +fn expected_output_path(test_case: &Path) -> PathBuf { + assert_eq!(test_case.extension().and_then(OsStr::to_str), Some(IN_EXT)); + let mut path = test_case.to_owned(); + path.set_extension(format!("{IN_EXT}.{EXP_EXT}")); + path +} + +fn run_test_cases(opts: &Opts) -> anyhow::Result<()> { + let mut failures = vec![]; + for path in get_test_cases(&opts.cases) { + if let Err(diff) = run_test_case(opts, &path)? { + let rel_path = path.strip_prefix(&opts.cases).unwrap_or(&path).to_owned(); + eprintln!("=== TEST FAILED: {} ==================", rel_path.display()); + eprintln!("{diff}"); + failures.push(rel_path); + } + } + if !failures.is_empty() { + anyhow::bail!("{} test cases failed: {:?}", failures.len(), failures); + } + Ok(()) +} + +fn run_test_case(opts: &Opts, test_case: &Path) -> anyhow::Result> { + let exp_path = expected_output_path(test_case); + let expected = std::fs::read_to_string(exp_path)?; + let actual = rust_to_ocaml(opts, test_case)?; + if expected == actual { + Ok(Ok(())) + } else { + Ok(Err(similar::TextDiff::from_lines(&expected, &actual) + .unified_diff() + .context_radius(10) + .header("expected", "actual") + .to_string())) + } +} + +fn rust_to_ocaml(opts: &Opts, rust_file: &Path) -> anyhow::Result { + let mut cmd = std::process::Command::new(&opts.rust_to_ocaml_bin); + for arg in &opts.rust_to_ocaml_args { + cmd.arg(arg); + } + cmd.arg(rust_file); + let output = cmd.output()?; + let mut output_str = String::from_utf8(output.stdout)?; + output_str.push_str(std::str::from_utf8(&output.stderr)?); + Ok(output_str) +} + +fn update_snapshots(opts: &Opts) -> anyhow::Result<()> { + let test_cases: Vec = get_test_cases(&opts.cases).collect(); + println!( + "Updating snapshots for {} test cases in {}", + test_cases.len(), + opts.cases + .canonicalize() + .unwrap_or_else(|_| opts.cases.clone()) + .display(), + ); + let mut num_updated = 0; + for test_case in test_cases { + let exp_path = expected_output_path(&test_case); + let actual = rust_to_ocaml(opts, &test_case)?; + if let Ok(expected) = std::fs::read_to_string(&exp_path) { + if expected == actual { + continue; + } + } + let mut expected = std::fs::File::create(&exp_path)?; + std::io::Write::write_all(&mut expected, actual.as_bytes())?; + num_updated += 1; + } + println!("Updated {num_updated} snapshots."); + Ok(()) +} diff --git a/source/errpy/vendor/ocaml/interop/signed_source/Cargo.toml b/source/errpy/vendor/ocaml/interop/signed_source/Cargo.toml new file mode 100644 index 00000000000..1420b17d2bf --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/signed_source/Cargo.toml @@ -0,0 +1,20 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/ocaml/interop/signed_source:signed_source + +[package] +name = "signed_source" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" + +[lib] +path = "signed_source.rs" +doctest = false + +[dependencies] +bstr = { version = "1.4.0", features = ["serde", "std", "unicode"] } +hex = "0.4.3" +md-5 = "0.10" +once_cell = "1.12" +regex = "1.9.2" +thiserror = "1.0.49" diff --git a/source/errpy/vendor/ocaml/interop/signed_source/signed_source.rs b/source/errpy/vendor/ocaml/interop/signed_source/signed_source.rs new file mode 100644 index 00000000000..704c2f7be45 --- /dev/null +++ b/source/errpy/vendor/ocaml/interop/signed_source/signed_source.rs @@ -0,0 +1,182 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is licensed under the MIT license found in the +// LICENSE file in the root directory of this source tree. + +use bstr::ByteSlice; +use once_cell::sync::Lazy; +use regex::bytes::Regex; + +/// This crate is a port of hphp/hack/src/utils/signed_source.ml, which was +/// based on a historical version of fbsource/tools/signedsource.py. + +/// The signing token, which you must embed in the file you wish to sign. +/// Generally, you should put this in a header comment. +pub static SIGNING_TOKEN: &str = concat!( + "@", + "generated", + " ", + "<>" +); + +/// Sign a source file into which you have previously embedded a signing token. +/// Signing modifies only the signing token, so the semantics of the file will +/// not change if the token is put in a comment. +/// +/// Returns `TokenNotFoundError` if no signing token is present. +pub fn sign_file(data: &[u8]) -> Result, TokenNotFoundError> { + let data = SIGN_OR_OLD_TOKEN.replace_all(data, TOKEN.as_bytes()); + if !data.contains_str(TOKEN) { + return Err(TokenNotFoundError); + } + let signature = format!("SignedSource<<{}>>", hash(&data)); + Ok(TOKEN_REGEX + .replace_all(&data, signature.as_bytes()) + .into_owned()) +} + +/// Sign a UTF-8 source file into which you have previously embedded a signing +/// token. Signing modifies only the signing token, so the semantics of the file +/// will not change if the token is put in a comment. +/// +/// Returns `TokenNotFoundError` if no signing token is present. +pub fn sign_utf8_file(data: &str) -> Result { + let data = sign_file(data.as_bytes())?; + // SAFETY: `data` was a valid `&str` before signing, and signing only + // replaces ASCII characters with other ASCII characters. + unsafe { Ok(String::from_utf8_unchecked(data)) } +} + +/// Determine whether a file is signed. This does NOT verify the signature. +pub fn is_signed(data: &[u8]) -> bool { + SIGNING_REGEX.is_match(data) +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum SignCheckResponse { + Ok, + Unsigned, + Invalid, +} + +/// Verify a file's signature. +pub fn verify_signature(data: &[u8]) -> SignCheckResponse { + let expected_md5 = match SIGNING_REGEX.captures(data) { + None => return SignCheckResponse::Unsigned, + Some(caps) => match caps.get(1) { + None => return SignCheckResponse::Unsigned, + Some(cap) => cap.as_bytes(), + }, + }; + for tok in [TOKEN, OLD_TOKEN] { + let replacement = make_signing_token(tok); + let unsigned_data = SIGNING_REGEX.replace_all(data, replacement.as_bytes()); + let actual_md5 = hash(&unsigned_data); + if expected_md5 == actual_md5.as_bytes() { + return SignCheckResponse::Ok; + } + } + SignCheckResponse::Invalid +} + +static TOKEN: &str = "<>"; + +/// This old token was historically used as the signing token. It was replaced +/// because it is 2 characters shorter than the final signature, and as a result, +/// signing data with the old token forced the entire string to be rewritten +/// (everything after the token needs to be shifted forwards 2 bytes). +/// In this implementation, we rewrite the entire string anyway. +static OLD_TOKEN: &str = "<>"; + +fn make_signing_token(token: &str) -> String { + format!("@{} {}", "generated", token) +} + +static SIGNATURE_RE: &str = r"SignedSource<<([a-f0-9]+)>>"; + +static SIGN_OR_OLD_TOKEN: Lazy = + Lazy::new(|| Regex::new(&format!("{}|{}", SIGNATURE_RE, regex::escape(OLD_TOKEN))).unwrap()); + +static SIGNING_REGEX: Lazy = + Lazy::new(|| Regex::new(&make_signing_token(SIGNATURE_RE)).unwrap()); + +static TOKEN_REGEX: Lazy = Lazy::new(|| Regex::new(®ex::escape(TOKEN)).unwrap()); + +fn hash(data: &[u8]) -> String { + use md5::Digest; + let mut digest = md5::Md5::new(); + digest.update(data); + hex::encode(digest.finalize()) +} + +#[derive(Debug, thiserror::Error, PartialEq, Eq)] +#[error("Failed to sign file: input does not contain signing token")] +pub struct TokenNotFoundError; + +#[cfg(test)] +mod test { + use super::is_signed; + use super::make_signing_token; + use super::sign_utf8_file; + use super::verify_signature; + use super::SignCheckResponse; + use super::TokenNotFoundError; + use super::SIGNING_TOKEN; + use super::TOKEN; + + static NO_TOKEN: &str = concat!("// @", "generated\nfn foo() {}"); + static INVALID: &str = concat!( + "// @", + "generated SignedSource<<48ab1081d9394843f184debf0b251a18>>\nfn foo() {}" + ); + static UNSIGNED: &str = concat!( + "// @", + "generated <>\nfn foo() {}" + ); + // Below signature was manually verified to be equal to the OCaml + // Signed_source output for `UNSIGNED`. + static SIGNED: &str = concat!( + "// @", + "generated SignedSource<<38ab1081d9394843f184debf0b251a18>>\nfn foo() {}" + ); + + #[test] + fn test_signing_token() { + // We use `concat!` so that `SIGNING_TOKEN` can be a `&str` rather than + // a `Lazy`, since `make_signing_token` can't be a `const fn` yet. + // Verify that we're producing the same result. + assert_eq!(SIGNING_TOKEN, make_signing_token(TOKEN)) + } + + #[test] + fn test_sign_utf8_file() { + assert_eq!(sign_utf8_file(UNSIGNED), Ok(SIGNED.to_owned())); + assert_eq!(sign_utf8_file(SIGNED), Ok(SIGNED.to_owned())); + assert_eq!(sign_utf8_file(NO_TOKEN), Err(TokenNotFoundError)); + } + + #[test] + fn test_is_signed() { + assert!(is_signed(SIGNED.as_bytes())); + assert!(is_signed(INVALID.as_bytes())); // `is_signed` doesn't validate + assert!(!is_signed(NO_TOKEN.as_bytes())); + assert!(!is_signed(UNSIGNED.as_bytes())); + } + + #[test] + fn test_verify_signature() { + assert_eq!(verify_signature(SIGNED.as_bytes()), SignCheckResponse::Ok); + assert_eq!( + verify_signature(INVALID.as_bytes()), + SignCheckResponse::Invalid + ); + assert_eq!( + verify_signature(NO_TOKEN.as_bytes()), + SignCheckResponse::Unsigned + ); + assert_eq!( + verify_signature(UNSIGNED.as_bytes()), + SignCheckResponse::Unsigned + ); + } +} diff --git a/source/errpy/vendor/tree-sitter-python/Cargo.toml b/source/errpy/vendor/tree-sitter-python/Cargo.toml new file mode 100644 index 00000000000..8b1780cba51 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/Cargo.toml @@ -0,0 +1,19 @@ +# @generated by autocargo from //tools/pyre/source/errpy/vendor/tree-sitter-python:tree-sitter-python + +[package] +name = "tree_sitter_python" +version = "0.0.0" +edition = "2021" +repository = "https://github.com/facebook/errpy" +license = "MIT" +build = "bindings/rust/build.rs" +include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "0.20.8" + +[build-dependencies] +cc = "1.0" diff --git a/source/errpy/vendor/tree-sitter-python/bindings/rust/README.md b/source/errpy/vendor/tree-sitter-python/bindings/rust/README.md new file mode 100644 index 00000000000..66976d4671f --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/bindings/rust/README.md @@ -0,0 +1,36 @@ +# tree-sitter-python + +This crate provides a Python grammar for the [tree-sitter][] parsing library. +To use this crate, add it to the `[dependencies]` section of your `Cargo.toml` +file. (Note that you will probably also need to depend on the +[`tree-sitter`][tree-sitter crate] crate to use the parsed result in any useful +way.) + +``` toml +[dependencies] +tree-sitter = "0.17" +tree-sitter-python = "0.17" +``` + +Typically, you will use the [language][language func] function to add this +grammar to a tree-sitter [Parser][], and then use the parser to parse some code: + +``` rust +let code = r#" + def double(x): + return x * 2 +"#; +let mut parser = Parser::new(); +parser.set_language(tree_sitter_python::language()).expect("Error loading Python grammar"); +let parsed = parser.parse(code, None); +``` + +If you have any questions, please reach out to us in the [tree-sitter +discussions] page. + +[Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +[language func]: https://docs.rs/tree-sitter-python/*/tree_sitter_python/fn.language.html +[Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +[tree-sitter]: https://tree-sitter.github.io/ +[tree-sitter crate]: https://crates.io/crates/tree-sitter +[tree-sitter discussions]: https://github.com/tree-sitter/tree-sitter/discussions diff --git a/source/errpy/vendor/tree-sitter-python/bindings/rust/build.rs b/source/errpy/vendor/tree-sitter-python/bindings/rust/build.rs new file mode 100644 index 00000000000..8851fed13a6 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/bindings/rust/build.rs @@ -0,0 +1,19 @@ +fn main() { + let src_dir = std::path::Path::new("src"); + + let mut c_config = cc::Build::new(); + c_config.include(src_dir); + c_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable") + .flag_if_supported("-Wno-trigraphs"); + let parser_path = src_dir.join("parser.c"); + c_config.file(&parser_path); + + let scanner_path = src_dir.join("scanner.c"); + c_config.file(&scanner_path); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + + c_config.compile("parser"); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); +} diff --git a/source/errpy/vendor/tree-sitter-python/bindings/rust/lib.rs b/source/errpy/vendor/tree-sitter-python/bindings/rust/lib.rs new file mode 100644 index 00000000000..7a58509e89c --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/bindings/rust/lib.rs @@ -0,0 +1,68 @@ +// -*- coding: utf-8 -*- +// ------------------------------------------------------------------------------------------------ +// Copyright © 2020, tree-sitter-python authors. +// See the LICENSE file in this repo for license details. +// ------------------------------------------------------------------------------------------------ + +//! This crate provides a Python grammar for the [tree-sitter][] parsing library. +//! +//! Typically, you will use the [language][language func] function to add this grammar to a +//! tree-sitter [Parser][], and then use the parser to parse some code: +//! +//! ``` +//! use tree_sitter::Parser; +//! +//! let code = r#" +//! def double(x): +//! return x * 2 +//! "#; +//! let mut parser = Parser::new(); +//! parser.set_language(tree_sitter_python::language()).expect("Error loading Python grammar"); +//! let parsed = parser.parse(code, None); +//! # let parsed = parsed.unwrap(); +//! # let root = parsed.root_node(); +//! # assert!(!root.has_error()); +//! ``` +//! +//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +//! [language func]: fn.language.html +//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +//! [tree-sitter]: https://tree-sitter.github.io/ + +use tree_sitter::Language; + +extern "C" { + fn tree_sitter_python() -> Language; +} + +/// Returns the tree-sitter [Language][] for this grammar. +/// +/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +pub fn language() -> Language { + unsafe { tree_sitter_python() } +} + +/// The source of the Python tree-sitter grammar description. +pub const GRAMMAR: &'static str = include_str!("../../grammar.js"); + +/// The syntax highlighting query for this language. +pub const HIGHLIGHT_QUERY: &'static str = include_str!("../../queries/highlights.scm"); + +/// The content of the [`node-types.json`][] file for this grammar. +/// +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types +pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json"); + +/// The symbol tagging query for this language. +pub const TAGGING_QUERY: &'static str = include_str!("../../queries/tags.scm"); + +#[cfg(test)] +mod tests { + #[test] + fn can_load_grammar() { + let mut parser = tree_sitter::Parser::new(); + parser + .set_language(super::language()) + .expect("Error loading Python grammar"); + } +} diff --git a/source/errpy/vendor/tree-sitter-python/grammar.js b/source/errpy/vendor/tree-sitter-python/grammar.js new file mode 100644 index 00000000000..d76d0b0e083 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/grammar.js @@ -0,0 +1,1186 @@ +const PREC = { + // this resolves a conflict between the usage of ':' in a lambda vs in a + // typed parameter. In the case of a lambda, we don't allow typed parameters. + lambda: -2, + typed_parameter: -1, + conditional: -1, + + parenthesized_expression: 1, + parenthesized_list_splat: 1, + or: 10, + and: 11, + not: 12, + compare: 13, + bitwise_or: 14, + bitwise_and: 15, + xor: 16, + shift: 17, + plus: 18, + times: 19, + unary: 20, + power: 21, + call: 22, +} + +const SEMICOLON = ';' + +module.exports = grammar({ + name: 'python', + + extras: $ => [ + $.comment, + /[\s\f\uFEFF\u2060\u200B]|\r?\n/, + $.line_continuation, + ], + + conflicts: $ => [ + [$.primary_expression, $.pattern], + [$.primary_expression, $.list_splat_pattern], + [$.tuple, $.tuple_pattern], + [$.list, $.list_pattern], + [$.with_item, $._collection_elements], + [$.named_expression, $.as_pattern], + [$.match_statement, $.primary_expression], + [$.print_statement, $.primary_expression], + [$.case_clause, $.case_maybe_star_pattern], + [$.case_positional_patterns], + [$.case_keyword_patterns], + ], + + supertypes: $ => [ + $._simple_statement, + $._compound_statement, + $.expression, + $.primary_expression, + $.pattern, + $.parameter, + ], + + externals: $ => [ + $._newline, + $._indent, + $._dedent, + $.string_start, + $._string_content, + $.string_end, + + // Mark comments as external tokens so that the external scanner is always + // invoked, even if no external token is expected. This allows for better + // error recovery, because the external scanner can maintain the overall + // structure by returning dedent tokens whenever a dedent occurs, even + // if no dedent is expected. + $.comment, + + // Allow the external scanner to check for the validity of closing brackets + // so that it can avoid returning dedent tokens between brackets. + ']', + ')', + '}', + ], + + inline: $ => [ + $._simple_statement, + $._compound_statement, + $._suite, + $._expressions, + $._left_hand_side, + $.keyword_identifier, + ], + + word: $ => $.identifier, + + rules: { + module: $ => repeat($._statement), + + _statement: $ => choice( + $._simple_statements, + $._compound_statement + ), + + // Simple statements + + _simple_statements: $ => seq( + sep1($._simple_statement, SEMICOLON), + optional(SEMICOLON), + $._newline + ), + + _simple_statement: $ => choice( + $.future_import_statement, + $.import_statement, + $.import_from_statement, + $.print_statement, + $.assert_statement, + $.expression_statement, + $.return_statement, + $.delete_statement, + $.raise_statement, + $.pass_statement, + $.break_statement, + $.continue_statement, + $.global_statement, + $.nonlocal_statement, + $.exec_statement + ), + + import_statement: $ => seq( + 'import', + $._import_list + ), + + import_prefix: $ => repeat1('.'), + + relative_import: $ => seq( + $.import_prefix, + optional($.dotted_name) + ), + + future_import_statement: $ => seq( + 'from', + '__future__', + 'import', + choice( + $._import_list, + seq('(', $._import_list, ')'), + ) + ), + + import_from_statement: $ => seq( + 'from', + field('module_name', choice( + $.relative_import, + $.dotted_name + )), + 'import', + choice( + $.wildcard_import, + $._import_list, + seq('(', $._import_list, ')') + ) + ), + + _import_list: $ => seq( + commaSep1(field('name', choice( + $.dotted_name, + $.aliased_import + ))), + optional(',') + ), + + aliased_import: $ => seq( + field('name', $.dotted_name), + 'as', + field('alias', $.identifier) + ), + + wildcard_import: $ => '*', + + print_statement: $ => choice( + prec(1, seq( + 'print', + $.chevron, + repeat(seq(',', field('argument', $.expression))), + optional(',')) + ), + prec(-3, prec.dynamic(-1, seq( + 'print', + commaSep1(field('argument', $.expression)), + optional(',') + ))), + ), + + chevron: $ => seq( + '>>', + $.expression + ), + + assert_statement: $ => seq( + 'assert', + commaSep1($.expression) + ), + + expression_statement: $ => choice( + $.expression, + seq(commaSep1($.expression), optional(',')), + $.assignment, + $.augmented_assignment, + $.yield + ), + + named_expression: $ => seq( + field('name', $._named_expression_lhs), + ':=', + field('value', $.expression) + ), + + _named_expression_lhs: $ => choice( + $.identifier, + $.keyword_identifier + ), + + return_statement: $ => seq( + 'return', + optional($._expressions) + ), + + delete_statement: $ => seq( + 'del', + $._expressions + ), + + _expressions: $ => choice( + $.expression, + $.expression_list + ), + + raise_statement: $ => seq( + 'raise', + optional($._expressions), + optional(seq('from', field('cause', $.expression))) + ), + + pass_statement: $ => prec.left('pass'), + break_statement: $ => prec.left('break'), + continue_statement: $ => prec.left('continue'), + + // Compound statements + + _compound_statement: $ => choice( + $.if_statement, + $.for_statement, + $.while_statement, + $.try_statement, + $.with_statement, + $.function_definition, + $.class_definition, + $.decorated_definition, + $.match_statement, + ), + + if_statement: $ => seq( + 'if', + field('condition', $.expression), + ':', + field('consequence', $._suite), + repeat(field('alternative', $.elif_clause)), + optional(field('alternative', $.else_clause)) + ), + + elif_clause: $ => seq( + 'elif', + field('condition', $.expression), + ':', + field('consequence', $._suite) + ), + + else_clause: $ => seq( + 'else', + ':', + field('body', $._suite) + ), + + match_statement: $ => seq( + 'match', + commaSep1(field('subject', $.expression)), + optional(','), + ':', + repeat(field('alternative', $.case_clause))), + + case_clause: $ => seq( + 'case', + commaSep1( + field( + 'pattern', + choice($.case_pattern, $.case_open_sequence_pattern), + ) + ), + optional(','), + optional(field('guard', $.if_clause)), + ':', + field('consequence', $._suite) + ), + + for_statement: $ => seq( + optional('async'), + 'for', + field('left', $._left_hand_side), + 'in', + field('right', $._expressions), + ':', + field('body', $._suite), + field('alternative', optional($.else_clause)) + ), + + while_statement: $ => seq( + 'while', + field('condition', $.expression), + ':', + field('body', $._suite), + optional(field('alternative', $.else_clause)) + ), + + try_statement: $ => seq( + 'try', + ':', + field('body', $._suite), + choice( + seq( + repeat1($.except_clause), + optional($.else_clause), + optional($.finally_clause) + ), + seq( + repeat1($.except_group_clause), + optional($.else_clause), + optional($.finally_clause) + ), + $.finally_clause + ) + ), + + except_clause: $ => seq( + 'except', + optional(seq( + $.expression, + optional(seq( + choice('as', ','), + $.expression + )) + )), + ':', + $._suite + ), + + except_group_clause: $ => seq( + 'except*', + seq( + $.expression, + optional(seq( + 'as', + $.expression + )) + ), + ':', + $._suite + ), + + finally_clause: $ => seq( + 'finally', + ':', + $._suite + ), + + with_statement: $ => seq( + optional('async'), + 'with', + $.with_clause, + ':', + field('body', $._suite) + ), + + with_clause: $ => choice( + seq(commaSep1($.with_item), optional(',')), + seq('(', commaSep1($.with_item), optional(','), ')') + ), + + with_item: $ => prec.dynamic(1, seq( + field('value', $.expression), + )), + + function_definition: $ => seq( + optional('async'), + 'def', + field('name', $.identifier), + field('parameters', $.parameters), + optional( + seq( + '->', + field('return_type', $.type) + ) + ), + ':', + field('body', $._suite) + ), + + parameters: $ => seq( + '(', + optional($._parameters), + ')' + ), + + lambda_parameters: $ => $._parameters, + + list_splat: $ => seq( + '*', + $.expression, + ), + + dictionary_splat: $ => seq( + '**', + $.expression + ), + + global_statement: $ => seq( + 'global', + commaSep1($.identifier) + ), + + nonlocal_statement: $ => seq( + 'nonlocal', + commaSep1($.identifier) + ), + + exec_statement: $ => seq( + 'exec', + field('code', choice($.string, $.identifier)), + optional( + seq( + 'in', + commaSep1($.expression) + ) + ) + ), + + class_definition: $ => seq( + 'class', + field('name', $.identifier), + field('superclasses', optional($.argument_list)), + ':', + field('body', $._suite) + ), + + parenthesized_list_splat: $ => prec(PREC.parenthesized_list_splat, seq( + '(', + choice( + alias($.parenthesized_list_splat, $.parenthesized_expression), + $.list_splat, + ), + ')', + )), + + argument_list: $ => seq( + '(', + optional(commaSep1( + choice( + $.expression, + $.list_splat, + $.dictionary_splat, + alias($.parenthesized_list_splat, $.parenthesized_expression), + $.keyword_argument + ) + )), + optional(','), + ')' + ), + + decorated_definition: $ => seq( + repeat1($.decorator), + field('definition', choice( + $.class_definition, + $.function_definition + )) + ), + + decorator: $ => seq( + '@', + $.expression, + $._newline + ), + + _suite: $ => choice( + alias($._simple_statements, $.block), + seq($._indent, $.block), + alias($._newline, $.block) + ), + + block: $ => seq( + repeat($._statement), + $._dedent + ), + + expression_list: $ => prec.right(seq( + $.expression, + choice( + ',', + seq( + repeat1(seq( + ',', + $.expression + )), + optional(',') + ), + ) + )), + + dotted_name: $ => sep1($.identifier, '.'), + + // Match cases + + case_pattern: $ => choice( + $.case_as_pattern, + $.case_or_pattern + ), + + case_as_pattern: $ => seq( + field("or_pattern", $.case_or_pattern), 'as', field("identifier", $.identifier)), + + case_or_pattern: $ => seq( + $.case_closed_pattern, repeat(seq('|', $.case_closed_pattern))), + + + case_closed_pattern: $ => choice( + $.case_literal_pattern, + $.dotted_name, + $.case_wildcard_pattern, + $.case_group_pattern, + $.case_sequence_pattern, + $.case_mapping_pattern, + $.case_class_pattern, + ), + + case_literal_pattern: $ => choice( + $.string, + $.concatenated_string, + $.case_literal_pattern_complex_number, + $.case_literal_integer_or_float, + $.true, + $.false, + $.none + ), + + case_literal_pattern_complex_number: $ => seq( + field("real_component", $.case_literal_integer_or_float), + field("sign", choice('+', '-')), + field("imaginary_component", $.case_literal_integer_or_float), + ), + + case_literal_integer_or_float : $ => seq( + field('neg', optional('-')), + choice($.integer, $.float)), + + case_wildcard_pattern: $ => "_", + + case_group_pattern: $ => seq('(', field("case_pattern", $.case_pattern), ')'), + + case_sequence_pattern: $ => choice( + seq('[', optional($.case_maybe_sequence_pattern), ']'), + seq('(', optional($.case_open_sequence_pattern), ')'), + ), + + case_open_sequence_pattern: $ => seq( + field("maybe_star", $.case_maybe_star_pattern), ',', field("maybe_sequence", optional($.case_maybe_sequence_pattern)) + ), + + case_maybe_sequence_pattern: $ => prec.right(seq(commaSep1($.case_maybe_star_pattern), optional(','))), + + case_maybe_star_pattern: $ => prec.left(choice( + $.case_star_pattern, + $.case_pattern + )), + + case_mapping_pattern: $ => choice( + seq('{', '}'), + seq('{', $.case_double_star_pattern, optional(','), '}'), + seq('{', $.case_items_pattern, $.case_double_star_pattern, optional(','), '}'), + seq('{', $.case_items_pattern, '}'), + ), + + case_items_pattern: $ => seq(commaSep1($.case_key_value_pattern), optional(',')), + + case_key_value_pattern: $ => seq( + field("key", choice($.case_literal_pattern, $.dotted_name)), ':', field("value", $.case_pattern) + ), + + case_star_pattern: $ => choice( + seq('*', $.identifier), + seq('*', $.case_wildcard_pattern) + ), + + case_double_star_pattern: $ => seq('**', $.identifier), + + case_class_pattern: $ => choice( + seq($.dotted_name, '(', ')'), + seq($.dotted_name, '(', $.case_positional_patterns, optional(','), ')'), + seq($.dotted_name, '(', $.case_keyword_patterns, optional(','), ')'), + seq($.dotted_name, '(', $.case_positional_patterns, ',', $.case_keyword_patterns, optional(','), ')'), + ), + + case_positional_patterns: $ => commaSep1($.case_pattern), + + case_keyword_patterns: $ => commaSep1($.case_keyword_pattern), + + case_keyword_pattern: $ => seq(field("name", $.identifier), "=", field("value", $.case_pattern)), + + // Patterns + + _parameters: $ => seq( + commaSep1($.parameter), + optional(',') + ), + + _patterns: $ => seq( + commaSep1($.pattern), + optional(',') + ), + + parameter: $ => choice( + $.identifier, + $.typed_parameter, + $.default_parameter, + $.typed_default_parameter, + $.list_splat_pattern, + $.tuple_pattern, + $.keyword_separator, + $.positional_separator, + $.dictionary_splat_pattern + ), + + pattern: $ => choice( + $.identifier, + $.keyword_identifier, + $.subscript, + $.attribute, + $.list_splat_pattern, + $.tuple_pattern, + $.list_pattern + ), + + tuple_pattern: $ => seq( + '(', + optional($._patterns), + ')' + ), + + list_pattern: $ => seq( + '[', + optional($._patterns), + ']' + ), + + default_parameter: $ => seq( + field('name', $.identifier), + '=', + field('value', $.expression) + ), + + typed_default_parameter: $ => prec(PREC.typed_parameter, seq( + field('name', $.identifier), + ':', + field('type', $.type), + '=', + field('value', $.expression) + )), + + list_splat_pattern: $ => seq( + '*', + choice($.identifier, $.keyword_identifier, $.subscript, $.attribute) + ), + + dictionary_splat_pattern: $ => seq( + '**', + choice($.identifier, $.keyword_identifier, $.subscript, $.attribute) + ), + + // Extended patterns (patterns allowed in match statement are far more flexible than simple patterns though still a subset of "expression") + + as_pattern: $ => prec.left(seq( + $.expression, + 'as', + field('alias', alias($.expression, $.as_pattern_target)) + )), + + // Expressions + + _expression_within_for_in_clause: $ => choice( + $.expression, + alias($.lambda_within_for_in_clause, $.lambda) + ), + + expression: $ => choice( + $.comparison_operator, + $.not_operator, + $.boolean_operator, + $.lambda, + $.primary_expression, + $.conditional_expression, + $.named_expression, + $.as_pattern, + ), + + primary_expression: $ => choice( + $.await, + $.binary_operator, + $.identifier, + $.keyword_identifier, + $.string, + $.concatenated_string, + $.integer, + $.float, + $.true, + $.false, + $.none, + $.unary_operator, + $.attribute, + $.subscript, + $.call, + $.list, + $.list_comprehension, + $.dictionary, + $.dictionary_comprehension, + $.set, + $.set_comprehension, + $.tuple, + $.parenthesized_expression, + $.generator_expression, + $.ellipsis, + ), + + not_operator: $ => prec(PREC.not, seq( + 'not', + field('argument', $.expression) + )), + + boolean_operator: $ => choice( + prec.left(PREC.and, seq( + field('left', $.expression), + field('operator', 'and'), + field('right', $.expression) + )), + prec.left(PREC.or, seq( + field('left', $.expression), + field('operator', 'or'), + field('right', $.expression) + )) + ), + + binary_operator: $ => { + const table = [ + [prec.left, '+', PREC.plus], + [prec.left, '-', PREC.plus], + [prec.left, '*', PREC.times], + [prec.left, '@', PREC.times], + [prec.left, '/', PREC.times], + [prec.left, '%', PREC.times], + [prec.left, '//', PREC.times], + [prec.right, '**', PREC.power], + [prec.left, '|', PREC.bitwise_or], + [prec.left, '&', PREC.bitwise_and], + [prec.left, '^', PREC.xor], + [prec.left, '<<', PREC.shift], + [prec.left, '>>', PREC.shift], + ]; + + return choice(...table.map(([fn, operator, precedence]) => fn(precedence, seq( + field('left', $.primary_expression), + field('operator', operator), + field('right', $.primary_expression) + )))); + }, + + unary_operator: $ => prec(PREC.unary, seq( + field('operator', choice('+', '-', '~')), + field('argument', $.primary_expression) + )), + + comparison_operator: $ => prec.left(PREC.compare, seq( + $.primary_expression, + repeat1(seq( + field('operators', + choice( + '<', + '<=', + '==', + '!=', + '>=', + '>', + '<>', + 'in', + alias(seq('not', 'in'), 'not in'), + 'is', + alias(seq('is', 'not'), 'is not') + )), + $.primary_expression + )) + )), + + lambda: $ => prec(PREC.lambda, seq( + 'lambda', + field('parameters', optional($.lambda_parameters)), + ':', + field('body', $.expression) + )), + + lambda_within_for_in_clause: $ => seq( + 'lambda', + field('parameters', optional($.lambda_parameters)), + ':', + field('body', $._expression_within_for_in_clause) + ), + + assignment: $ => seq( + field('left', $._left_hand_side), + choice( + seq('=', field('right', $._right_hand_side)), + seq(':', field('type', $.type)), + seq(':', field('type', $.type), '=', field('right', $._right_hand_side)) + ) + ), + + augmented_assignment: $ => seq( + field('left', $._left_hand_side), + field('operator', choice( + '+=', '-=', '*=', '/=', '@=', '//=', '%=', '**=', + '>>=', '<<=', '&=', '^=', '|=' + )), + field('right', $._right_hand_side) + ), + + _left_hand_side: $ => choice( + $.pattern, + $.pattern_list, + ), + + pattern_list: $ => seq( + $.pattern, + choice( + ',', + seq( + repeat1(seq( + ',', + $.pattern + )), + optional(',') + ) + ) + ), + + _right_hand_side: $ => choice( + $._list_splat_or_expression, + $.list_splat_or_expressions, + $.assignment, + $.augmented_assignment, + $.yield + ), + + list_splat_or_expressions: $ => prec.right(seq( + $._list_splat_or_expression, + choice( + ',', + seq( + repeat1(seq( + ',', + $._list_splat_or_expression + )), + optional(',') + ), + ) + )), + + _list_splat_or_expression: $ => choice($.list_splat, $.expression), + + yield: $ => prec.right(seq( + 'yield', + choice( + seq( + 'from', + $.expression + ), + optional($._expressions) + ) + )), + + attribute: $ => prec(PREC.call, seq( + field('object', $.primary_expression), + '.', + field('attribute', $.identifier) + )), + + subscript: $ => prec(PREC.call, seq( + field('value', $.primary_expression), + '[', + commaSep1(field('subscript', choice($.expression, $.slice))), + optional(','), + ']' + )), + + slice: $ => seq( + optional($.expression), + ':', + optional($.expression), + optional(seq(':', optional($.expression))) + ), + + ellipsis: $ => '...', + + call: $ => prec(PREC.call, seq( + field('function', $.primary_expression), + field('arguments', choice( + $.generator_expression, + $.argument_list + )) + )), + + typed_parameter: $ => prec(PREC.typed_parameter, seq( + choice( + $.identifier, + $.list_splat_pattern, + $.dictionary_splat_pattern + ), + ':', + field('type', $.type) + )), + + type: $ => $.expression, + + keyword_argument: $ => seq( + field('name', choice($.identifier, $.keyword_identifier)), + '=', + field('value', $.expression) + ), + + // Literals + + list: $ => seq( + '[', + optional($._collection_elements), + ']' + ), + + set: $ => seq( + '{', + $._collection_elements, + '}' + ), + + tuple: $ => seq( + '(', + optional($._collection_elements), + ')' + ), + + dictionary: $ => seq( + '{', + optional(commaSep1(choice($.pair, $.dictionary_splat))), + optional(','), + '}' + ), + + pair: $ => seq( + field('key', $.expression), + ':', + field('value', $.expression) + ), + + list_comprehension: $ => seq( + '[', + field('body', $.expression), + $._comprehension_clauses, + ']' + ), + + dictionary_comprehension: $ => seq( + '{', + field('body', $.pair), + $._comprehension_clauses, + '}' + ), + + set_comprehension: $ => seq( + '{', + field('body', $.expression), + $._comprehension_clauses, + '}' + ), + + generator_expression: $ => seq( + '(', + field('body', $.expression), + $._comprehension_clauses, + ')' + ), + + _comprehension_clauses: $ => seq( + $.for_in_clause, + repeat(choice( + $.for_in_clause, + $.if_clause + )) + ), + + parenthesized_expression: $ => prec(PREC.parenthesized_expression, seq( + '(', + choice($.expression, $.yield), + ')' + )), + + _collection_elements: $ => seq( + commaSep1(choice( + $.expression, $.yield, $.list_splat, $.parenthesized_list_splat + )), + optional(',') + ), + + for_in_clause: $ => prec.left(seq( + optional('async'), + 'for', + field('left', $._left_hand_side), + 'in', + field('right', commaSep1($._expression_within_for_in_clause)), + optional(',') + )), + + if_clause: $ => seq( + 'if', + $.expression + ), + + conditional_expression: $ => prec.right(PREC.conditional, seq( + $.expression, + 'if', + $.expression, + 'else', + $.expression + )), + + concatenated_string: $ => seq( + $.string, + repeat1($.string) + ), + + string: $ => seq( + field('prefix', $.string_start), + repeat(choice( + field('interpolation', $.interpolation), + field('string_content', $.string_content) + )), + field('suffix', $.string_end) + ), + + string_content: $ => prec.right(repeat1( + choice( + $._escape_interpolation, + $.escape_sequence, + $._not_escape_sequence, + $._string_content + ))), + + interpolation: $ => seq( + '{', + field('expression', $._f_expression), + optional('='), + optional(field('type_conversion', $.type_conversion)), + optional(field('format_specifier', $.format_specifier)), + '}' + ), + + _f_expression: $ => choice( + $.expression, + $.expression_list, + $.pattern_list, + $.yield, + ), + + _escape_interpolation: $ => token.immediate(choice('{{', '}}')), + + escape_sequence: $ => token.immediate(prec(1, seq( + '\\', + choice( + /u[a-fA-F\d]{4}/, + /U[a-fA-F\d]{8}/, + /x[a-fA-F\d]{2}/, + /\d{3}/, + /\r?\n/, + /['"abfrntv\\]/, + /N\{[^}]+\}/, + ) + ))), + + _not_escape_sequence: $ => token.immediate('\\'), + + format_specifier: $ => seq( + ':', + repeat(choice( + token(prec(1, /[^{}\n]+/)), + alias($.interpolation, $.format_expression) + )) + ), + + type_conversion: $ => /![a-z]/, + + integer: $ => token(choice( + seq( + choice('0x', '0X'), + repeat1(/_?[A-Fa-f0-9]+/), + optional(/[Ll]/) + ), + seq( + choice('0o', '0O'), + repeat1(/_?[0-7]+/), + optional(/[Ll]/) + ), + seq( + choice('0b', '0B'), + repeat1(/_?[0-1]+/), + optional(/[Ll]/) + ), + seq( + repeat1(/[0-9]+_?/), + choice( + optional(/[Ll]/), // long numbers + optional(/[jJ]/) // complex numbers + ) + ) + )), + + float: $ => { + const digits = repeat1(/[0-9]+_?/); + const exponent = seq(/[eE][\+-]?/, digits) + + return token(seq( + choice( + seq(digits, '.', optional(digits), optional(exponent)), + seq(optional(digits), '.', digits, optional(exponent)), + seq(digits, exponent) + ), + optional(choice(/[Ll]/, /[jJ]/)) + )) + }, + + identifier: $ => /[_\p{XID_Start}][_\p{XID_Continue}]*/, + + keyword_identifier: $ => prec(-3, alias( + choice( + 'print', + 'exec', + 'async', + 'await', + 'match' + ), + $.identifier + )), + + true: $ => 'True', + false: $ => 'False', + none: $ => 'None', + + await: $ => prec(PREC.unary, seq( + 'await', + $.primary_expression, + )), + + comment: $ => token(seq('#', /.*/)), + + line_continuation: $ => token(seq('\\', choice(seq(optional('\r'), '\n'), '\0'))), + + positional_separator: $ => '/', + keyword_separator: $ => '*', + } +}) + +function commaSep1(rule) { + return sep1(rule, ',') +} + +function sep1(rule, separator) { + return seq(rule, repeat(seq(separator, rule))) +} diff --git a/source/errpy/vendor/tree-sitter-python/queries/highlights.scm b/source/errpy/vendor/tree-sitter-python/queries/highlights.scm new file mode 100644 index 00000000000..90fcf1c4b73 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/queries/highlights.scm @@ -0,0 +1,126 @@ +; Identifier naming conventions + +((identifier) @constructor + (#match? @constructor "^[A-Z]")) + +((identifier) @constant + (#match? @constant "^[A-Z][A-Z_]*$")) + +; Builtin functions + +((call + function: (identifier) @function.builtin) + (#match? + @function.builtin + "^(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip|__import__)$")) + +; Function calls + +(decorator) @function + +(call + function: (attribute attribute: (identifier) @function.method)) +(call + function: (identifier) @function) + +; Function definitions + +(function_definition + name: (identifier) @function) + +(identifier) @variable +(attribute attribute: (identifier) @property) +(type (identifier) @type) + +; Literals + +[ + (none) + (true) + (false) +] @constant.builtin + +[ + (integer) + (float) +] @number + +(comment) @comment +(string) @string +(escape_sequence) @escape + +(interpolation + "{" @punctuation.special + "}" @punctuation.special) @embedded + +[ + "-" + "-=" + "!=" + "*" + "**" + "**=" + "*=" + "/" + "//" + "//=" + "/=" + "&" + "%" + "%=" + "^" + "+" + "->" + "+=" + "<" + "<<" + "<=" + "<>" + "=" + ":=" + "==" + ">" + ">=" + ">>" + "|" + "~" + "and" + "in" + "is" + "not" + "or" +] @operator + +[ + "as" + "assert" + "async" + "await" + "break" + "class" + "continue" + "def" + "del" + "elif" + "else" + "except" + "exec" + "finally" + "for" + "from" + "global" + "if" + "import" + "lambda" + "nonlocal" + "pass" + "print" + "raise" + "return" + "try" + "while" + "with" + "yield" + "match" + "case" +] @keyword diff --git a/source/errpy/vendor/tree-sitter-python/queries/tags.scm b/source/errpy/vendor/tree-sitter-python/queries/tags.scm new file mode 100644 index 00000000000..c5ca8272b85 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/queries/tags.scm @@ -0,0 +1,12 @@ +(class_definition + name: (identifier) @name) @definition.class + +(function_definition + name: (identifier) @name) @definition.function + +(call + function: [ + (identifier) @name + (attribute + attribute: (identifier) @name) + ]) @reference.call diff --git a/source/errpy/vendor/tree-sitter-python/src/grammar.json b/source/errpy/vendor/tree-sitter-python/src/grammar.json new file mode 100644 index 00000000000..7b0bd4f2b11 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/src/grammar.json @@ -0,0 +1,6319 @@ +{ + "name": "python", + "word": "identifier", + "rules": { + "module": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_statement" + } + }, + "_statement": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_simple_statements" + }, + { + "type": "SYMBOL", + "name": "_compound_statement" + } + ] + }, + "_simple_statements": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_simple_statement" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ";" + }, + { + "type": "SYMBOL", + "name": "_simple_statement" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ";" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_newline" + } + ] + }, + "_simple_statement": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "future_import_statement" + }, + { + "type": "SYMBOL", + "name": "import_statement" + }, + { + "type": "SYMBOL", + "name": "import_from_statement" + }, + { + "type": "SYMBOL", + "name": "print_statement" + }, + { + "type": "SYMBOL", + "name": "assert_statement" + }, + { + "type": "SYMBOL", + "name": "expression_statement" + }, + { + "type": "SYMBOL", + "name": "return_statement" + }, + { + "type": "SYMBOL", + "name": "delete_statement" + }, + { + "type": "SYMBOL", + "name": "raise_statement" + }, + { + "type": "SYMBOL", + "name": "pass_statement" + }, + { + "type": "SYMBOL", + "name": "break_statement" + }, + { + "type": "SYMBOL", + "name": "continue_statement" + }, + { + "type": "SYMBOL", + "name": "global_statement" + }, + { + "type": "SYMBOL", + "name": "nonlocal_statement" + }, + { + "type": "SYMBOL", + "name": "exec_statement" + } + ] + }, + "import_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "import" + }, + { + "type": "SYMBOL", + "name": "_import_list" + } + ] + }, + "import_prefix": { + "type": "REPEAT1", + "content": { + "type": "STRING", + "value": "." + } + }, + "relative_import": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "import_prefix" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "future_import_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "STRING", + "value": "__future__" + }, + { + "type": "STRING", + "value": "import" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_import_list" + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_import_list" + }, + { + "type": "STRING", + "value": ")" + } + ] + } + ] + } + ] + }, + "import_from_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "FIELD", + "name": "module_name", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "relative_import" + }, + { + "type": "SYMBOL", + "name": "dotted_name" + } + ] + } + }, + { + "type": "STRING", + "value": "import" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "wildcard_import" + }, + { + "type": "SYMBOL", + "name": "_import_list" + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_import_list" + }, + { + "type": "STRING", + "value": ")" + } + ] + } + ] + } + ] + }, + "_import_list": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "SYMBOL", + "name": "aliased_import" + } + ] + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "SYMBOL", + "name": "aliased_import" + } + ] + } + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "aliased_import": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "dotted_name" + } + }, + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + "wildcard_import": { + "type": "STRING", + "value": "*" + }, + "print_statement": { + "type": "CHOICE", + "members": [ + { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "print" + }, + { + "type": "SYMBOL", + "name": "chevron" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + { + "type": "PREC", + "value": -3, + "content": { + "type": "PREC_DYNAMIC", + "value": -1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "print" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + } + } + ] + }, + "chevron": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ">>" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "assert_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "assert" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + } + ] + } + ] + }, + "expression_statement": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SYMBOL", + "name": "assignment" + }, + { + "type": "SYMBOL", + "name": "augmented_assignment" + }, + { + "type": "SYMBOL", + "name": "yield" + } + ] + }, + "named_expression": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_named_expression_lhs" + } + }, + { + "type": "STRING", + "value": ":=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + "_named_expression_lhs": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + } + ] + }, + "return_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expressions" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "delete_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "del" + }, + { + "type": "SYMBOL", + "name": "_expressions" + } + ] + }, + "_expressions": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "expression_list" + } + ] + }, + "raise_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "raise" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expressions" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "FIELD", + "name": "cause", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "pass_statement": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "STRING", + "value": "pass" + } + }, + "break_statement": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "STRING", + "value": "break" + } + }, + "continue_statement": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "STRING", + "value": "continue" + } + }, + "_compound_statement": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "if_statement" + }, + { + "type": "SYMBOL", + "name": "for_statement" + }, + { + "type": "SYMBOL", + "name": "while_statement" + }, + { + "type": "SYMBOL", + "name": "try_statement" + }, + { + "type": "SYMBOL", + "name": "with_statement" + }, + { + "type": "SYMBOL", + "name": "function_definition" + }, + { + "type": "SYMBOL", + "name": "class_definition" + }, + { + "type": "SYMBOL", + "name": "decorated_definition" + }, + { + "type": "SYMBOL", + "name": "match_statement" + } + ] + }, + "if_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "consequence", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + }, + { + "type": "REPEAT", + "content": { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "elif_clause" + } + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "else_clause" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "elif_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "elif" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "consequence", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "else_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "match_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "match" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "subject", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "subject", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "REPEAT", + "content": { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "case_clause" + } + } + } + ] + }, + "case_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "case" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "pattern", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_pattern" + }, + { + "type": "SYMBOL", + "name": "case_open_sequence_pattern" + } + ] + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "pattern", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_pattern" + }, + { + "type": "SYMBOL", + "name": "case_open_sequence_pattern" + } + ] + } + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "guard", + "content": { + "type": "SYMBOL", + "name": "if_clause" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "consequence", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "for_statement": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "async" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "for" + }, + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_left_hand_side" + } + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expressions" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + }, + { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "else_clause" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + "while_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "while" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "else_clause" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "try_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "try" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "except_clause" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "else_clause" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "finally_clause" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "except_group_clause" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "else_clause" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "finally_clause" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SYMBOL", + "name": "finally_clause" + } + ] + } + ] + }, + "except_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "except" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "STRING", + "value": "," + } + ] + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_suite" + } + ] + }, + "except_group_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "except*" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_suite" + } + ] + }, + "finally_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "finally" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_suite" + } + ] + }, + "with_statement": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "async" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "with" + }, + { + "type": "SYMBOL", + "name": "with_clause" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "with_clause": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "with_item" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "with_item" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "with_item" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "with_item" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + ] + }, + "with_item": { + "type": "PREC_DYNAMIC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "function_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "async" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "def" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "parameters" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "->" + }, + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "parameters": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_parameters" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "lambda_parameters": { + "type": "SYMBOL", + "name": "_parameters" + }, + "list_splat": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "dictionary_splat": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "**" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "global_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "global" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + } + ] + }, + "nonlocal_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "nonlocal" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + } + ] + }, + "exec_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "exec" + }, + { + "type": "FIELD", + "name": "code", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "in" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "class_definition": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "class" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "superclasses", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "argument_list" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_suite" + } + } + ] + }, + "parenthesized_list_splat": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "parenthesized_list_splat" + }, + "named": true, + "value": "parenthesized_expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "argument_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "parenthesized_list_splat" + }, + "named": true, + "value": "parenthesized_expression" + }, + { + "type": "SYMBOL", + "name": "keyword_argument" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "parenthesized_list_splat" + }, + "named": true, + "value": "parenthesized_expression" + }, + { + "type": "SYMBOL", + "name": "keyword_argument" + } + ] + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "decorated_definition": { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "decorator" + } + }, + { + "type": "FIELD", + "name": "definition", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "class_definition" + }, + { + "type": "SYMBOL", + "name": "function_definition" + } + ] + } + } + ] + }, + "decorator": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "@" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "_newline" + } + ] + }, + "_suite": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_simple_statements" + }, + "named": true, + "value": "block" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_indent" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_newline" + }, + "named": true, + "value": "block" + } + ] + }, + "block": { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_statement" + } + }, + { + "type": "SYMBOL", + "name": "_dedent" + } + ] + }, + "expression_list": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + ] + } + }, + "dotted_name": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + }, + "case_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_as_pattern" + }, + { + "type": "SYMBOL", + "name": "case_or_pattern" + } + ] + }, + "case_as_pattern": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "or_pattern", + "content": { + "type": "SYMBOL", + "name": "case_or_pattern" + } + }, + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "identifier", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + "case_or_pattern": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "case_closed_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "SYMBOL", + "name": "case_closed_pattern" + } + ] + } + } + ] + }, + "case_closed_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_literal_pattern" + }, + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "SYMBOL", + "name": "case_wildcard_pattern" + }, + { + "type": "SYMBOL", + "name": "case_group_pattern" + }, + { + "type": "SYMBOL", + "name": "case_sequence_pattern" + }, + { + "type": "SYMBOL", + "name": "case_mapping_pattern" + }, + { + "type": "SYMBOL", + "name": "case_class_pattern" + } + ] + }, + "case_literal_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "concatenated_string" + }, + { + "type": "SYMBOL", + "name": "case_literal_pattern_complex_number" + }, + { + "type": "SYMBOL", + "name": "case_literal_integer_or_float" + }, + { + "type": "SYMBOL", + "name": "true" + }, + { + "type": "SYMBOL", + "name": "false" + }, + { + "type": "SYMBOL", + "name": "none" + } + ] + }, + "case_literal_pattern_complex_number": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "real_component", + "content": { + "type": "SYMBOL", + "name": "case_literal_integer_or_float" + } + }, + { + "type": "FIELD", + "name": "sign", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "STRING", + "value": "-" + } + ] + } + }, + { + "type": "FIELD", + "name": "imaginary_component", + "content": { + "type": "SYMBOL", + "name": "case_literal_integer_or_float" + } + } + ] + }, + "case_literal_integer_or_float": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "neg", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "-" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "integer" + }, + { + "type": "SYMBOL", + "name": "float" + } + ] + } + ] + }, + "case_wildcard_pattern": { + "type": "STRING", + "value": "_" + }, + "case_group_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "case_pattern", + "content": { + "type": "SYMBOL", + "name": "case_pattern" + } + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "case_sequence_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_maybe_sequence_pattern" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_open_sequence_pattern" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + ] + }, + "case_open_sequence_pattern": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "maybe_star", + "content": { + "type": "SYMBOL", + "name": "case_maybe_star_pattern" + } + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "maybe_sequence", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_maybe_sequence_pattern" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + "case_maybe_sequence_pattern": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "case_maybe_star_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "case_maybe_star_pattern" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "case_maybe_star_pattern": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_star_pattern" + }, + { + "type": "SYMBOL", + "name": "case_pattern" + } + ] + } + }, + "case_mapping_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "case_double_star_pattern" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "case_items_pattern" + }, + { + "type": "SYMBOL", + "name": "case_double_star_pattern" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "case_items_pattern" + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "case_items_pattern": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "case_key_value_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "case_key_value_pattern" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "case_key_value_pattern": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "key", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "case_literal_pattern" + }, + { + "type": "SYMBOL", + "name": "dotted_name" + } + ] + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "case_pattern" + } + } + ] + }, + "case_star_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "SYMBOL", + "name": "case_wildcard_pattern" + } + ] + } + ] + }, + "case_double_star_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "**" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + }, + "case_class_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "case_positional_patterns" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "case_keyword_patterns" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dotted_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "case_positional_patterns" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "case_keyword_patterns" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + ] + }, + "case_positional_patterns": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "case_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "case_pattern" + } + ] + } + } + ] + }, + "case_keyword_patterns": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "case_keyword_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "case_keyword_pattern" + } + ] + } + } + ] + }, + "case_keyword_pattern": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "case_pattern" + } + } + ] + }, + "_parameters": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "parameter" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "parameter" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_patterns": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "pattern" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "parameter": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "typed_parameter" + }, + { + "type": "SYMBOL", + "name": "default_parameter" + }, + { + "type": "SYMBOL", + "name": "typed_default_parameter" + }, + { + "type": "SYMBOL", + "name": "list_splat_pattern" + }, + { + "type": "SYMBOL", + "name": "tuple_pattern" + }, + { + "type": "SYMBOL", + "name": "keyword_separator" + }, + { + "type": "SYMBOL", + "name": "positional_separator" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat_pattern" + } + ] + }, + "pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + }, + { + "type": "SYMBOL", + "name": "subscript" + }, + { + "type": "SYMBOL", + "name": "attribute" + }, + { + "type": "SYMBOL", + "name": "list_splat_pattern" + }, + { + "type": "SYMBOL", + "name": "tuple_pattern" + }, + { + "type": "SYMBOL", + "name": "list_pattern" + } + ] + }, + "tuple_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "list_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "default_parameter": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + "typed_default_parameter": { + "type": "PREC", + "value": -1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "type" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "list_splat_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + }, + { + "type": "SYMBOL", + "name": "subscript" + }, + { + "type": "SYMBOL", + "name": "attribute" + } + ] + } + ] + }, + "dictionary_splat_pattern": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "**" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + }, + { + "type": "SYMBOL", + "name": "subscript" + }, + { + "type": "SYMBOL", + "name": "attribute" + } + ] + } + ] + }, + "as_pattern": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "expression" + }, + "named": true, + "value": "as_pattern_target" + } + } + ] + } + }, + "_expression_within_for_in_clause": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "lambda_within_for_in_clause" + }, + "named": true, + "value": "lambda" + } + ] + }, + "expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "comparison_operator" + }, + { + "type": "SYMBOL", + "name": "not_operator" + }, + { + "type": "SYMBOL", + "name": "boolean_operator" + }, + { + "type": "SYMBOL", + "name": "lambda" + }, + { + "type": "SYMBOL", + "name": "primary_expression" + }, + { + "type": "SYMBOL", + "name": "conditional_expression" + }, + { + "type": "SYMBOL", + "name": "named_expression" + }, + { + "type": "SYMBOL", + "name": "as_pattern" + } + ] + }, + "primary_expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "await" + }, + { + "type": "SYMBOL", + "name": "binary_operator" + }, + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + }, + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "concatenated_string" + }, + { + "type": "SYMBOL", + "name": "integer" + }, + { + "type": "SYMBOL", + "name": "float" + }, + { + "type": "SYMBOL", + "name": "true" + }, + { + "type": "SYMBOL", + "name": "false" + }, + { + "type": "SYMBOL", + "name": "none" + }, + { + "type": "SYMBOL", + "name": "unary_operator" + }, + { + "type": "SYMBOL", + "name": "attribute" + }, + { + "type": "SYMBOL", + "name": "subscript" + }, + { + "type": "SYMBOL", + "name": "call" + }, + { + "type": "SYMBOL", + "name": "list" + }, + { + "type": "SYMBOL", + "name": "list_comprehension" + }, + { + "type": "SYMBOL", + "name": "dictionary" + }, + { + "type": "SYMBOL", + "name": "dictionary_comprehension" + }, + { + "type": "SYMBOL", + "name": "set" + }, + { + "type": "SYMBOL", + "name": "set_comprehension" + }, + { + "type": "SYMBOL", + "name": "tuple" + }, + { + "type": "SYMBOL", + "name": "parenthesized_expression" + }, + { + "type": "SYMBOL", + "name": "generator_expression" + }, + { + "type": "SYMBOL", + "name": "ellipsis" + } + ] + }, + "not_operator": { + "type": "PREC", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "not" + }, + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "boolean_operator": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "and" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "or" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + "binary_operator": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 18, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "+" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 18, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "-" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 19, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "*" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 19, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "@" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 19, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "/" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 19, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "%" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 19, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "//" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_RIGHT", + "value": 21, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "**" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 14, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "|" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 15, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "&" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 16, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "^" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 17, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<<" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 17, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">>" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + } + ] + }, + "unary_operator": { + "type": "PREC", + "value": 20, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "STRING", + "value": "-" + }, + { + "type": "STRING", + "value": "~" + } + ] + } + }, + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + } + ] + } + }, + "comparison_operator": { + "type": "PREC_LEFT", + "value": 13, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "primary_expression" + }, + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "operators", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "STRING", + "value": "<=" + }, + { + "type": "STRING", + "value": "==" + }, + { + "type": "STRING", + "value": "!=" + }, + { + "type": "STRING", + "value": ">=" + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "<>" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "ALIAS", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "not" + }, + { + "type": "STRING", + "value": "in" + } + ] + }, + "named": false, + "value": "not in" + }, + { + "type": "STRING", + "value": "is" + }, + { + "type": "ALIAS", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "is" + }, + { + "type": "STRING", + "value": "not" + } + ] + }, + "named": false, + "value": "is not" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "primary_expression" + } + ] + } + } + ] + } + }, + "lambda": { + "type": "PREC", + "value": -2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "lambda" + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "lambda_parameters" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "lambda_within_for_in_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "lambda" + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "lambda_parameters" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_expression_within_for_in_clause" + } + } + ] + }, + "assignment": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_left_hand_side" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_right_hand_side" + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "type" + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "type" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_right_hand_side" + } + } + ] + } + ] + } + ] + }, + "augmented_assignment": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_left_hand_side" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+=" + }, + { + "type": "STRING", + "value": "-=" + }, + { + "type": "STRING", + "value": "*=" + }, + { + "type": "STRING", + "value": "/=" + }, + { + "type": "STRING", + "value": "@=" + }, + { + "type": "STRING", + "value": "//=" + }, + { + "type": "STRING", + "value": "%=" + }, + { + "type": "STRING", + "value": "**=" + }, + { + "type": "STRING", + "value": ">>=" + }, + { + "type": "STRING", + "value": "<<=" + }, + { + "type": "STRING", + "value": "&=" + }, + { + "type": "STRING", + "value": "^=" + }, + { + "type": "STRING", + "value": "|=" + } + ] + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_right_hand_side" + } + } + ] + }, + "_left_hand_side": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pattern" + }, + { + "type": "SYMBOL", + "name": "pattern_list" + } + ] + }, + "pattern_list": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "pattern" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "pattern" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + ] + }, + "_right_hand_side": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_list_splat_or_expression" + }, + { + "type": "SYMBOL", + "name": "list_splat_or_expressions" + }, + { + "type": "SYMBOL", + "name": "assignment" + }, + { + "type": "SYMBOL", + "name": "augmented_assignment" + }, + { + "type": "SYMBOL", + "name": "yield" + } + ] + }, + "list_splat_or_expressions": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_list_splat_or_expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_list_splat_or_expression" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + ] + } + }, + "_list_splat_or_expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "list_splat" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "yield": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "yield" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expressions" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + }, + "attribute": { + "type": "PREC", + "value": 22, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "object", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "attribute", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + } + }, + "subscript": { + "type": "PREC", + "value": 22, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "subscript", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "slice" + } + ] + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "subscript", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "slice" + } + ] + } + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "slice": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "ellipsis": { + "type": "STRING", + "value": "..." + }, + "call": { + "type": "PREC", + "value": 22, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "function", + "content": { + "type": "SYMBOL", + "name": "primary_expression" + } + }, + { + "type": "FIELD", + "name": "arguments", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "generator_expression" + }, + { + "type": "SYMBOL", + "name": "argument_list" + } + ] + } + } + ] + } + }, + "typed_parameter": { + "type": "PREC", + "value": -1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "list_splat_pattern" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat_pattern" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "type" + } + } + ] + } + }, + "type": { + "type": "SYMBOL", + "name": "expression" + }, + "keyword_argument": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "keyword_identifier" + } + ] + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + "list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_collection_elements" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "set": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "_collection_elements" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_collection_elements" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "dictionary": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pair" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pair" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat" + } + ] + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "pair": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "key", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + "list_comprehension": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "SYMBOL", + "name": "_comprehension_clauses" + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "dictionary_comprehension": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "pair" + } + }, + { + "type": "SYMBOL", + "name": "_comprehension_clauses" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "set_comprehension": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "SYMBOL", + "name": "_comprehension_clauses" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "generator_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "SYMBOL", + "name": "_comprehension_clauses" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "_comprehension_clauses": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "for_in_clause" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "for_in_clause" + }, + { + "type": "SYMBOL", + "name": "if_clause" + } + ] + } + } + ] + }, + "parenthesized_expression": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "yield" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "_collection_elements": { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "yield" + }, + { + "type": "SYMBOL", + "name": "list_splat" + }, + { + "type": "SYMBOL", + "name": "parenthesized_list_splat" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "yield" + }, + { + "type": "SYMBOL", + "name": "list_splat" + }, + { + "type": "SYMBOL", + "name": "parenthesized_list_splat" + } + ] + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "for_in_clause": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "async" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "for" + }, + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_left_hand_side" + } + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expression_within_for_in_clause" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expression_within_for_in_clause" + } + ] + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "if_clause": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "conditional_expression": { + "type": "PREC_RIGHT", + "value": -1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "if" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "else" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + }, + "concatenated_string": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "string" + } + } + ] + }, + "string": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "prefix", + "content": { + "type": "SYMBOL", + "name": "string_start" + } + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "interpolation", + "content": { + "type": "SYMBOL", + "name": "interpolation" + } + }, + { + "type": "FIELD", + "name": "string_content", + "content": { + "type": "SYMBOL", + "name": "string_content" + } + } + ] + } + }, + { + "type": "FIELD", + "name": "suffix", + "content": { + "type": "SYMBOL", + "name": "string_end" + } + } + ] + }, + "string_content": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "REPEAT1", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_escape_interpolation" + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + }, + { + "type": "SYMBOL", + "name": "_not_escape_sequence" + }, + { + "type": "SYMBOL", + "name": "_string_content" + } + ] + } + } + }, + "interpolation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "FIELD", + "name": "expression", + "content": { + "type": "SYMBOL", + "name": "_f_expression" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_conversion", + "content": { + "type": "SYMBOL", + "name": "type_conversion" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "format_specifier", + "content": { + "type": "SYMBOL", + "name": "format_specifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_f_expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "expression_list" + }, + { + "type": "SYMBOL", + "name": "pattern_list" + }, + { + "type": "SYMBOL", + "name": "yield" + } + ] + }, + "_escape_interpolation": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "{{" + }, + { + "type": "STRING", + "value": "}}" + } + ] + } + }, + "escape_sequence": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\\" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "u[a-fA-F\\d]{4}" + }, + { + "type": "PATTERN", + "value": "U[a-fA-F\\d]{8}" + }, + { + "type": "PATTERN", + "value": "x[a-fA-F\\d]{2}" + }, + { + "type": "PATTERN", + "value": "\\d{3}" + }, + { + "type": "PATTERN", + "value": "\\r?\\n" + }, + { + "type": "PATTERN", + "value": "['\"abfrntv\\\\]" + }, + { + "type": "PATTERN", + "value": "N\\{[^}]+\\}" + } + ] + } + ] + } + } + }, + "_not_escape_sequence": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "STRING", + "value": "\\" + } + }, + "format_specifier": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "[^{}\\n]+" + } + } + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "interpolation" + }, + "named": true, + "value": "format_expression" + } + ] + } + } + ] + }, + "type_conversion": { + "type": "PATTERN", + "value": "![a-z]" + }, + "integer": { + "type": "TOKEN", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "0x" + }, + { + "type": "STRING", + "value": "0X" + } + ] + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "_?[A-Fa-f0-9]+" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[Ll]" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "0o" + }, + { + "type": "STRING", + "value": "0O" + } + ] + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "_?[0-7]+" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[Ll]" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "0b" + }, + { + "type": "STRING", + "value": "0B" + } + ] + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "_?[0-1]+" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[Ll]" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[Ll]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[jJ]" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + ] + } + }, + "float": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "CHOICE", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "[eE][\\+-]?" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "[eE][\\+-]?" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "[eE][\\+-]?" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]+_?" + } + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[Ll]" + }, + { + "type": "PATTERN", + "value": "[jJ]" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "identifier": { + "type": "PATTERN", + "value": "[_\\p{XID_Start}][_\\p{XID_Continue}]*" + }, + "keyword_identifier": { + "type": "PREC", + "value": -3, + "content": { + "type": "ALIAS", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "print" + }, + { + "type": "STRING", + "value": "exec" + }, + { + "type": "STRING", + "value": "async" + }, + { + "type": "STRING", + "value": "await" + }, + { + "type": "STRING", + "value": "match" + } + ] + }, + "named": true, + "value": "identifier" + } + }, + "true": { + "type": "STRING", + "value": "True" + }, + "false": { + "type": "STRING", + "value": "False" + }, + "none": { + "type": "STRING", + "value": "None" + }, + "await": { + "type": "PREC", + "value": 20, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "await" + }, + { + "type": "SYMBOL", + "name": "primary_expression" + } + ] + } + }, + "comment": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#" + }, + { + "type": "PATTERN", + "value": ".*" + } + ] + } + }, + "line_continuation": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\\" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "\r" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "\n" + } + ] + }, + { + "type": "STRING", + "value": "\u0000" + } + ] + } + ] + } + }, + "positional_separator": { + "type": "STRING", + "value": "/" + }, + "keyword_separator": { + "type": "STRING", + "value": "*" + } + }, + "extras": [ + { + "type": "SYMBOL", + "name": "comment" + }, + { + "type": "PATTERN", + "value": "[\\s\\f\\uFEFF\\u2060\\u200B]|\\r?\\n" + }, + { + "type": "SYMBOL", + "name": "line_continuation" + } + ], + "conflicts": [ + [ + "primary_expression", + "pattern" + ], + [ + "primary_expression", + "list_splat_pattern" + ], + [ + "tuple", + "tuple_pattern" + ], + [ + "list", + "list_pattern" + ], + [ + "with_item", + "_collection_elements" + ], + [ + "named_expression", + "as_pattern" + ], + [ + "match_statement", + "primary_expression" + ], + [ + "print_statement", + "primary_expression" + ], + [ + "case_clause", + "case_maybe_star_pattern" + ], + [ + "case_positional_patterns" + ], + [ + "case_keyword_patterns" + ] + ], + "precedences": [], + "externals": [ + { + "type": "SYMBOL", + "name": "_newline" + }, + { + "type": "SYMBOL", + "name": "_indent" + }, + { + "type": "SYMBOL", + "name": "_dedent" + }, + { + "type": "SYMBOL", + "name": "string_start" + }, + { + "type": "SYMBOL", + "name": "_string_content" + }, + { + "type": "SYMBOL", + "name": "string_end" + }, + { + "type": "SYMBOL", + "name": "comment" + }, + { + "type": "STRING", + "value": "]" + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "STRING", + "value": "}" + } + ], + "inline": [ + "_simple_statement", + "_compound_statement", + "_suite", + "_expressions", + "_left_hand_side", + "keyword_identifier" + ], + "supertypes": [ + "_simple_statement", + "_compound_statement", + "expression", + "primary_expression", + "pattern", + "parameter" + ] +} + diff --git a/source/errpy/vendor/tree-sitter-python/src/node-types.json b/source/errpy/vendor/tree-sitter-python/src/node-types.json new file mode 100644 index 00000000000..90304786b09 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/src/node-types.json @@ -0,0 +1,3664 @@ +[ + { + "type": "_compound_statement", + "named": true, + "subtypes": [ + { + "type": "class_definition", + "named": true + }, + { + "type": "decorated_definition", + "named": true + }, + { + "type": "for_statement", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "match_statement", + "named": true + }, + { + "type": "try_statement", + "named": true + }, + { + "type": "while_statement", + "named": true + }, + { + "type": "with_statement", + "named": true + } + ] + }, + { + "type": "_simple_statement", + "named": true, + "subtypes": [ + { + "type": "assert_statement", + "named": true + }, + { + "type": "break_statement", + "named": true + }, + { + "type": "continue_statement", + "named": true + }, + { + "type": "delete_statement", + "named": true + }, + { + "type": "exec_statement", + "named": true + }, + { + "type": "expression_statement", + "named": true + }, + { + "type": "future_import_statement", + "named": true + }, + { + "type": "global_statement", + "named": true + }, + { + "type": "import_from_statement", + "named": true + }, + { + "type": "import_statement", + "named": true + }, + { + "type": "nonlocal_statement", + "named": true + }, + { + "type": "pass_statement", + "named": true + }, + { + "type": "print_statement", + "named": true + }, + { + "type": "raise_statement", + "named": true + }, + { + "type": "return_statement", + "named": true + } + ] + }, + { + "type": "expression", + "named": true, + "subtypes": [ + { + "type": "as_pattern", + "named": true + }, + { + "type": "boolean_operator", + "named": true + }, + { + "type": "comparison_operator", + "named": true + }, + { + "type": "conditional_expression", + "named": true + }, + { + "type": "lambda", + "named": true + }, + { + "type": "named_expression", + "named": true + }, + { + "type": "not_operator", + "named": true + }, + { + "type": "primary_expression", + "named": true + } + ] + }, + { + "type": "parameter", + "named": true, + "subtypes": [ + { + "type": "default_parameter", + "named": true + }, + { + "type": "dictionary_splat_pattern", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "keyword_separator", + "named": true + }, + { + "type": "list_splat_pattern", + "named": true + }, + { + "type": "positional_separator", + "named": true + }, + { + "type": "tuple_pattern", + "named": true + }, + { + "type": "typed_default_parameter", + "named": true + }, + { + "type": "typed_parameter", + "named": true + } + ] + }, + { + "type": "pattern", + "named": true, + "subtypes": [ + { + "type": "attribute", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "list_pattern", + "named": true + }, + { + "type": "list_splat_pattern", + "named": true + }, + { + "type": "subscript", + "named": true + }, + { + "type": "tuple_pattern", + "named": true + } + ] + }, + { + "type": "primary_expression", + "named": true, + "subtypes": [ + { + "type": "attribute", + "named": true + }, + { + "type": "await", + "named": true + }, + { + "type": "binary_operator", + "named": true + }, + { + "type": "call", + "named": true + }, + { + "type": "concatenated_string", + "named": true + }, + { + "type": "dictionary", + "named": true + }, + { + "type": "dictionary_comprehension", + "named": true + }, + { + "type": "ellipsis", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "float", + "named": true + }, + { + "type": "generator_expression", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "integer", + "named": true + }, + { + "type": "list", + "named": true + }, + { + "type": "list_comprehension", + "named": true + }, + { + "type": "none", + "named": true + }, + { + "type": "parenthesized_expression", + "named": true + }, + { + "type": "set", + "named": true + }, + { + "type": "set_comprehension", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "subscript", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "tuple", + "named": true + }, + { + "type": "unary_operator", + "named": true + } + ] + }, + { + "type": "aliased_import", + "named": true, + "fields": { + "alias": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "dotted_name", + "named": true + } + ] + } + } + }, + { + "type": "argument_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "dictionary_splat", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "keyword_argument", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_expression", + "named": true + } + ] + } + }, + { + "type": "as_pattern", + "named": true, + "fields": { + "alias": { + "multiple": false, + "required": true, + "types": [ + { + "type": "as_pattern_target", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "assert_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "assignment", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + }, + { + "type": "pattern_list", + "named": true + } + ] + }, + "right": { + "multiple": false, + "required": false, + "types": [ + { + "type": "assignment", + "named": true + }, + { + "type": "augmented_assignment", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "list_splat_or_expressions", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type", + "named": true + } + ] + } + } + }, + { + "type": "attribute", + "named": true, + "fields": { + "attribute": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "object": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + } + }, + { + "type": "augmented_assignment", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + }, + { + "type": "pattern_list", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "%=", + "named": false + }, + { + "type": "&=", + "named": false + }, + { + "type": "**=", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "//=", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<<=", + "named": false + }, + { + "type": ">>=", + "named": false + }, + { + "type": "@=", + "named": false + }, + { + "type": "^=", + "named": false + }, + { + "type": "|=", + "named": false + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "assignment", + "named": true + }, + { + "type": "augmented_assignment", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "list_splat_or_expressions", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + } + }, + { + "type": "await", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + }, + { + "type": "binary_operator", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "%", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "**", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "//", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "@", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "|", + "named": false + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "_compound_statement", + "named": true + }, + { + "type": "_simple_statement", + "named": true + } + ] + } + }, + { + "type": "boolean_operator", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "and", + "named": false + }, + { + "type": "or", + "named": false + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "break_statement", + "named": true, + "fields": {} + }, + { + "type": "call", + "named": true, + "fields": { + "arguments": { + "multiple": false, + "required": true, + "types": [ + { + "type": "argument_list", + "named": true + }, + { + "type": "generator_expression", + "named": true + } + ] + }, + "function": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + } + }, + { + "type": "case_as_pattern", + "named": true, + "fields": { + "identifier": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "or_pattern": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_or_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_class_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_keyword_patterns", + "named": true + }, + { + "type": "case_positional_patterns", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + } + }, + { + "type": "case_clause", + "named": true, + "fields": { + "consequence": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "guard": { + "multiple": false, + "required": false, + "types": [ + { + "type": "if_clause", + "named": true + } + ] + }, + "pattern": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_open_sequence_pattern", + "named": true + }, + { + "type": "case_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_closed_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_class_pattern", + "named": true + }, + { + "type": "case_group_pattern", + "named": true + }, + { + "type": "case_literal_pattern", + "named": true + }, + { + "type": "case_mapping_pattern", + "named": true + }, + { + "type": "case_sequence_pattern", + "named": true + }, + { + "type": "case_wildcard_pattern", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + } + }, + { + "type": "case_double_star_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "case_group_pattern", + "named": true, + "fields": { + "case_pattern": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_items_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_key_value_pattern", + "named": true + } + ] + } + }, + { + "type": "case_key_value_pattern", + "named": true, + "fields": { + "key": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_literal_pattern", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_keyword_pattern", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_keyword_patterns", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_keyword_pattern", + "named": true + } + ] + } + }, + { + "type": "case_literal_integer_or_float", + "named": true, + "fields": { + "neg": { + "multiple": false, + "required": false, + "types": [ + { + "type": "-", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "float", + "named": true + }, + { + "type": "integer", + "named": true + } + ] + } + }, + { + "type": "case_literal_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_literal_integer_or_float", + "named": true + }, + { + "type": "case_literal_pattern_complex_number", + "named": true + }, + { + "type": "concatenated_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "none", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "true", + "named": true + } + ] + } + }, + { + "type": "case_literal_pattern_complex_number", + "named": true, + "fields": { + "imaginary_component": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_literal_integer_or_float", + "named": true + } + ] + }, + "real_component": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_literal_integer_or_float", + "named": true + } + ] + }, + "sign": { + "multiple": false, + "required": true, + "types": [ + { + "type": "+", + "named": false + }, + { + "type": "-", + "named": false + } + ] + } + } + }, + { + "type": "case_mapping_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "case_double_star_pattern", + "named": true + }, + { + "type": "case_items_pattern", + "named": true + } + ] + } + }, + { + "type": "case_maybe_sequence_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_maybe_star_pattern", + "named": true + } + ] + } + }, + { + "type": "case_maybe_star_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_pattern", + "named": true + }, + { + "type": "case_star_pattern", + "named": true + } + ] + } + }, + { + "type": "case_open_sequence_pattern", + "named": true, + "fields": { + "maybe_sequence": { + "multiple": false, + "required": false, + "types": [ + { + "type": "case_maybe_sequence_pattern", + "named": true + } + ] + }, + "maybe_star": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_maybe_star_pattern", + "named": true + } + ] + } + } + }, + { + "type": "case_or_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_closed_pattern", + "named": true + } + ] + } + }, + { + "type": "case_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_as_pattern", + "named": true + }, + { + "type": "case_or_pattern", + "named": true + } + ] + } + }, + { + "type": "case_positional_patterns", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "case_pattern", + "named": true + } + ] + } + }, + { + "type": "case_sequence_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "case_maybe_sequence_pattern", + "named": true + }, + { + "type": "case_open_sequence_pattern", + "named": true + } + ] + } + }, + { + "type": "case_star_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "case_wildcard_pattern", + "named": true + }, + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "chevron", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "class_definition", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "superclasses": { + "multiple": false, + "required": false, + "types": [ + { + "type": "argument_list", + "named": true + } + ] + } + } + }, + { + "type": "comparison_operator", + "named": true, + "fields": { + "operators": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "<>", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "is", + "named": false + }, + { + "type": "is not", + "named": false + }, + { + "type": "not in", + "named": false + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + }, + { + "type": "concatenated_string", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "string", + "named": true + } + ] + } + }, + { + "type": "conditional_expression", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "continue_statement", + "named": true, + "fields": {} + }, + { + "type": "decorated_definition", + "named": true, + "fields": { + "definition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "class_definition", + "named": true + }, + { + "type": "function_definition", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "decorator", + "named": true + } + ] + } + }, + { + "type": "decorator", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "default_parameter", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "delete_statement", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + } + ] + } + }, + { + "type": "dictionary", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "dictionary_splat", + "named": true + }, + { + "type": "pair", + "named": true + } + ] + } + }, + { + "type": "dictionary_comprehension", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pair", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "for_in_clause", + "named": true + }, + { + "type": "if_clause", + "named": true + } + ] + } + }, + { + "type": "dictionary_splat", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "dictionary_splat_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "subscript", + "named": true + } + ] + } + }, + { + "type": "dotted_name", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "elif_clause", + "named": true, + "fields": { + "condition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + }, + "consequence": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + } + }, + { + "type": "else_clause", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + } + }, + { + "type": "except_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "except_group_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "exec_statement", + "named": true, + "fields": { + "code": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + }, + { + "type": "string", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "expression_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "expression_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "assignment", + "named": true + }, + { + "type": "augmented_assignment", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + }, + { + "type": "finally_clause", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "for_in_clause", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + }, + { + "type": "pattern_list", + "named": true + } + ] + }, + "right": { + "multiple": true, + "required": true, + "types": [ + { + "type": ",", + "named": false + }, + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "for_statement", + "named": true, + "fields": { + "alternative": { + "multiple": false, + "required": false, + "types": [ + { + "type": "else_clause", + "named": true + } + ] + }, + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + }, + { + "type": "pattern_list", + "named": true + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + } + ] + } + } + }, + { + "type": "format_expression", + "named": true, + "fields": { + "expression": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "pattern_list", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + }, + "format_specifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "format_specifier", + "named": true + } + ] + }, + "type_conversion": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_conversion", + "named": true + } + ] + } + } + }, + { + "type": "format_specifier", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "format_expression", + "named": true + } + ] + } + }, + { + "type": "function_definition", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type", + "named": true + } + ] + } + } + }, + { + "type": "future_import_statement", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "aliased_import", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + } + } + }, + { + "type": "generator_expression", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "for_in_clause", + "named": true + }, + { + "type": "if_clause", + "named": true + } + ] + } + }, + { + "type": "global_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "if_clause", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "if_statement", + "named": true, + "fields": { + "alternative": { + "multiple": true, + "required": false, + "types": [ + { + "type": "elif_clause", + "named": true + }, + { + "type": "else_clause", + "named": true + } + ] + }, + "condition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + }, + "consequence": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + } + }, + { + "type": "import_from_statement", + "named": true, + "fields": { + "module_name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "dotted_name", + "named": true + }, + { + "type": "relative_import", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "aliased_import", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "wildcard_import", + "named": true + } + ] + } + }, + { + "type": "import_prefix", + "named": true, + "fields": {} + }, + { + "type": "import_statement", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "aliased_import", + "named": true + }, + { + "type": "dotted_name", + "named": true + } + ] + } + } + }, + { + "type": "interpolation", + "named": true, + "fields": { + "expression": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "pattern_list", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + }, + "format_specifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "format_specifier", + "named": true + } + ] + }, + "type_conversion": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_conversion", + "named": true + } + ] + } + } + }, + { + "type": "keyword_argument", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "keyword_separator", + "named": true, + "fields": {} + }, + { + "type": "lambda", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "lambda_parameters", + "named": true + } + ] + } + } + }, + { + "type": "lambda_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "parameter", + "named": true + } + ] + } + }, + { + "type": "list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_list_splat", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + }, + { + "type": "list_comprehension", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "for_in_clause", + "named": true + }, + { + "type": "if_clause", + "named": true + } + ] + } + }, + { + "type": "list_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + { + "type": "list_splat", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "list_splat_or_expressions", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + } + ] + } + }, + { + "type": "list_splat_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "subscript", + "named": true + } + ] + } + }, + { + "type": "match_statement", + "named": true, + "fields": { + "alternative": { + "multiple": true, + "required": false, + "types": [ + { + "type": "case_clause", + "named": true + } + ] + }, + "subject": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "module", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "_compound_statement", + "named": true + }, + { + "type": "_simple_statement", + "named": true + } + ] + } + }, + { + "type": "named_expression", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "nonlocal_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "not_operator", + "named": true, + "fields": { + "argument": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "pair", + "named": true, + "fields": { + "key": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "parameter", + "named": true + } + ] + } + }, + { + "type": "parenthesized_expression", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_expression", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + }, + { + "type": "parenthesized_list_splat", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_expression", + "named": true + } + ] + } + }, + { + "type": "pass_statement", + "named": true, + "fields": {} + }, + { + "type": "pattern_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + { + "type": "positional_separator", + "named": true, + "fields": {} + }, + { + "type": "print_statement", + "named": true, + "fields": { + "argument": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "chevron", + "named": true + } + ] + } + }, + { + "type": "raise_statement", + "named": true, + "fields": { + "cause": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + } + ] + } + }, + { + "type": "relative_import", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "dotted_name", + "named": true + }, + { + "type": "import_prefix", + "named": true + } + ] + } + }, + { + "type": "return_statement", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + } + ] + } + }, + { + "type": "set", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_list_splat", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + }, + { + "type": "set_comprehension", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "for_in_clause", + "named": true + }, + { + "type": "if_clause", + "named": true + } + ] + } + }, + { + "type": "slice", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "string", + "named": true, + "fields": { + "interpolation": { + "multiple": true, + "required": false, + "types": [ + { + "type": "interpolation", + "named": true + } + ] + }, + "prefix": { + "multiple": false, + "required": true, + "types": [ + { + "type": "string_start", + "named": true + } + ] + }, + "string_content": { + "multiple": true, + "required": false, + "types": [ + { + "type": "string_content", + "named": true + } + ] + }, + "suffix": { + "multiple": false, + "required": true, + "types": [ + { + "type": "string_end", + "named": true + } + ] + } + } + }, + { + "type": "string_content", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "escape_sequence", + "named": true + } + ] + } + }, + { + "type": "subscript", + "named": true, + "fields": { + "subscript": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "slice", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + } + } + }, + { + "type": "try_statement", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "else_clause", + "named": true + }, + { + "type": "except_clause", + "named": true + }, + { + "type": "except_group_clause", + "named": true + }, + { + "type": "finally_clause", + "named": true + } + ] + } + }, + { + "type": "tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "list_splat", + "named": true + }, + { + "type": "parenthesized_list_splat", + "named": true + }, + { + "type": "yield", + "named": true + } + ] + } + }, + { + "type": "tuple_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + { + "type": "type", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + }, + { + "type": "typed_default_parameter", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "typed_parameter", + "named": true, + "fields": { + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "dictionary_splat_pattern", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "list_splat_pattern", + "named": true + } + ] + } + }, + { + "type": "unary_operator", + "named": true, + "fields": { + "argument": { + "multiple": false, + "required": true, + "types": [ + { + "type": "primary_expression", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "+", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "while_statement", + "named": true, + "fields": { + "alternative": { + "multiple": false, + "required": false, + "types": [ + { + "type": "else_clause", + "named": true + } + ] + }, + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "condition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "wildcard_import", + "named": true, + "fields": {} + }, + { + "type": "with_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "with_item", + "named": true + } + ] + } + }, + { + "type": "with_item", + "named": true, + "fields": { + "value": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expression", + "named": true + } + ] + } + } + }, + { + "type": "with_statement", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "with_clause", + "named": true + } + ] + } + }, + { + "type": "yield", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expression", + "named": true + }, + { + "type": "expression_list", + "named": true + } + ] + } + }, + { + "type": "!=", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "&=", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "**", + "named": false + }, + { + "type": "**=", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "->", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "//", + "named": false + }, + { + "type": "//=", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": ":=", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<<=", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "<>", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": ">>=", + "named": false + }, + { + "type": "@", + "named": false + }, + { + "type": "@=", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "^=", + "named": false + }, + { + "type": "__future__", + "named": false + }, + { + "type": "and", + "named": false + }, + { + "type": "as", + "named": false + }, + { + "type": "assert", + "named": false + }, + { + "type": "async", + "named": false + }, + { + "type": "await", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "case", + "named": false + }, + { + "type": "case_wildcard_pattern", + "named": true + }, + { + "type": "class", + "named": false + }, + { + "type": "comment", + "named": true + }, + { + "type": "continue", + "named": false + }, + { + "type": "def", + "named": false + }, + { + "type": "del", + "named": false + }, + { + "type": "elif", + "named": false + }, + { + "type": "ellipsis", + "named": true + }, + { + "type": "else", + "named": false + }, + { + "type": "escape_sequence", + "named": true + }, + { + "type": "except", + "named": false + }, + { + "type": "except*", + "named": false + }, + { + "type": "exec", + "named": false + }, + { + "type": "false", + "named": true + }, + { + "type": "finally", + "named": false + }, + { + "type": "float", + "named": true + }, + { + "type": "for", + "named": false + }, + { + "type": "from", + "named": false + }, + { + "type": "global", + "named": false + }, + { + "type": "identifier", + "named": true + }, + { + "type": "if", + "named": false + }, + { + "type": "import", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "integer", + "named": true + }, + { + "type": "is", + "named": false + }, + { + "type": "is not", + "named": false + }, + { + "type": "lambda", + "named": false + }, + { + "type": "line_continuation", + "named": true + }, + { + "type": "match", + "named": false + }, + { + "type": "none", + "named": true + }, + { + "type": "nonlocal", + "named": false + }, + { + "type": "not", + "named": false + }, + { + "type": "not in", + "named": false + }, + { + "type": "or", + "named": false + }, + { + "type": "pass", + "named": false + }, + { + "type": "print", + "named": false + }, + { + "type": "raise", + "named": false + }, + { + "type": "return", + "named": false + }, + { + "type": "string_end", + "named": true + }, + { + "type": "string_start", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "try", + "named": false + }, + { + "type": "type_conversion", + "named": true + }, + { + "type": "while", + "named": false + }, + { + "type": "with", + "named": false + }, + { + "type": "yield", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "|", + "named": false + }, + { + "type": "|=", + "named": false + }, + { + "type": "}", + "named": false + }, + { + "type": "~", + "named": false + } +] \ No newline at end of file diff --git a/source/errpy/vendor/tree-sitter-python/src/parser.c b/source/errpy/vendor/tree-sitter-python/src/parser.c new file mode 100644 index 00000000000..c3434f7095f --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/src/parser.c @@ -0,0 +1,118747 @@ +#include "tree_sitter/parser.h" + +//@generated + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#define LANGUAGE_VERSION 14 +#define STATE_COUNT 2554 +#define LARGE_STATE_COUNT 187 +#define SYMBOL_COUNT 275 +#define ALIAS_COUNT 4 +#define TOKEN_COUNT 107 +#define EXTERNAL_TOKEN_COUNT 10 +#define FIELD_COUNT 45 +#define MAX_ALIAS_SEQUENCE_LENGTH 9 +#define PRODUCTION_ID_COUNT 140 + +enum { + sym_identifier = 1, + anon_sym_SEMI = 2, + anon_sym_import = 3, + anon_sym_DOT = 4, + anon_sym_from = 5, + anon_sym___future__ = 6, + anon_sym_LPAREN = 7, + anon_sym_RPAREN = 8, + anon_sym_COMMA = 9, + anon_sym_as = 10, + anon_sym_STAR = 11, + anon_sym_print = 12, + anon_sym_GT_GT = 13, + anon_sym_assert = 14, + anon_sym_COLON_EQ = 15, + anon_sym_return = 16, + anon_sym_del = 17, + anon_sym_raise = 18, + anon_sym_pass = 19, + anon_sym_break = 20, + anon_sym_continue = 21, + anon_sym_if = 22, + anon_sym_COLON = 23, + anon_sym_elif = 24, + anon_sym_else = 25, + anon_sym_match = 26, + anon_sym_case = 27, + anon_sym_async = 28, + anon_sym_for = 29, + anon_sym_in = 30, + anon_sym_while = 31, + anon_sym_try = 32, + anon_sym_except = 33, + anon_sym_except_STAR = 34, + anon_sym_finally = 35, + anon_sym_with = 36, + anon_sym_def = 37, + anon_sym_DASH_GT = 38, + anon_sym_STAR_STAR = 39, + anon_sym_global = 40, + anon_sym_nonlocal = 41, + anon_sym_exec = 42, + anon_sym_class = 43, + anon_sym_AT = 44, + anon_sym_PIPE = 45, + anon_sym_PLUS = 46, + anon_sym_DASH = 47, + sym_case_wildcard_pattern = 48, + anon_sym_LBRACK = 49, + anon_sym_RBRACK = 50, + anon_sym_LBRACE = 51, + anon_sym_RBRACE = 52, + anon_sym_EQ = 53, + anon_sym_not = 54, + anon_sym_and = 55, + anon_sym_or = 56, + anon_sym_SLASH = 57, + anon_sym_PERCENT = 58, + anon_sym_SLASH_SLASH = 59, + anon_sym_AMP = 60, + anon_sym_CARET = 61, + anon_sym_LT_LT = 62, + anon_sym_TILDE = 63, + anon_sym_LT = 64, + anon_sym_LT_EQ = 65, + anon_sym_EQ_EQ = 66, + anon_sym_BANG_EQ = 67, + anon_sym_GT_EQ = 68, + anon_sym_GT = 69, + anon_sym_LT_GT = 70, + anon_sym_is = 71, + anon_sym_lambda = 72, + anon_sym_PLUS_EQ = 73, + anon_sym_DASH_EQ = 74, + anon_sym_STAR_EQ = 75, + anon_sym_SLASH_EQ = 76, + anon_sym_AT_EQ = 77, + anon_sym_SLASH_SLASH_EQ = 78, + anon_sym_PERCENT_EQ = 79, + anon_sym_STAR_STAR_EQ = 80, + anon_sym_GT_GT_EQ = 81, + anon_sym_LT_LT_EQ = 82, + anon_sym_AMP_EQ = 83, + anon_sym_CARET_EQ = 84, + anon_sym_PIPE_EQ = 85, + anon_sym_yield = 86, + sym_ellipsis = 87, + sym__escape_interpolation = 88, + sym_escape_sequence = 89, + sym__not_escape_sequence = 90, + aux_sym_format_specifier_token1 = 91, + sym_type_conversion = 92, + sym_integer = 93, + sym_float = 94, + anon_sym_await = 95, + sym_true = 96, + sym_false = 97, + sym_none = 98, + sym_comment = 99, + sym_line_continuation = 100, + sym__newline = 101, + sym__indent = 102, + sym__dedent = 103, + sym_string_start = 104, + sym__string_content = 105, + sym_string_end = 106, + sym_module = 107, + sym__statement = 108, + sym__simple_statements = 109, + sym_import_statement = 110, + sym_import_prefix = 111, + sym_relative_import = 112, + sym_future_import_statement = 113, + sym_import_from_statement = 114, + sym__import_list = 115, + sym_aliased_import = 116, + sym_wildcard_import = 117, + sym_print_statement = 118, + sym_chevron = 119, + sym_assert_statement = 120, + sym_expression_statement = 121, + sym_named_expression = 122, + sym__named_expression_lhs = 123, + sym_return_statement = 124, + sym_delete_statement = 125, + sym_raise_statement = 126, + sym_pass_statement = 127, + sym_break_statement = 128, + sym_continue_statement = 129, + sym_if_statement = 130, + sym_elif_clause = 131, + sym_else_clause = 132, + sym_match_statement = 133, + sym_case_clause = 134, + sym_for_statement = 135, + sym_while_statement = 136, + sym_try_statement = 137, + sym_except_clause = 138, + sym_except_group_clause = 139, + sym_finally_clause = 140, + sym_with_statement = 141, + sym_with_clause = 142, + sym_with_item = 143, + sym_function_definition = 144, + sym_parameters = 145, + sym_lambda_parameters = 146, + sym_list_splat = 147, + sym_dictionary_splat = 148, + sym_global_statement = 149, + sym_nonlocal_statement = 150, + sym_exec_statement = 151, + sym_class_definition = 152, + sym_parenthesized_list_splat = 153, + sym_argument_list = 154, + sym_decorated_definition = 155, + sym_decorator = 156, + sym_block = 157, + sym_expression_list = 158, + sym_dotted_name = 159, + sym_case_pattern = 160, + sym_case_as_pattern = 161, + sym_case_or_pattern = 162, + sym_case_closed_pattern = 163, + sym_case_literal_pattern = 164, + sym_case_literal_pattern_complex_number = 165, + sym_case_literal_integer_or_float = 166, + sym_case_group_pattern = 167, + sym_case_sequence_pattern = 168, + sym_case_open_sequence_pattern = 169, + sym_case_maybe_sequence_pattern = 170, + sym_case_maybe_star_pattern = 171, + sym_case_mapping_pattern = 172, + sym_case_items_pattern = 173, + sym_case_key_value_pattern = 174, + sym_case_star_pattern = 175, + sym_case_double_star_pattern = 176, + sym_case_class_pattern = 177, + sym_case_positional_patterns = 178, + sym_case_keyword_patterns = 179, + sym_case_keyword_pattern = 180, + sym__parameters = 181, + sym__patterns = 182, + sym_parameter = 183, + sym_pattern = 184, + sym_tuple_pattern = 185, + sym_list_pattern = 186, + sym_default_parameter = 187, + sym_typed_default_parameter = 188, + sym_list_splat_pattern = 189, + sym_dictionary_splat_pattern = 190, + sym_as_pattern = 191, + sym__expression_within_for_in_clause = 192, + sym_expression = 193, + sym_primary_expression = 194, + sym_not_operator = 195, + sym_boolean_operator = 196, + sym_binary_operator = 197, + sym_unary_operator = 198, + sym_comparison_operator = 199, + sym_lambda = 200, + sym_lambda_within_for_in_clause = 201, + sym_assignment = 202, + sym_augmented_assignment = 203, + sym_pattern_list = 204, + sym__right_hand_side = 205, + sym_list_splat_or_expressions = 206, + sym__list_splat_or_expression = 207, + sym_yield = 208, + sym_attribute = 209, + sym_subscript = 210, + sym_slice = 211, + sym_call = 212, + sym_typed_parameter = 213, + sym_type = 214, + sym_keyword_argument = 215, + sym_list = 216, + sym_set = 217, + sym_tuple = 218, + sym_dictionary = 219, + sym_pair = 220, + sym_list_comprehension = 221, + sym_dictionary_comprehension = 222, + sym_set_comprehension = 223, + sym_generator_expression = 224, + sym__comprehension_clauses = 225, + sym_parenthesized_expression = 226, + sym__collection_elements = 227, + sym_for_in_clause = 228, + sym_if_clause = 229, + sym_conditional_expression = 230, + sym_concatenated_string = 231, + sym_string = 232, + sym_string_content = 233, + sym_interpolation = 234, + sym__f_expression = 235, + sym_format_specifier = 236, + sym_await = 237, + sym_positional_separator = 238, + sym_keyword_separator = 239, + aux_sym_module_repeat1 = 240, + aux_sym__simple_statements_repeat1 = 241, + aux_sym_import_prefix_repeat1 = 242, + aux_sym__import_list_repeat1 = 243, + aux_sym_print_statement_repeat1 = 244, + aux_sym_assert_statement_repeat1 = 245, + aux_sym_if_statement_repeat1 = 246, + aux_sym_match_statement_repeat1 = 247, + aux_sym_match_statement_repeat2 = 248, + aux_sym_case_clause_repeat1 = 249, + aux_sym_try_statement_repeat1 = 250, + aux_sym_try_statement_repeat2 = 251, + aux_sym_with_clause_repeat1 = 252, + aux_sym_global_statement_repeat1 = 253, + aux_sym_argument_list_repeat1 = 254, + aux_sym_decorated_definition_repeat1 = 255, + aux_sym_dotted_name_repeat1 = 256, + aux_sym_case_or_pattern_repeat1 = 257, + aux_sym_case_maybe_sequence_pattern_repeat1 = 258, + aux_sym_case_items_pattern_repeat1 = 259, + aux_sym_case_positional_patterns_repeat1 = 260, + aux_sym_case_keyword_patterns_repeat1 = 261, + aux_sym__parameters_repeat1 = 262, + aux_sym__patterns_repeat1 = 263, + aux_sym_comparison_operator_repeat1 = 264, + aux_sym_list_splat_or_expressions_repeat1 = 265, + aux_sym_subscript_repeat1 = 266, + aux_sym_dictionary_repeat1 = 267, + aux_sym__comprehension_clauses_repeat1 = 268, + aux_sym__collection_elements_repeat1 = 269, + aux_sym_for_in_clause_repeat1 = 270, + aux_sym_concatenated_string_repeat1 = 271, + aux_sym_string_repeat1 = 272, + aux_sym_string_content_repeat1 = 273, + aux_sym_format_specifier_repeat1 = 274, + alias_sym_as_pattern_target = 275, + alias_sym_format_expression = 276, + anon_alias_sym_isnot = 277, + anon_alias_sym_notin = 278, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_identifier] = "identifier", + [anon_sym_SEMI] = ";", + [anon_sym_import] = "import", + [anon_sym_DOT] = ".", + [anon_sym_from] = "from", + [anon_sym___future__] = "__future__", + [anon_sym_LPAREN] = "(", + [anon_sym_RPAREN] = ")", + [anon_sym_COMMA] = ",", + [anon_sym_as] = "as", + [anon_sym_STAR] = "*", + [anon_sym_print] = "print", + [anon_sym_GT_GT] = ">>", + [anon_sym_assert] = "assert", + [anon_sym_COLON_EQ] = ":=", + [anon_sym_return] = "return", + [anon_sym_del] = "del", + [anon_sym_raise] = "raise", + [anon_sym_pass] = "pass", + [anon_sym_break] = "break", + [anon_sym_continue] = "continue", + [anon_sym_if] = "if", + [anon_sym_COLON] = ":", + [anon_sym_elif] = "elif", + [anon_sym_else] = "else", + [anon_sym_match] = "match", + [anon_sym_case] = "case", + [anon_sym_async] = "async", + [anon_sym_for] = "for", + [anon_sym_in] = "in", + [anon_sym_while] = "while", + [anon_sym_try] = "try", + [anon_sym_except] = "except", + [anon_sym_except_STAR] = "except*", + [anon_sym_finally] = "finally", + [anon_sym_with] = "with", + [anon_sym_def] = "def", + [anon_sym_DASH_GT] = "->", + [anon_sym_STAR_STAR] = "**", + [anon_sym_global] = "global", + [anon_sym_nonlocal] = "nonlocal", + [anon_sym_exec] = "exec", + [anon_sym_class] = "class", + [anon_sym_AT] = "@", + [anon_sym_PIPE] = "|", + [anon_sym_PLUS] = "+", + [anon_sym_DASH] = "-", + [sym_case_wildcard_pattern] = "case_wildcard_pattern", + [anon_sym_LBRACK] = "[", + [anon_sym_RBRACK] = "]", + [anon_sym_LBRACE] = "{", + [anon_sym_RBRACE] = "}", + [anon_sym_EQ] = "=", + [anon_sym_not] = "not", + [anon_sym_and] = "and", + [anon_sym_or] = "or", + [anon_sym_SLASH] = "/", + [anon_sym_PERCENT] = "%", + [anon_sym_SLASH_SLASH] = "//", + [anon_sym_AMP] = "&", + [anon_sym_CARET] = "^", + [anon_sym_LT_LT] = "<<", + [anon_sym_TILDE] = "~", + [anon_sym_LT] = "<", + [anon_sym_LT_EQ] = "<=", + [anon_sym_EQ_EQ] = "==", + [anon_sym_BANG_EQ] = "!=", + [anon_sym_GT_EQ] = ">=", + [anon_sym_GT] = ">", + [anon_sym_LT_GT] = "<>", + [anon_sym_is] = "is", + [anon_sym_lambda] = "lambda", + [anon_sym_PLUS_EQ] = "+=", + [anon_sym_DASH_EQ] = "-=", + [anon_sym_STAR_EQ] = "*=", + [anon_sym_SLASH_EQ] = "/=", + [anon_sym_AT_EQ] = "@=", + [anon_sym_SLASH_SLASH_EQ] = "//=", + [anon_sym_PERCENT_EQ] = "%=", + [anon_sym_STAR_STAR_EQ] = "**=", + [anon_sym_GT_GT_EQ] = ">>=", + [anon_sym_LT_LT_EQ] = "<<=", + [anon_sym_AMP_EQ] = "&=", + [anon_sym_CARET_EQ] = "^=", + [anon_sym_PIPE_EQ] = "|=", + [anon_sym_yield] = "yield", + [sym_ellipsis] = "ellipsis", + [sym__escape_interpolation] = "_escape_interpolation", + [sym_escape_sequence] = "escape_sequence", + [sym__not_escape_sequence] = "_not_escape_sequence", + [aux_sym_format_specifier_token1] = "format_specifier_token1", + [sym_type_conversion] = "type_conversion", + [sym_integer] = "integer", + [sym_float] = "float", + [anon_sym_await] = "await", + [sym_true] = "true", + [sym_false] = "false", + [sym_none] = "none", + [sym_comment] = "comment", + [sym_line_continuation] = "line_continuation", + [sym__newline] = "_newline", + [sym__indent] = "_indent", + [sym__dedent] = "_dedent", + [sym_string_start] = "string_start", + [sym__string_content] = "_string_content", + [sym_string_end] = "string_end", + [sym_module] = "module", + [sym__statement] = "_statement", + [sym__simple_statements] = "_simple_statements", + [sym_import_statement] = "import_statement", + [sym_import_prefix] = "import_prefix", + [sym_relative_import] = "relative_import", + [sym_future_import_statement] = "future_import_statement", + [sym_import_from_statement] = "import_from_statement", + [sym__import_list] = "_import_list", + [sym_aliased_import] = "aliased_import", + [sym_wildcard_import] = "wildcard_import", + [sym_print_statement] = "print_statement", + [sym_chevron] = "chevron", + [sym_assert_statement] = "assert_statement", + [sym_expression_statement] = "expression_statement", + [sym_named_expression] = "named_expression", + [sym__named_expression_lhs] = "_named_expression_lhs", + [sym_return_statement] = "return_statement", + [sym_delete_statement] = "delete_statement", + [sym_raise_statement] = "raise_statement", + [sym_pass_statement] = "pass_statement", + [sym_break_statement] = "break_statement", + [sym_continue_statement] = "continue_statement", + [sym_if_statement] = "if_statement", + [sym_elif_clause] = "elif_clause", + [sym_else_clause] = "else_clause", + [sym_match_statement] = "match_statement", + [sym_case_clause] = "case_clause", + [sym_for_statement] = "for_statement", + [sym_while_statement] = "while_statement", + [sym_try_statement] = "try_statement", + [sym_except_clause] = "except_clause", + [sym_except_group_clause] = "except_group_clause", + [sym_finally_clause] = "finally_clause", + [sym_with_statement] = "with_statement", + [sym_with_clause] = "with_clause", + [sym_with_item] = "with_item", + [sym_function_definition] = "function_definition", + [sym_parameters] = "parameters", + [sym_lambda_parameters] = "lambda_parameters", + [sym_list_splat] = "list_splat", + [sym_dictionary_splat] = "dictionary_splat", + [sym_global_statement] = "global_statement", + [sym_nonlocal_statement] = "nonlocal_statement", + [sym_exec_statement] = "exec_statement", + [sym_class_definition] = "class_definition", + [sym_parenthesized_list_splat] = "parenthesized_list_splat", + [sym_argument_list] = "argument_list", + [sym_decorated_definition] = "decorated_definition", + [sym_decorator] = "decorator", + [sym_block] = "block", + [sym_expression_list] = "expression_list", + [sym_dotted_name] = "dotted_name", + [sym_case_pattern] = "case_pattern", + [sym_case_as_pattern] = "case_as_pattern", + [sym_case_or_pattern] = "case_or_pattern", + [sym_case_closed_pattern] = "case_closed_pattern", + [sym_case_literal_pattern] = "case_literal_pattern", + [sym_case_literal_pattern_complex_number] = "case_literal_pattern_complex_number", + [sym_case_literal_integer_or_float] = "case_literal_integer_or_float", + [sym_case_group_pattern] = "case_group_pattern", + [sym_case_sequence_pattern] = "case_sequence_pattern", + [sym_case_open_sequence_pattern] = "case_open_sequence_pattern", + [sym_case_maybe_sequence_pattern] = "case_maybe_sequence_pattern", + [sym_case_maybe_star_pattern] = "case_maybe_star_pattern", + [sym_case_mapping_pattern] = "case_mapping_pattern", + [sym_case_items_pattern] = "case_items_pattern", + [sym_case_key_value_pattern] = "case_key_value_pattern", + [sym_case_star_pattern] = "case_star_pattern", + [sym_case_double_star_pattern] = "case_double_star_pattern", + [sym_case_class_pattern] = "case_class_pattern", + [sym_case_positional_patterns] = "case_positional_patterns", + [sym_case_keyword_patterns] = "case_keyword_patterns", + [sym_case_keyword_pattern] = "case_keyword_pattern", + [sym__parameters] = "_parameters", + [sym__patterns] = "_patterns", + [sym_parameter] = "parameter", + [sym_pattern] = "pattern", + [sym_tuple_pattern] = "tuple_pattern", + [sym_list_pattern] = "list_pattern", + [sym_default_parameter] = "default_parameter", + [sym_typed_default_parameter] = "typed_default_parameter", + [sym_list_splat_pattern] = "list_splat_pattern", + [sym_dictionary_splat_pattern] = "dictionary_splat_pattern", + [sym_as_pattern] = "as_pattern", + [sym__expression_within_for_in_clause] = "_expression_within_for_in_clause", + [sym_expression] = "expression", + [sym_primary_expression] = "primary_expression", + [sym_not_operator] = "not_operator", + [sym_boolean_operator] = "boolean_operator", + [sym_binary_operator] = "binary_operator", + [sym_unary_operator] = "unary_operator", + [sym_comparison_operator] = "comparison_operator", + [sym_lambda] = "lambda", + [sym_lambda_within_for_in_clause] = "lambda", + [sym_assignment] = "assignment", + [sym_augmented_assignment] = "augmented_assignment", + [sym_pattern_list] = "pattern_list", + [sym__right_hand_side] = "_right_hand_side", + [sym_list_splat_or_expressions] = "list_splat_or_expressions", + [sym__list_splat_or_expression] = "_list_splat_or_expression", + [sym_yield] = "yield", + [sym_attribute] = "attribute", + [sym_subscript] = "subscript", + [sym_slice] = "slice", + [sym_call] = "call", + [sym_typed_parameter] = "typed_parameter", + [sym_type] = "type", + [sym_keyword_argument] = "keyword_argument", + [sym_list] = "list", + [sym_set] = "set", + [sym_tuple] = "tuple", + [sym_dictionary] = "dictionary", + [sym_pair] = "pair", + [sym_list_comprehension] = "list_comprehension", + [sym_dictionary_comprehension] = "dictionary_comprehension", + [sym_set_comprehension] = "set_comprehension", + [sym_generator_expression] = "generator_expression", + [sym__comprehension_clauses] = "_comprehension_clauses", + [sym_parenthesized_expression] = "parenthesized_expression", + [sym__collection_elements] = "_collection_elements", + [sym_for_in_clause] = "for_in_clause", + [sym_if_clause] = "if_clause", + [sym_conditional_expression] = "conditional_expression", + [sym_concatenated_string] = "concatenated_string", + [sym_string] = "string", + [sym_string_content] = "string_content", + [sym_interpolation] = "interpolation", + [sym__f_expression] = "_f_expression", + [sym_format_specifier] = "format_specifier", + [sym_await] = "await", + [sym_positional_separator] = "positional_separator", + [sym_keyword_separator] = "keyword_separator", + [aux_sym_module_repeat1] = "module_repeat1", + [aux_sym__simple_statements_repeat1] = "_simple_statements_repeat1", + [aux_sym_import_prefix_repeat1] = "import_prefix_repeat1", + [aux_sym__import_list_repeat1] = "_import_list_repeat1", + [aux_sym_print_statement_repeat1] = "print_statement_repeat1", + [aux_sym_assert_statement_repeat1] = "assert_statement_repeat1", + [aux_sym_if_statement_repeat1] = "if_statement_repeat1", + [aux_sym_match_statement_repeat1] = "match_statement_repeat1", + [aux_sym_match_statement_repeat2] = "match_statement_repeat2", + [aux_sym_case_clause_repeat1] = "case_clause_repeat1", + [aux_sym_try_statement_repeat1] = "try_statement_repeat1", + [aux_sym_try_statement_repeat2] = "try_statement_repeat2", + [aux_sym_with_clause_repeat1] = "with_clause_repeat1", + [aux_sym_global_statement_repeat1] = "global_statement_repeat1", + [aux_sym_argument_list_repeat1] = "argument_list_repeat1", + [aux_sym_decorated_definition_repeat1] = "decorated_definition_repeat1", + [aux_sym_dotted_name_repeat1] = "dotted_name_repeat1", + [aux_sym_case_or_pattern_repeat1] = "case_or_pattern_repeat1", + [aux_sym_case_maybe_sequence_pattern_repeat1] = "case_maybe_sequence_pattern_repeat1", + [aux_sym_case_items_pattern_repeat1] = "case_items_pattern_repeat1", + [aux_sym_case_positional_patterns_repeat1] = "case_positional_patterns_repeat1", + [aux_sym_case_keyword_patterns_repeat1] = "case_keyword_patterns_repeat1", + [aux_sym__parameters_repeat1] = "_parameters_repeat1", + [aux_sym__patterns_repeat1] = "_patterns_repeat1", + [aux_sym_comparison_operator_repeat1] = "comparison_operator_repeat1", + [aux_sym_list_splat_or_expressions_repeat1] = "list_splat_or_expressions_repeat1", + [aux_sym_subscript_repeat1] = "subscript_repeat1", + [aux_sym_dictionary_repeat1] = "dictionary_repeat1", + [aux_sym__comprehension_clauses_repeat1] = "_comprehension_clauses_repeat1", + [aux_sym__collection_elements_repeat1] = "_collection_elements_repeat1", + [aux_sym_for_in_clause_repeat1] = "for_in_clause_repeat1", + [aux_sym_concatenated_string_repeat1] = "concatenated_string_repeat1", + [aux_sym_string_repeat1] = "string_repeat1", + [aux_sym_string_content_repeat1] = "string_content_repeat1", + [aux_sym_format_specifier_repeat1] = "format_specifier_repeat1", + [alias_sym_as_pattern_target] = "as_pattern_target", + [alias_sym_format_expression] = "format_expression", + [anon_alias_sym_isnot] = "is not", + [anon_alias_sym_notin] = "not in", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_identifier] = sym_identifier, + [anon_sym_SEMI] = anon_sym_SEMI, + [anon_sym_import] = anon_sym_import, + [anon_sym_DOT] = anon_sym_DOT, + [anon_sym_from] = anon_sym_from, + [anon_sym___future__] = anon_sym___future__, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_as] = anon_sym_as, + [anon_sym_STAR] = anon_sym_STAR, + [anon_sym_print] = anon_sym_print, + [anon_sym_GT_GT] = anon_sym_GT_GT, + [anon_sym_assert] = anon_sym_assert, + [anon_sym_COLON_EQ] = anon_sym_COLON_EQ, + [anon_sym_return] = anon_sym_return, + [anon_sym_del] = anon_sym_del, + [anon_sym_raise] = anon_sym_raise, + [anon_sym_pass] = anon_sym_pass, + [anon_sym_break] = anon_sym_break, + [anon_sym_continue] = anon_sym_continue, + [anon_sym_if] = anon_sym_if, + [anon_sym_COLON] = anon_sym_COLON, + [anon_sym_elif] = anon_sym_elif, + [anon_sym_else] = anon_sym_else, + [anon_sym_match] = anon_sym_match, + [anon_sym_case] = anon_sym_case, + [anon_sym_async] = anon_sym_async, + [anon_sym_for] = anon_sym_for, + [anon_sym_in] = anon_sym_in, + [anon_sym_while] = anon_sym_while, + [anon_sym_try] = anon_sym_try, + [anon_sym_except] = anon_sym_except, + [anon_sym_except_STAR] = anon_sym_except_STAR, + [anon_sym_finally] = anon_sym_finally, + [anon_sym_with] = anon_sym_with, + [anon_sym_def] = anon_sym_def, + [anon_sym_DASH_GT] = anon_sym_DASH_GT, + [anon_sym_STAR_STAR] = anon_sym_STAR_STAR, + [anon_sym_global] = anon_sym_global, + [anon_sym_nonlocal] = anon_sym_nonlocal, + [anon_sym_exec] = anon_sym_exec, + [anon_sym_class] = anon_sym_class, + [anon_sym_AT] = anon_sym_AT, + [anon_sym_PIPE] = anon_sym_PIPE, + [anon_sym_PLUS] = anon_sym_PLUS, + [anon_sym_DASH] = anon_sym_DASH, + [sym_case_wildcard_pattern] = sym_case_wildcard_pattern, + [anon_sym_LBRACK] = anon_sym_LBRACK, + [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_LBRACE] = anon_sym_LBRACE, + [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_EQ] = anon_sym_EQ, + [anon_sym_not] = anon_sym_not, + [anon_sym_and] = anon_sym_and, + [anon_sym_or] = anon_sym_or, + [anon_sym_SLASH] = anon_sym_SLASH, + [anon_sym_PERCENT] = anon_sym_PERCENT, + [anon_sym_SLASH_SLASH] = anon_sym_SLASH_SLASH, + [anon_sym_AMP] = anon_sym_AMP, + [anon_sym_CARET] = anon_sym_CARET, + [anon_sym_LT_LT] = anon_sym_LT_LT, + [anon_sym_TILDE] = anon_sym_TILDE, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_LT_EQ] = anon_sym_LT_EQ, + [anon_sym_EQ_EQ] = anon_sym_EQ_EQ, + [anon_sym_BANG_EQ] = anon_sym_BANG_EQ, + [anon_sym_GT_EQ] = anon_sym_GT_EQ, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_LT_GT] = anon_sym_LT_GT, + [anon_sym_is] = anon_sym_is, + [anon_sym_lambda] = anon_sym_lambda, + [anon_sym_PLUS_EQ] = anon_sym_PLUS_EQ, + [anon_sym_DASH_EQ] = anon_sym_DASH_EQ, + [anon_sym_STAR_EQ] = anon_sym_STAR_EQ, + [anon_sym_SLASH_EQ] = anon_sym_SLASH_EQ, + [anon_sym_AT_EQ] = anon_sym_AT_EQ, + [anon_sym_SLASH_SLASH_EQ] = anon_sym_SLASH_SLASH_EQ, + [anon_sym_PERCENT_EQ] = anon_sym_PERCENT_EQ, + [anon_sym_STAR_STAR_EQ] = anon_sym_STAR_STAR_EQ, + [anon_sym_GT_GT_EQ] = anon_sym_GT_GT_EQ, + [anon_sym_LT_LT_EQ] = anon_sym_LT_LT_EQ, + [anon_sym_AMP_EQ] = anon_sym_AMP_EQ, + [anon_sym_CARET_EQ] = anon_sym_CARET_EQ, + [anon_sym_PIPE_EQ] = anon_sym_PIPE_EQ, + [anon_sym_yield] = anon_sym_yield, + [sym_ellipsis] = sym_ellipsis, + [sym__escape_interpolation] = sym__escape_interpolation, + [sym_escape_sequence] = sym_escape_sequence, + [sym__not_escape_sequence] = sym__not_escape_sequence, + [aux_sym_format_specifier_token1] = aux_sym_format_specifier_token1, + [sym_type_conversion] = sym_type_conversion, + [sym_integer] = sym_integer, + [sym_float] = sym_float, + [anon_sym_await] = anon_sym_await, + [sym_true] = sym_true, + [sym_false] = sym_false, + [sym_none] = sym_none, + [sym_comment] = sym_comment, + [sym_line_continuation] = sym_line_continuation, + [sym__newline] = sym__newline, + [sym__indent] = sym__indent, + [sym__dedent] = sym__dedent, + [sym_string_start] = sym_string_start, + [sym__string_content] = sym__string_content, + [sym_string_end] = sym_string_end, + [sym_module] = sym_module, + [sym__statement] = sym__statement, + [sym__simple_statements] = sym__simple_statements, + [sym_import_statement] = sym_import_statement, + [sym_import_prefix] = sym_import_prefix, + [sym_relative_import] = sym_relative_import, + [sym_future_import_statement] = sym_future_import_statement, + [sym_import_from_statement] = sym_import_from_statement, + [sym__import_list] = sym__import_list, + [sym_aliased_import] = sym_aliased_import, + [sym_wildcard_import] = sym_wildcard_import, + [sym_print_statement] = sym_print_statement, + [sym_chevron] = sym_chevron, + [sym_assert_statement] = sym_assert_statement, + [sym_expression_statement] = sym_expression_statement, + [sym_named_expression] = sym_named_expression, + [sym__named_expression_lhs] = sym__named_expression_lhs, + [sym_return_statement] = sym_return_statement, + [sym_delete_statement] = sym_delete_statement, + [sym_raise_statement] = sym_raise_statement, + [sym_pass_statement] = sym_pass_statement, + [sym_break_statement] = sym_break_statement, + [sym_continue_statement] = sym_continue_statement, + [sym_if_statement] = sym_if_statement, + [sym_elif_clause] = sym_elif_clause, + [sym_else_clause] = sym_else_clause, + [sym_match_statement] = sym_match_statement, + [sym_case_clause] = sym_case_clause, + [sym_for_statement] = sym_for_statement, + [sym_while_statement] = sym_while_statement, + [sym_try_statement] = sym_try_statement, + [sym_except_clause] = sym_except_clause, + [sym_except_group_clause] = sym_except_group_clause, + [sym_finally_clause] = sym_finally_clause, + [sym_with_statement] = sym_with_statement, + [sym_with_clause] = sym_with_clause, + [sym_with_item] = sym_with_item, + [sym_function_definition] = sym_function_definition, + [sym_parameters] = sym_parameters, + [sym_lambda_parameters] = sym_lambda_parameters, + [sym_list_splat] = sym_list_splat, + [sym_dictionary_splat] = sym_dictionary_splat, + [sym_global_statement] = sym_global_statement, + [sym_nonlocal_statement] = sym_nonlocal_statement, + [sym_exec_statement] = sym_exec_statement, + [sym_class_definition] = sym_class_definition, + [sym_parenthesized_list_splat] = sym_parenthesized_list_splat, + [sym_argument_list] = sym_argument_list, + [sym_decorated_definition] = sym_decorated_definition, + [sym_decorator] = sym_decorator, + [sym_block] = sym_block, + [sym_expression_list] = sym_expression_list, + [sym_dotted_name] = sym_dotted_name, + [sym_case_pattern] = sym_case_pattern, + [sym_case_as_pattern] = sym_case_as_pattern, + [sym_case_or_pattern] = sym_case_or_pattern, + [sym_case_closed_pattern] = sym_case_closed_pattern, + [sym_case_literal_pattern] = sym_case_literal_pattern, + [sym_case_literal_pattern_complex_number] = sym_case_literal_pattern_complex_number, + [sym_case_literal_integer_or_float] = sym_case_literal_integer_or_float, + [sym_case_group_pattern] = sym_case_group_pattern, + [sym_case_sequence_pattern] = sym_case_sequence_pattern, + [sym_case_open_sequence_pattern] = sym_case_open_sequence_pattern, + [sym_case_maybe_sequence_pattern] = sym_case_maybe_sequence_pattern, + [sym_case_maybe_star_pattern] = sym_case_maybe_star_pattern, + [sym_case_mapping_pattern] = sym_case_mapping_pattern, + [sym_case_items_pattern] = sym_case_items_pattern, + [sym_case_key_value_pattern] = sym_case_key_value_pattern, + [sym_case_star_pattern] = sym_case_star_pattern, + [sym_case_double_star_pattern] = sym_case_double_star_pattern, + [sym_case_class_pattern] = sym_case_class_pattern, + [sym_case_positional_patterns] = sym_case_positional_patterns, + [sym_case_keyword_patterns] = sym_case_keyword_patterns, + [sym_case_keyword_pattern] = sym_case_keyword_pattern, + [sym__parameters] = sym__parameters, + [sym__patterns] = sym__patterns, + [sym_parameter] = sym_parameter, + [sym_pattern] = sym_pattern, + [sym_tuple_pattern] = sym_tuple_pattern, + [sym_list_pattern] = sym_list_pattern, + [sym_default_parameter] = sym_default_parameter, + [sym_typed_default_parameter] = sym_typed_default_parameter, + [sym_list_splat_pattern] = sym_list_splat_pattern, + [sym_dictionary_splat_pattern] = sym_dictionary_splat_pattern, + [sym_as_pattern] = sym_as_pattern, + [sym__expression_within_for_in_clause] = sym__expression_within_for_in_clause, + [sym_expression] = sym_expression, + [sym_primary_expression] = sym_primary_expression, + [sym_not_operator] = sym_not_operator, + [sym_boolean_operator] = sym_boolean_operator, + [sym_binary_operator] = sym_binary_operator, + [sym_unary_operator] = sym_unary_operator, + [sym_comparison_operator] = sym_comparison_operator, + [sym_lambda] = sym_lambda, + [sym_lambda_within_for_in_clause] = sym_lambda, + [sym_assignment] = sym_assignment, + [sym_augmented_assignment] = sym_augmented_assignment, + [sym_pattern_list] = sym_pattern_list, + [sym__right_hand_side] = sym__right_hand_side, + [sym_list_splat_or_expressions] = sym_list_splat_or_expressions, + [sym__list_splat_or_expression] = sym__list_splat_or_expression, + [sym_yield] = sym_yield, + [sym_attribute] = sym_attribute, + [sym_subscript] = sym_subscript, + [sym_slice] = sym_slice, + [sym_call] = sym_call, + [sym_typed_parameter] = sym_typed_parameter, + [sym_type] = sym_type, + [sym_keyword_argument] = sym_keyword_argument, + [sym_list] = sym_list, + [sym_set] = sym_set, + [sym_tuple] = sym_tuple, + [sym_dictionary] = sym_dictionary, + [sym_pair] = sym_pair, + [sym_list_comprehension] = sym_list_comprehension, + [sym_dictionary_comprehension] = sym_dictionary_comprehension, + [sym_set_comprehension] = sym_set_comprehension, + [sym_generator_expression] = sym_generator_expression, + [sym__comprehension_clauses] = sym__comprehension_clauses, + [sym_parenthesized_expression] = sym_parenthesized_expression, + [sym__collection_elements] = sym__collection_elements, + [sym_for_in_clause] = sym_for_in_clause, + [sym_if_clause] = sym_if_clause, + [sym_conditional_expression] = sym_conditional_expression, + [sym_concatenated_string] = sym_concatenated_string, + [sym_string] = sym_string, + [sym_string_content] = sym_string_content, + [sym_interpolation] = sym_interpolation, + [sym__f_expression] = sym__f_expression, + [sym_format_specifier] = sym_format_specifier, + [sym_await] = sym_await, + [sym_positional_separator] = sym_positional_separator, + [sym_keyword_separator] = sym_keyword_separator, + [aux_sym_module_repeat1] = aux_sym_module_repeat1, + [aux_sym__simple_statements_repeat1] = aux_sym__simple_statements_repeat1, + [aux_sym_import_prefix_repeat1] = aux_sym_import_prefix_repeat1, + [aux_sym__import_list_repeat1] = aux_sym__import_list_repeat1, + [aux_sym_print_statement_repeat1] = aux_sym_print_statement_repeat1, + [aux_sym_assert_statement_repeat1] = aux_sym_assert_statement_repeat1, + [aux_sym_if_statement_repeat1] = aux_sym_if_statement_repeat1, + [aux_sym_match_statement_repeat1] = aux_sym_match_statement_repeat1, + [aux_sym_match_statement_repeat2] = aux_sym_match_statement_repeat2, + [aux_sym_case_clause_repeat1] = aux_sym_case_clause_repeat1, + [aux_sym_try_statement_repeat1] = aux_sym_try_statement_repeat1, + [aux_sym_try_statement_repeat2] = aux_sym_try_statement_repeat2, + [aux_sym_with_clause_repeat1] = aux_sym_with_clause_repeat1, + [aux_sym_global_statement_repeat1] = aux_sym_global_statement_repeat1, + [aux_sym_argument_list_repeat1] = aux_sym_argument_list_repeat1, + [aux_sym_decorated_definition_repeat1] = aux_sym_decorated_definition_repeat1, + [aux_sym_dotted_name_repeat1] = aux_sym_dotted_name_repeat1, + [aux_sym_case_or_pattern_repeat1] = aux_sym_case_or_pattern_repeat1, + [aux_sym_case_maybe_sequence_pattern_repeat1] = aux_sym_case_maybe_sequence_pattern_repeat1, + [aux_sym_case_items_pattern_repeat1] = aux_sym_case_items_pattern_repeat1, + [aux_sym_case_positional_patterns_repeat1] = aux_sym_case_positional_patterns_repeat1, + [aux_sym_case_keyword_patterns_repeat1] = aux_sym_case_keyword_patterns_repeat1, + [aux_sym__parameters_repeat1] = aux_sym__parameters_repeat1, + [aux_sym__patterns_repeat1] = aux_sym__patterns_repeat1, + [aux_sym_comparison_operator_repeat1] = aux_sym_comparison_operator_repeat1, + [aux_sym_list_splat_or_expressions_repeat1] = aux_sym_list_splat_or_expressions_repeat1, + [aux_sym_subscript_repeat1] = aux_sym_subscript_repeat1, + [aux_sym_dictionary_repeat1] = aux_sym_dictionary_repeat1, + [aux_sym__comprehension_clauses_repeat1] = aux_sym__comprehension_clauses_repeat1, + [aux_sym__collection_elements_repeat1] = aux_sym__collection_elements_repeat1, + [aux_sym_for_in_clause_repeat1] = aux_sym_for_in_clause_repeat1, + [aux_sym_concatenated_string_repeat1] = aux_sym_concatenated_string_repeat1, + [aux_sym_string_repeat1] = aux_sym_string_repeat1, + [aux_sym_string_content_repeat1] = aux_sym_string_content_repeat1, + [aux_sym_format_specifier_repeat1] = aux_sym_format_specifier_repeat1, + [alias_sym_as_pattern_target] = alias_sym_as_pattern_target, + [alias_sym_format_expression] = alias_sym_format_expression, + [anon_alias_sym_isnot] = anon_alias_sym_isnot, + [anon_alias_sym_notin] = anon_alias_sym_notin, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_identifier] = { + .visible = true, + .named = true, + }, + [anon_sym_SEMI] = { + .visible = true, + .named = false, + }, + [anon_sym_import] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_from] = { + .visible = true, + .named = false, + }, + [anon_sym___future__] = { + .visible = true, + .named = false, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_as] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_print] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_assert] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_return] = { + .visible = true, + .named = false, + }, + [anon_sym_del] = { + .visible = true, + .named = false, + }, + [anon_sym_raise] = { + .visible = true, + .named = false, + }, + [anon_sym_pass] = { + .visible = true, + .named = false, + }, + [anon_sym_break] = { + .visible = true, + .named = false, + }, + [anon_sym_continue] = { + .visible = true, + .named = false, + }, + [anon_sym_if] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_elif] = { + .visible = true, + .named = false, + }, + [anon_sym_else] = { + .visible = true, + .named = false, + }, + [anon_sym_match] = { + .visible = true, + .named = false, + }, + [anon_sym_case] = { + .visible = true, + .named = false, + }, + [anon_sym_async] = { + .visible = true, + .named = false, + }, + [anon_sym_for] = { + .visible = true, + .named = false, + }, + [anon_sym_in] = { + .visible = true, + .named = false, + }, + [anon_sym_while] = { + .visible = true, + .named = false, + }, + [anon_sym_try] = { + .visible = true, + .named = false, + }, + [anon_sym_except] = { + .visible = true, + .named = false, + }, + [anon_sym_except_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_finally] = { + .visible = true, + .named = false, + }, + [anon_sym_with] = { + .visible = true, + .named = false, + }, + [anon_sym_def] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_global] = { + .visible = true, + .named = false, + }, + [anon_sym_nonlocal] = { + .visible = true, + .named = false, + }, + [anon_sym_exec] = { + .visible = true, + .named = false, + }, + [anon_sym_class] = { + .visible = true, + .named = false, + }, + [anon_sym_AT] = { + .visible = true, + .named = false, + }, + [anon_sym_PIPE] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH] = { + .visible = true, + .named = false, + }, + [sym_case_wildcard_pattern] = { + .visible = true, + .named = true, + }, + [anon_sym_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_not] = { + .visible = true, + .named = false, + }, + [anon_sym_and] = { + .visible = true, + .named = false, + }, + [anon_sym_or] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH] = { + .visible = true, + .named = false, + }, + [anon_sym_PERCENT] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_SLASH] = { + .visible = true, + .named = false, + }, + [anon_sym_AMP] = { + .visible = true, + .named = false, + }, + [anon_sym_CARET] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_TILDE] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_BANG_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_is] = { + .visible = true, + .named = false, + }, + [anon_sym_lambda] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_AT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_SLASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_PERCENT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR_STAR_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_GT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_LT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_AMP_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_CARET_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_PIPE_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_yield] = { + .visible = true, + .named = false, + }, + [sym_ellipsis] = { + .visible = true, + .named = true, + }, + [sym__escape_interpolation] = { + .visible = false, + .named = true, + }, + [sym_escape_sequence] = { + .visible = true, + .named = true, + }, + [sym__not_escape_sequence] = { + .visible = false, + .named = true, + }, + [aux_sym_format_specifier_token1] = { + .visible = false, + .named = false, + }, + [sym_type_conversion] = { + .visible = true, + .named = true, + }, + [sym_integer] = { + .visible = true, + .named = true, + }, + [sym_float] = { + .visible = true, + .named = true, + }, + [anon_sym_await] = { + .visible = true, + .named = false, + }, + [sym_true] = { + .visible = true, + .named = true, + }, + [sym_false] = { + .visible = true, + .named = true, + }, + [sym_none] = { + .visible = true, + .named = true, + }, + [sym_comment] = { + .visible = true, + .named = true, + }, + [sym_line_continuation] = { + .visible = true, + .named = true, + }, + [sym__newline] = { + .visible = false, + .named = true, + }, + [sym__indent] = { + .visible = false, + .named = true, + }, + [sym__dedent] = { + .visible = false, + .named = true, + }, + [sym_string_start] = { + .visible = true, + .named = true, + }, + [sym__string_content] = { + .visible = false, + .named = true, + }, + [sym_string_end] = { + .visible = true, + .named = true, + }, + [sym_module] = { + .visible = true, + .named = true, + }, + [sym__statement] = { + .visible = false, + .named = true, + }, + [sym__simple_statements] = { + .visible = false, + .named = true, + }, + [sym_import_statement] = { + .visible = true, + .named = true, + }, + [sym_import_prefix] = { + .visible = true, + .named = true, + }, + [sym_relative_import] = { + .visible = true, + .named = true, + }, + [sym_future_import_statement] = { + .visible = true, + .named = true, + }, + [sym_import_from_statement] = { + .visible = true, + .named = true, + }, + [sym__import_list] = { + .visible = false, + .named = true, + }, + [sym_aliased_import] = { + .visible = true, + .named = true, + }, + [sym_wildcard_import] = { + .visible = true, + .named = true, + }, + [sym_print_statement] = { + .visible = true, + .named = true, + }, + [sym_chevron] = { + .visible = true, + .named = true, + }, + [sym_assert_statement] = { + .visible = true, + .named = true, + }, + [sym_expression_statement] = { + .visible = true, + .named = true, + }, + [sym_named_expression] = { + .visible = true, + .named = true, + }, + [sym__named_expression_lhs] = { + .visible = false, + .named = true, + }, + [sym_return_statement] = { + .visible = true, + .named = true, + }, + [sym_delete_statement] = { + .visible = true, + .named = true, + }, + [sym_raise_statement] = { + .visible = true, + .named = true, + }, + [sym_pass_statement] = { + .visible = true, + .named = true, + }, + [sym_break_statement] = { + .visible = true, + .named = true, + }, + [sym_continue_statement] = { + .visible = true, + .named = true, + }, + [sym_if_statement] = { + .visible = true, + .named = true, + }, + [sym_elif_clause] = { + .visible = true, + .named = true, + }, + [sym_else_clause] = { + .visible = true, + .named = true, + }, + [sym_match_statement] = { + .visible = true, + .named = true, + }, + [sym_case_clause] = { + .visible = true, + .named = true, + }, + [sym_for_statement] = { + .visible = true, + .named = true, + }, + [sym_while_statement] = { + .visible = true, + .named = true, + }, + [sym_try_statement] = { + .visible = true, + .named = true, + }, + [sym_except_clause] = { + .visible = true, + .named = true, + }, + [sym_except_group_clause] = { + .visible = true, + .named = true, + }, + [sym_finally_clause] = { + .visible = true, + .named = true, + }, + [sym_with_statement] = { + .visible = true, + .named = true, + }, + [sym_with_clause] = { + .visible = true, + .named = true, + }, + [sym_with_item] = { + .visible = true, + .named = true, + }, + [sym_function_definition] = { + .visible = true, + .named = true, + }, + [sym_parameters] = { + .visible = true, + .named = true, + }, + [sym_lambda_parameters] = { + .visible = true, + .named = true, + }, + [sym_list_splat] = { + .visible = true, + .named = true, + }, + [sym_dictionary_splat] = { + .visible = true, + .named = true, + }, + [sym_global_statement] = { + .visible = true, + .named = true, + }, + [sym_nonlocal_statement] = { + .visible = true, + .named = true, + }, + [sym_exec_statement] = { + .visible = true, + .named = true, + }, + [sym_class_definition] = { + .visible = true, + .named = true, + }, + [sym_parenthesized_list_splat] = { + .visible = true, + .named = true, + }, + [sym_argument_list] = { + .visible = true, + .named = true, + }, + [sym_decorated_definition] = { + .visible = true, + .named = true, + }, + [sym_decorator] = { + .visible = true, + .named = true, + }, + [sym_block] = { + .visible = true, + .named = true, + }, + [sym_expression_list] = { + .visible = true, + .named = true, + }, + [sym_dotted_name] = { + .visible = true, + .named = true, + }, + [sym_case_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_as_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_or_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_closed_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_literal_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_literal_pattern_complex_number] = { + .visible = true, + .named = true, + }, + [sym_case_literal_integer_or_float] = { + .visible = true, + .named = true, + }, + [sym_case_group_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_sequence_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_open_sequence_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_maybe_sequence_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_maybe_star_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_mapping_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_items_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_key_value_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_star_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_double_star_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_class_pattern] = { + .visible = true, + .named = true, + }, + [sym_case_positional_patterns] = { + .visible = true, + .named = true, + }, + [sym_case_keyword_patterns] = { + .visible = true, + .named = true, + }, + [sym_case_keyword_pattern] = { + .visible = true, + .named = true, + }, + [sym__parameters] = { + .visible = false, + .named = true, + }, + [sym__patterns] = { + .visible = false, + .named = true, + }, + [sym_parameter] = { + .visible = false, + .named = true, + .supertype = true, + }, + [sym_pattern] = { + .visible = false, + .named = true, + .supertype = true, + }, + [sym_tuple_pattern] = { + .visible = true, + .named = true, + }, + [sym_list_pattern] = { + .visible = true, + .named = true, + }, + [sym_default_parameter] = { + .visible = true, + .named = true, + }, + [sym_typed_default_parameter] = { + .visible = true, + .named = true, + }, + [sym_list_splat_pattern] = { + .visible = true, + .named = true, + }, + [sym_dictionary_splat_pattern] = { + .visible = true, + .named = true, + }, + [sym_as_pattern] = { + .visible = true, + .named = true, + }, + [sym__expression_within_for_in_clause] = { + .visible = false, + .named = true, + }, + [sym_expression] = { + .visible = false, + .named = true, + .supertype = true, + }, + [sym_primary_expression] = { + .visible = false, + .named = true, + .supertype = true, + }, + [sym_not_operator] = { + .visible = true, + .named = true, + }, + [sym_boolean_operator] = { + .visible = true, + .named = true, + }, + [sym_binary_operator] = { + .visible = true, + .named = true, + }, + [sym_unary_operator] = { + .visible = true, + .named = true, + }, + [sym_comparison_operator] = { + .visible = true, + .named = true, + }, + [sym_lambda] = { + .visible = true, + .named = true, + }, + [sym_lambda_within_for_in_clause] = { + .visible = true, + .named = true, + }, + [sym_assignment] = { + .visible = true, + .named = true, + }, + [sym_augmented_assignment] = { + .visible = true, + .named = true, + }, + [sym_pattern_list] = { + .visible = true, + .named = true, + }, + [sym__right_hand_side] = { + .visible = false, + .named = true, + }, + [sym_list_splat_or_expressions] = { + .visible = true, + .named = true, + }, + [sym__list_splat_or_expression] = { + .visible = false, + .named = true, + }, + [sym_yield] = { + .visible = true, + .named = true, + }, + [sym_attribute] = { + .visible = true, + .named = true, + }, + [sym_subscript] = { + .visible = true, + .named = true, + }, + [sym_slice] = { + .visible = true, + .named = true, + }, + [sym_call] = { + .visible = true, + .named = true, + }, + [sym_typed_parameter] = { + .visible = true, + .named = true, + }, + [sym_type] = { + .visible = true, + .named = true, + }, + [sym_keyword_argument] = { + .visible = true, + .named = true, + }, + [sym_list] = { + .visible = true, + .named = true, + }, + [sym_set] = { + .visible = true, + .named = true, + }, + [sym_tuple] = { + .visible = true, + .named = true, + }, + [sym_dictionary] = { + .visible = true, + .named = true, + }, + [sym_pair] = { + .visible = true, + .named = true, + }, + [sym_list_comprehension] = { + .visible = true, + .named = true, + }, + [sym_dictionary_comprehension] = { + .visible = true, + .named = true, + }, + [sym_set_comprehension] = { + .visible = true, + .named = true, + }, + [sym_generator_expression] = { + .visible = true, + .named = true, + }, + [sym__comprehension_clauses] = { + .visible = false, + .named = true, + }, + [sym_parenthesized_expression] = { + .visible = true, + .named = true, + }, + [sym__collection_elements] = { + .visible = false, + .named = true, + }, + [sym_for_in_clause] = { + .visible = true, + .named = true, + }, + [sym_if_clause] = { + .visible = true, + .named = true, + }, + [sym_conditional_expression] = { + .visible = true, + .named = true, + }, + [sym_concatenated_string] = { + .visible = true, + .named = true, + }, + [sym_string] = { + .visible = true, + .named = true, + }, + [sym_string_content] = { + .visible = true, + .named = true, + }, + [sym_interpolation] = { + .visible = true, + .named = true, + }, + [sym__f_expression] = { + .visible = false, + .named = true, + }, + [sym_format_specifier] = { + .visible = true, + .named = true, + }, + [sym_await] = { + .visible = true, + .named = true, + }, + [sym_positional_separator] = { + .visible = true, + .named = true, + }, + [sym_keyword_separator] = { + .visible = true, + .named = true, + }, + [aux_sym_module_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__simple_statements_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_import_prefix_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__import_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_print_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_assert_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_if_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_match_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_match_statement_repeat2] = { + .visible = false, + .named = false, + }, + [aux_sym_case_clause_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_try_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_try_statement_repeat2] = { + .visible = false, + .named = false, + }, + [aux_sym_with_clause_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_global_statement_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_argument_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_decorated_definition_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_dotted_name_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_or_pattern_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_maybe_sequence_pattern_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_items_pattern_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_positional_patterns_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_keyword_patterns_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__parameters_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__patterns_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_comparison_operator_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_list_splat_or_expressions_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_subscript_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_dictionary_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__comprehension_clauses_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__collection_elements_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_for_in_clause_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_concatenated_string_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_string_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_string_content_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_format_specifier_repeat1] = { + .visible = false, + .named = false, + }, + [alias_sym_as_pattern_target] = { + .visible = true, + .named = true, + }, + [alias_sym_format_expression] = { + .visible = true, + .named = true, + }, + [anon_alias_sym_isnot] = { + .visible = true, + .named = false, + }, + [anon_alias_sym_notin] = { + .visible = true, + .named = false, + }, +}; + +enum { + field_alias = 1, + field_alternative = 2, + field_argument = 3, + field_arguments = 4, + field_attribute = 5, + field_body = 6, + field_case_pattern = 7, + field_cause = 8, + field_code = 9, + field_condition = 10, + field_consequence = 11, + field_definition = 12, + field_expression = 13, + field_format_specifier = 14, + field_function = 15, + field_guard = 16, + field_identifier = 17, + field_imaginary_component = 18, + field_interpolation = 19, + field_key = 20, + field_left = 21, + field_maybe_sequence = 22, + field_maybe_star = 23, + field_module_name = 24, + field_name = 25, + field_neg = 26, + field_object = 27, + field_operator = 28, + field_operators = 29, + field_or_pattern = 30, + field_parameters = 31, + field_pattern = 32, + field_prefix = 33, + field_real_component = 34, + field_return_type = 35, + field_right = 36, + field_sign = 37, + field_string_content = 38, + field_subject = 39, + field_subscript = 40, + field_suffix = 41, + field_superclasses = 42, + field_type = 43, + field_type_conversion = 44, + field_value = 45, +}; + +static const char * const ts_field_names[] = { + [0] = NULL, + [field_alias] = "alias", + [field_alternative] = "alternative", + [field_argument] = "argument", + [field_arguments] = "arguments", + [field_attribute] = "attribute", + [field_body] = "body", + [field_case_pattern] = "case_pattern", + [field_cause] = "cause", + [field_code] = "code", + [field_condition] = "condition", + [field_consequence] = "consequence", + [field_definition] = "definition", + [field_expression] = "expression", + [field_format_specifier] = "format_specifier", + [field_function] = "function", + [field_guard] = "guard", + [field_identifier] = "identifier", + [field_imaginary_component] = "imaginary_component", + [field_interpolation] = "interpolation", + [field_key] = "key", + [field_left] = "left", + [field_maybe_sequence] = "maybe_sequence", + [field_maybe_star] = "maybe_star", + [field_module_name] = "module_name", + [field_name] = "name", + [field_neg] = "neg", + [field_object] = "object", + [field_operator] = "operator", + [field_operators] = "operators", + [field_or_pattern] = "or_pattern", + [field_parameters] = "parameters", + [field_pattern] = "pattern", + [field_prefix] = "prefix", + [field_real_component] = "real_component", + [field_return_type] = "return_type", + [field_right] = "right", + [field_sign] = "sign", + [field_string_content] = "string_content", + [field_subject] = "subject", + [field_subscript] = "subscript", + [field_suffix] = "suffix", + [field_superclasses] = "superclasses", + [field_type] = "type", + [field_type_conversion] = "type_conversion", + [field_value] = "value", +}; + +static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { + [2] = {.index = 0, .length = 2}, + [3] = {.index = 2, .length = 1}, + [4] = {.index = 3, .length = 1}, + [5] = {.index = 4, .length = 1}, + [6] = {.index = 5, .length = 1}, + [8] = {.index = 6, .length = 1}, + [9] = {.index = 7, .length = 1}, + [10] = {.index = 8, .length = 1}, + [11] = {.index = 9, .length = 2}, + [12] = {.index = 11, .length = 2}, + [13] = {.index = 13, .length = 1}, + [14] = {.index = 14, .length = 1}, + [15] = {.index = 15, .length = 4}, + [16] = {.index = 19, .length = 4}, + [17] = {.index = 23, .length = 2}, + [18] = {.index = 25, .length = 1}, + [19] = {.index = 26, .length = 2}, + [20] = {.index = 28, .length = 1}, + [21] = {.index = 29, .length = 1}, + [22] = {.index = 30, .length = 1}, + [23] = {.index = 31, .length = 2}, + [24] = {.index = 33, .length = 2}, + [25] = {.index = 35, .length = 2}, + [26] = {.index = 37, .length = 3}, + [27] = {.index = 40, .length = 1}, + [28] = {.index = 41, .length = 2}, + [29] = {.index = 43, .length = 1}, + [30] = {.index = 44, .length = 2}, + [31] = {.index = 46, .length = 1}, + [32] = {.index = 47, .length = 1}, + [33] = {.index = 48, .length = 2}, + [34] = {.index = 50, .length = 2}, + [35] = {.index = 52, .length = 1}, + [36] = {.index = 53, .length = 2}, + [37] = {.index = 55, .length = 1}, + [39] = {.index = 56, .length = 1}, + [40] = {.index = 57, .length = 2}, + [41] = {.index = 59, .length = 1}, + [42] = {.index = 60, .length = 2}, + [43] = {.index = 62, .length = 1}, + [44] = {.index = 63, .length = 2}, + [45] = {.index = 65, .length = 2}, + [46] = {.index = 67, .length = 2}, + [47] = {.index = 69, .length = 2}, + [48] = {.index = 30, .length = 1}, + [49] = {.index = 71, .length = 1}, + [50] = {.index = 72, .length = 2}, + [51] = {.index = 74, .length = 2}, + [52] = {.index = 76, .length = 1}, + [53] = {.index = 77, .length = 2}, + [54] = {.index = 79, .length = 2}, + [55] = {.index = 81, .length = 2}, + [56] = {.index = 81, .length = 2}, + [58] = {.index = 83, .length = 2}, + [59] = {.index = 85, .length = 2}, + [60] = {.index = 87, .length = 3}, + [61] = {.index = 90, .length = 3}, + [62] = {.index = 93, .length = 3}, + [63] = {.index = 96, .length = 2}, + [64] = {.index = 98, .length = 2}, + [65] = {.index = 100, .length = 3}, + [66] = {.index = 103, .length = 1}, + [67] = {.index = 104, .length = 3}, + [68] = {.index = 107, .length = 3}, + [69] = {.index = 110, .length = 2}, + [70] = {.index = 112, .length = 2}, + [71] = {.index = 114, .length = 3}, + [72] = {.index = 117, .length = 3}, + [73] = {.index = 120, .length = 3}, + [74] = {.index = 123, .length = 3}, + [75] = {.index = 31, .length = 2}, + [76] = {.index = 126, .length = 1}, + [77] = {.index = 127, .length = 3}, + [78] = {.index = 130, .length = 2}, + [79] = {.index = 132, .length = 2}, + [80] = {.index = 134, .length = 2}, + [81] = {.index = 136, .length = 3}, + [82] = {.index = 139, .length = 1}, + [83] = {.index = 140, .length = 2}, + [84] = {.index = 142, .length = 2}, + [85] = {.index = 144, .length = 4}, + [86] = {.index = 148, .length = 4}, + [87] = {.index = 152, .length = 4}, + [88] = {.index = 156, .length = 1}, + [89] = {.index = 157, .length = 1}, + [90] = {.index = 158, .length = 3}, + [91] = {.index = 161, .length = 2}, + [92] = {.index = 163, .length = 3}, + [93] = {.index = 166, .length = 3}, + [94] = {.index = 169, .length = 4}, + [96] = {.index = 173, .length = 4}, + [97] = {.index = 177, .length = 4}, + [98] = {.index = 181, .length = 3}, + [99] = {.index = 184, .length = 3}, + [100] = {.index = 187, .length = 2}, + [101] = {.index = 189, .length = 3}, + [102] = {.index = 192, .length = 5}, + [103] = {.index = 197, .length = 1}, + [104] = {.index = 198, .length = 1}, + [105] = {.index = 199, .length = 2}, + [106] = {.index = 201, .length = 2}, + [107] = {.index = 203, .length = 2}, + [108] = {.index = 205, .length = 3}, + [109] = {.index = 208, .length = 2}, + [110] = {.index = 210, .length = 3}, + [111] = {.index = 213, .length = 4}, + [112] = {.index = 217, .length = 4}, + [113] = {.index = 221, .length = 4}, + [115] = {.index = 225, .length = 4}, + [116] = {.index = 229, .length = 3}, + [117] = {.index = 232, .length = 2}, + [118] = {.index = 234, .length = 3}, + [119] = {.index = 237, .length = 3}, + [120] = {.index = 240, .length = 3}, + [121] = {.index = 243, .length = 4}, + [122] = {.index = 247, .length = 4}, + [123] = {.index = 251, .length = 4}, + [124] = {.index = 255, .length = 5}, + [125] = {.index = 260, .length = 5}, + [126] = {.index = 265, .length = 3}, + [127] = {.index = 268, .length = 3}, + [128] = {.index = 271, .length = 4}, + [129] = {.index = 275, .length = 3}, + [130] = {.index = 278, .length = 4}, + [131] = {.index = 282, .length = 4}, + [132] = {.index = 286, .length = 5}, + [133] = {.index = 291, .length = 5}, + [135] = {.index = 296, .length = 4}, + [136] = {.index = 300, .length = 4}, + [137] = {.index = 304, .length = 4}, + [138] = {.index = 308, .length = 5}, + [139] = {.index = 313, .length = 5}, +}; + +static const TSFieldMapEntry ts_field_map_entries[] = { + [0] = + {field_prefix, 0}, + {field_suffix, 1}, + [2] = + {field_string_content, 0}, + [3] = + {field_interpolation, 0}, + [4] = + {field_name, 1, .inherited = true}, + [5] = + {field_name, 0}, + [6] = + {field_argument, 1}, + [7] = + {field_value, 0}, + [8] = + {field_code, 1}, + [9] = + {field_argument, 1}, + {field_operator, 0}, + [11] = + {field_arguments, 1}, + {field_function, 0}, + [13] = + {field_operators, 1, .inherited = true}, + [14] = + {field_definition, 1}, + [15] = + {field_interpolation, 1, .inherited = true}, + {field_prefix, 0}, + {field_string_content, 1, .inherited = true}, + {field_suffix, 2}, + [19] = + {field_interpolation, 0, .inherited = true}, + {field_interpolation, 1, .inherited = true}, + {field_string_content, 0, .inherited = true}, + {field_string_content, 1, .inherited = true}, + [23] = + {field_name, 0}, + {field_name, 1, .inherited = true}, + [25] = + {field_argument, 2, .inherited = true}, + [26] = + {field_argument, 1}, + {field_argument, 2, .inherited = true}, + [28] = + {field_cause, 2}, + [29] = + {field_subject, 1}, + [30] = + {field_body, 2}, + [31] = + {field_name, 0}, + {field_value, 2}, + [33] = + {field_left, 0}, + {field_type, 2}, + [35] = + {field_left, 0}, + {field_right, 2}, + [37] = + {field_left, 0}, + {field_operator, 1}, + {field_right, 2}, + [40] = + {field_alias, 2}, + [41] = + {field_attribute, 2}, + {field_object, 0}, + [43] = + {field_operators, 0}, + [44] = + {field_operators, 0, .inherited = true}, + {field_operators, 1, .inherited = true}, + [46] = + {field_expression, 1}, + [47] = + {field_name, 1}, + [48] = + {field_name, 0, .inherited = true}, + {field_name, 1, .inherited = true}, + [50] = + {field_alias, 2}, + {field_name, 0}, + [52] = + {field_name, 3, .inherited = true}, + [53] = + {field_module_name, 1}, + {field_name, 3, .inherited = true}, + [55] = + {field_module_name, 1}, + [56] = + {field_body, 1}, + [57] = + {field_argument, 0, .inherited = true}, + {field_argument, 1, .inherited = true}, + [59] = + {field_cause, 3}, + [60] = + {field_condition, 1}, + {field_consequence, 3}, + [62] = + {field_alternative, 0}, + [63] = + {field_alternative, 3, .inherited = true}, + {field_subject, 1}, + [65] = + {field_subject, 1}, + {field_subject, 2, .inherited = true}, + [67] = + {field_subject, 0, .inherited = true}, + {field_subject, 1, .inherited = true}, + [69] = + {field_body, 3}, + {field_condition, 1}, + [71] = + {field_body, 3}, + [72] = + {field_body, 3}, + {field_name, 1}, + [74] = + {field_key, 0}, + {field_value, 2}, + [76] = + {field_type, 2}, + [77] = + {field_body, 3}, + {field_parameters, 1}, + [79] = + {field_subscript, 2}, + {field_value, 0}, + [81] = + {field_operators, 0}, + {field_operators, 1}, + [83] = + {field_expression, 1}, + {field_type_conversion, 2}, + [85] = + {field_expression, 1}, + {field_format_specifier, 2}, + [87] = + {field_alternative, 4}, + {field_condition, 1}, + {field_consequence, 3}, + [90] = + {field_alternative, 4, .inherited = true}, + {field_condition, 1}, + {field_consequence, 3}, + [93] = + {field_condition, 1}, + {field_consequence, 3}, + {field_consequence, 4}, + [96] = + {field_alternative, 4, .inherited = true}, + {field_subject, 1}, + [98] = + {field_alternative, 0, .inherited = true}, + {field_alternative, 1, .inherited = true}, + [100] = + {field_alternative, 4, .inherited = true}, + {field_subject, 1}, + {field_subject, 2, .inherited = true}, + [103] = + {field_body, 4}, + [104] = + {field_alternative, 4}, + {field_body, 3}, + {field_condition, 1}, + [107] = + {field_body, 3}, + {field_body, 4}, + {field_condition, 1}, + [110] = + {field_body, 2}, + {field_body, 3}, + [112] = + {field_body, 3}, + {field_body, 4}, + [114] = + {field_body, 4}, + {field_name, 1}, + {field_parameters, 2}, + [117] = + {field_body, 3}, + {field_body, 4}, + {field_name, 1}, + [120] = + {field_body, 4}, + {field_name, 1}, + {field_superclasses, 2}, + [123] = + {field_left, 0}, + {field_right, 4}, + {field_type, 2}, + [126] = + {field_subscript, 1}, + [127] = + {field_subscript, 2}, + {field_subscript, 3, .inherited = true}, + {field_value, 0}, + [130] = + {field_subscript, 0, .inherited = true}, + {field_subscript, 1, .inherited = true}, + [132] = + {field_expression, 1}, + {field_type_conversion, 3}, + [134] = + {field_expression, 1}, + {field_format_specifier, 3}, + [136] = + {field_expression, 1}, + {field_format_specifier, 3}, + {field_type_conversion, 2}, + [139] = + {field_name, 4, .inherited = true}, + [140] = + {field_module_name, 1}, + {field_name, 4, .inherited = true}, + [142] = + {field_left, 1}, + {field_right, 3}, + [144] = + {field_alternative, 4, .inherited = true}, + {field_alternative, 5}, + {field_condition, 1}, + {field_consequence, 3}, + [148] = + {field_alternative, 5}, + {field_condition, 1}, + {field_consequence, 3}, + {field_consequence, 4}, + [152] = + {field_alternative, 5, .inherited = true}, + {field_condition, 1}, + {field_consequence, 3}, + {field_consequence, 4}, + [156] = + {field_neg, 0}, + [157] = + {field_maybe_star, 0}, + [158] = + {field_alternative, 5, .inherited = true}, + {field_subject, 1}, + {field_subject, 2, .inherited = true}, + [161] = + {field_body, 4}, + {field_body, 5}, + [163] = + {field_body, 5}, + {field_name, 2}, + {field_parameters, 3}, + [166] = + {field_body, 5}, + {field_left, 1}, + {field_right, 3}, + [169] = + {field_alternative, 5}, + {field_body, 3}, + {field_body, 4}, + {field_condition, 1}, + [173] = + {field_body, 4}, + {field_body, 5}, + {field_name, 1}, + {field_parameters, 2}, + [177] = + {field_body, 4}, + {field_body, 5}, + {field_name, 1}, + {field_superclasses, 2}, + [181] = + {field_name, 0}, + {field_type, 2}, + {field_value, 4}, + [184] = + {field_expression, 1}, + {field_format_specifier, 4}, + {field_type_conversion, 3}, + [187] = + {field_left, 2}, + {field_right, 4}, + [189] = + {field_left, 1}, + {field_right, 3}, + {field_right, 4}, + [192] = + {field_alternative, 5, .inherited = true}, + {field_alternative, 6}, + {field_condition, 1}, + {field_consequence, 3}, + {field_consequence, 4}, + [197] = + {field_case_pattern, 1}, + [198] = + {field_pattern, 1}, + [199] = + {field_consequence, 3}, + {field_pattern, 1}, + [201] = + {field_pattern, 0, .inherited = true}, + {field_pattern, 1, .inherited = true}, + [203] = + {field_identifier, 2}, + {field_or_pattern, 0}, + [205] = + {field_imaginary_component, 2}, + {field_real_component, 0}, + {field_sign, 1}, + [208] = + {field_maybe_sequence, 2}, + {field_maybe_star, 0}, + [210] = + {field_body, 6}, + {field_left, 2}, + {field_right, 4}, + [213] = + {field_body, 5}, + {field_body, 6}, + {field_name, 2}, + {field_parameters, 3}, + [217] = + {field_alternative, 6}, + {field_body, 5}, + {field_left, 1}, + {field_right, 3}, + [221] = + {field_body, 5}, + {field_body, 6}, + {field_left, 1}, + {field_right, 3}, + [225] = + {field_body, 6}, + {field_name, 1}, + {field_parameters, 2}, + {field_return_type, 4}, + [229] = + {field_left, 2}, + {field_right, 4}, + {field_right, 5}, + [232] = + {field_consequence, 4}, + {field_pattern, 1}, + [234] = + {field_consequence, 3}, + {field_consequence, 4}, + {field_pattern, 1}, + [237] = + {field_consequence, 4}, + {field_guard, 2}, + {field_pattern, 1}, + [240] = + {field_consequence, 4}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [243] = + {field_alternative, 7}, + {field_body, 6}, + {field_left, 2}, + {field_right, 4}, + [247] = + {field_body, 6}, + {field_body, 7}, + {field_left, 2}, + {field_right, 4}, + [251] = + {field_body, 7}, + {field_name, 2}, + {field_parameters, 3}, + {field_return_type, 5}, + [255] = + {field_alternative, 7}, + {field_body, 5}, + {field_body, 6}, + {field_left, 1}, + {field_right, 3}, + [260] = + {field_body, 6}, + {field_body, 7}, + {field_name, 1}, + {field_parameters, 2}, + {field_return_type, 4}, + [265] = + {field_consequence, 4}, + {field_consequence, 5}, + {field_pattern, 1}, + [268] = + {field_consequence, 5}, + {field_guard, 3}, + {field_pattern, 1}, + [271] = + {field_consequence, 4}, + {field_consequence, 5}, + {field_guard, 2}, + {field_pattern, 1}, + [275] = + {field_consequence, 5}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [278] = + {field_consequence, 4}, + {field_consequence, 5}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [282] = + {field_consequence, 5}, + {field_guard, 3}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [286] = + {field_alternative, 8}, + {field_body, 6}, + {field_body, 7}, + {field_left, 2}, + {field_right, 4}, + [291] = + {field_body, 7}, + {field_body, 8}, + {field_name, 2}, + {field_parameters, 3}, + {field_return_type, 5}, + [296] = + {field_consequence, 5}, + {field_consequence, 6}, + {field_guard, 3}, + {field_pattern, 1}, + [300] = + {field_consequence, 5}, + {field_consequence, 6}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [304] = + {field_consequence, 6}, + {field_guard, 4}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [308] = + {field_consequence, 5}, + {field_consequence, 6}, + {field_guard, 3}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, + [313] = + {field_consequence, 6}, + {field_consequence, 7}, + {field_guard, 4}, + {field_pattern, 1}, + {field_pattern, 2, .inherited = true}, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, + [1] = { + [0] = sym_identifier, + }, + [7] = { + [1] = sym_identifier, + }, + [27] = { + [2] = alias_sym_as_pattern_target, + }, + [38] = { + [1] = sym_parenthesized_expression, + }, + [42] = { + [3] = sym_block, + }, + [47] = { + [3] = sym_block, + }, + [48] = { + [2] = sym_block, + }, + [49] = { + [3] = sym_block, + }, + [50] = { + [3] = sym_block, + }, + [55] = { + [0] = anon_alias_sym_notin, + [1] = anon_alias_sym_notin, + }, + [56] = { + [0] = anon_alias_sym_isnot, + [1] = anon_alias_sym_isnot, + }, + [57] = { + [0] = alias_sym_format_expression, + }, + [60] = { + [3] = sym_block, + }, + [61] = { + [3] = sym_block, + }, + [66] = { + [4] = sym_block, + }, + [67] = { + [3] = sym_block, + }, + [71] = { + [4] = sym_block, + }, + [73] = { + [4] = sym_block, + }, + [75] = { + [0] = sym_identifier, + }, + [85] = { + [3] = sym_block, + }, + [92] = { + [5] = sym_block, + }, + [93] = { + [5] = sym_block, + }, + [95] = { + [2] = sym_block, + }, + [105] = { + [3] = sym_block, + }, + [110] = { + [6] = sym_block, + }, + [112] = { + [5] = sym_block, + }, + [114] = { + [3] = sym_block, + }, + [115] = { + [6] = sym_block, + }, + [117] = { + [4] = sym_block, + }, + [119] = { + [4] = sym_block, + }, + [120] = { + [4] = sym_block, + }, + [121] = { + [6] = sym_block, + }, + [123] = { + [7] = sym_block, + }, + [127] = { + [5] = sym_block, + }, + [129] = { + [5] = sym_block, + }, + [131] = { + [5] = sym_block, + }, + [134] = { + [5] = sym_block, + }, + [137] = { + [6] = sym_block, + }, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + sym__simple_statements, 2, + sym__simple_statements, + sym_block, + sym_parenthesized_list_splat, 2, + sym_parenthesized_list_splat, + sym_parenthesized_expression, + sym_expression, 2, + sym_expression, + alias_sym_as_pattern_target, + sym_interpolation, 2, + sym_interpolation, + alias_sym_format_expression, + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 5, + [6] = 6, + [7] = 7, + [8] = 8, + [9] = 8, + [10] = 6, + [11] = 11, + [12] = 12, + [13] = 5, + [14] = 14, + [15] = 15, + [16] = 16, + [17] = 17, + [18] = 18, + [19] = 19, + [20] = 11, + [21] = 12, + [22] = 22, + [23] = 23, + [24] = 24, + [25] = 25, + [26] = 26, + [27] = 27, + [28] = 23, + [29] = 29, + [30] = 17, + [31] = 31, + [32] = 32, + [33] = 33, + [34] = 34, + [35] = 35, + [36] = 36, + [37] = 37, + [38] = 38, + [39] = 39, + [40] = 15, + [41] = 41, + [42] = 2, + [43] = 41, + [44] = 16, + [45] = 19, + [46] = 14, + [47] = 7, + [48] = 4, + [49] = 39, + [50] = 22, + [51] = 38, + [52] = 24, + [53] = 25, + [54] = 54, + [55] = 26, + [56] = 27, + [57] = 29, + [58] = 3, + [59] = 37, + [60] = 31, + [61] = 32, + [62] = 54, + [63] = 36, + [64] = 33, + [65] = 18, + [66] = 34, + [67] = 35, + [68] = 68, + [69] = 68, + [70] = 68, + [71] = 71, + [72] = 72, + [73] = 68, + [74] = 68, + [75] = 68, + [76] = 68, + [77] = 72, + [78] = 78, + [79] = 79, + [80] = 79, + [81] = 81, + [82] = 82, + [83] = 83, + [84] = 84, + [85] = 85, + [86] = 86, + [87] = 87, + [88] = 88, + [89] = 89, + [90] = 87, + [91] = 91, + [92] = 92, + [93] = 93, + [94] = 84, + [95] = 81, + [96] = 83, + [97] = 97, + [98] = 98, + [99] = 99, + [100] = 100, + [101] = 101, + [102] = 102, + [103] = 103, + [104] = 82, + [105] = 105, + [106] = 106, + [107] = 107, + [108] = 103, + [109] = 105, + [110] = 110, + [111] = 89, + [112] = 112, + [113] = 93, + [114] = 91, + [115] = 115, + [116] = 110, + [117] = 106, + [118] = 86, + [119] = 112, + [120] = 120, + [121] = 88, + [122] = 122, + [123] = 123, + [124] = 124, + [125] = 100, + [126] = 99, + [127] = 127, + [128] = 115, + [129] = 120, + [130] = 101, + [131] = 131, + [132] = 132, + [133] = 127, + [134] = 132, + [135] = 131, + [136] = 98, + [137] = 97, + [138] = 92, + [139] = 124, + [140] = 123, + [141] = 107, + [142] = 122, + [143] = 85, + [144] = 102, + [145] = 145, + [146] = 146, + [147] = 146, + [148] = 145, + [149] = 145, + [150] = 145, + [151] = 146, + [152] = 145, + [153] = 146, + [154] = 146, + [155] = 146, + [156] = 145, + [157] = 145, + [158] = 146, + [159] = 159, + [160] = 160, + [161] = 161, + [162] = 162, + [163] = 162, + [164] = 160, + [165] = 165, + [166] = 165, + [167] = 162, + [168] = 162, + [169] = 169, + [170] = 162, + [171] = 169, + [172] = 165, + [173] = 162, + [174] = 162, + [175] = 162, + [176] = 165, + [177] = 160, + [178] = 160, + [179] = 165, + [180] = 161, + [181] = 181, + [182] = 165, + [183] = 165, + [184] = 165, + [185] = 185, + [186] = 161, + [187] = 187, + [188] = 188, + [189] = 189, + [190] = 190, + [191] = 191, + [192] = 190, + [193] = 191, + [194] = 190, + [195] = 190, + [196] = 191, + [197] = 191, + [198] = 191, + [199] = 190, + [200] = 200, + [201] = 191, + [202] = 190, + [203] = 191, + [204] = 200, + [205] = 191, + [206] = 206, + [207] = 206, + [208] = 206, + [209] = 206, + [210] = 206, + [211] = 206, + [212] = 206, + [213] = 206, + [214] = 214, + [215] = 215, + [216] = 216, + [217] = 216, + [218] = 218, + [219] = 219, + [220] = 218, + [221] = 218, + [222] = 218, + [223] = 218, + [224] = 218, + [225] = 218, + [226] = 218, + [227] = 227, + [228] = 228, + [229] = 229, + [230] = 228, + [231] = 228, + [232] = 232, + [233] = 229, + [234] = 234, + [235] = 229, + [236] = 234, + [237] = 237, + [238] = 228, + [239] = 232, + [240] = 229, + [241] = 234, + [242] = 242, + [243] = 243, + [244] = 243, + [245] = 237, + [246] = 228, + [247] = 228, + [248] = 237, + [249] = 229, + [250] = 234, + [251] = 232, + [252] = 237, + [253] = 243, + [254] = 242, + [255] = 242, + [256] = 243, + [257] = 242, + [258] = 237, + [259] = 228, + [260] = 243, + [261] = 232, + [262] = 243, + [263] = 242, + [264] = 229, + [265] = 229, + [266] = 242, + [267] = 237, + [268] = 237, + [269] = 234, + [270] = 228, + [271] = 234, + [272] = 229, + [273] = 242, + [274] = 232, + [275] = 237, + [276] = 276, + [277] = 243, + [278] = 242, + [279] = 243, + [280] = 234, + [281] = 234, + [282] = 232, + [283] = 283, + [284] = 284, + [285] = 283, + [286] = 181, + [287] = 284, + [288] = 185, + [289] = 289, + [290] = 284, + [291] = 283, + [292] = 292, + [293] = 293, + [294] = 293, + [295] = 295, + [296] = 296, + [297] = 297, + [298] = 295, + [299] = 299, + [300] = 295, + [301] = 301, + [302] = 301, + [303] = 303, + [304] = 299, + [305] = 293, + [306] = 303, + [307] = 299, + [308] = 308, + [309] = 303, + [310] = 301, + [311] = 311, + [312] = 311, + [313] = 313, + [314] = 314, + [315] = 311, + [316] = 181, + [317] = 317, + [318] = 276, + [319] = 313, + [320] = 313, + [321] = 313, + [322] = 276, + [323] = 323, + [324] = 311, + [325] = 313, + [326] = 311, + [327] = 327, + [328] = 313, + [329] = 276, + [330] = 311, + [331] = 314, + [332] = 313, + [333] = 313, + [334] = 311, + [335] = 311, + [336] = 336, + [337] = 337, + [338] = 338, + [339] = 337, + [340] = 336, + [341] = 341, + [342] = 336, + [343] = 336, + [344] = 185, + [345] = 317, + [346] = 336, + [347] = 347, + [348] = 337, + [349] = 347, + [350] = 336, + [351] = 347, + [352] = 337, + [353] = 353, + [354] = 185, + [355] = 337, + [356] = 347, + [357] = 347, + [358] = 296, + [359] = 297, + [360] = 347, + [361] = 337, + [362] = 362, + [363] = 336, + [364] = 336, + [365] = 365, + [366] = 337, + [367] = 347, + [368] = 337, + [369] = 181, + [370] = 347, + [371] = 297, + [372] = 372, + [373] = 373, + [374] = 374, + [375] = 373, + [376] = 376, + [377] = 377, + [378] = 372, + [379] = 379, + [380] = 380, + [381] = 381, + [382] = 382, + [383] = 383, + [384] = 384, + [385] = 385, + [386] = 386, + [387] = 387, + [388] = 388, + [389] = 377, + [390] = 390, + [391] = 372, + [392] = 392, + [393] = 380, + [394] = 386, + [395] = 380, + [396] = 396, + [397] = 380, + [398] = 398, + [399] = 297, + [400] = 374, + [401] = 380, + [402] = 296, + [403] = 383, + [404] = 404, + [405] = 380, + [406] = 406, + [407] = 296, + [408] = 377, + [409] = 409, + [410] = 380, + [411] = 411, + [412] = 376, + [413] = 413, + [414] = 414, + [415] = 384, + [416] = 380, + [417] = 409, + [418] = 413, + [419] = 413, + [420] = 382, + [421] = 421, + [422] = 386, + [423] = 409, + [424] = 424, + [425] = 425, + [426] = 426, + [427] = 427, + [428] = 428, + [429] = 429, + [430] = 430, + [431] = 431, + [432] = 432, + [433] = 296, + [434] = 434, + [435] = 435, + [436] = 436, + [437] = 297, + [438] = 438, + [439] = 439, + [440] = 440, + [441] = 441, + [442] = 438, + [443] = 443, + [444] = 444, + [445] = 427, + [446] = 443, + [447] = 447, + [448] = 448, + [449] = 434, + [450] = 450, + [451] = 451, + [452] = 439, + [453] = 453, + [454] = 451, + [455] = 432, + [456] = 430, + [457] = 457, + [458] = 458, + [459] = 459, + [460] = 460, + [461] = 461, + [462] = 462, + [463] = 463, + [464] = 464, + [465] = 465, + [466] = 466, + [467] = 467, + [468] = 468, + [469] = 469, + [470] = 466, + [471] = 465, + [472] = 472, + [473] = 473, + [474] = 474, + [475] = 475, + [476] = 476, + [477] = 477, + [478] = 478, + [479] = 459, + [480] = 480, + [481] = 458, + [482] = 482, + [483] = 483, + [484] = 484, + [485] = 480, + [486] = 484, + [487] = 465, + [488] = 458, + [489] = 489, + [490] = 489, + [491] = 491, + [492] = 458, + [493] = 484, + [494] = 465, + [495] = 482, + [496] = 475, + [497] = 472, + [498] = 482, + [499] = 475, + [500] = 472, + [501] = 459, + [502] = 466, + [503] = 457, + [504] = 504, + [505] = 489, + [506] = 459, + [507] = 507, + [508] = 508, + [509] = 509, + [510] = 510, + [511] = 480, + [512] = 512, + [513] = 513, + [514] = 514, + [515] = 515, + [516] = 489, + [517] = 463, + [518] = 474, + [519] = 519, + [520] = 514, + [521] = 458, + [522] = 484, + [523] = 482, + [524] = 489, + [525] = 475, + [526] = 489, + [527] = 504, + [528] = 489, + [529] = 510, + [530] = 472, + [531] = 513, + [532] = 465, + [533] = 512, + [534] = 480, + [535] = 466, + [536] = 474, + [537] = 480, + [538] = 473, + [539] = 539, + [540] = 540, + [541] = 540, + [542] = 542, + [543] = 460, + [544] = 466, + [545] = 472, + [546] = 542, + [547] = 547, + [548] = 475, + [549] = 482, + [550] = 484, + [551] = 478, + [552] = 552, + [553] = 553, + [554] = 466, + [555] = 484, + [556] = 482, + [557] = 475, + [558] = 472, + [559] = 508, + [560] = 466, + [561] = 458, + [562] = 512, + [563] = 461, + [564] = 466, + [565] = 465, + [566] = 507, + [567] = 460, + [568] = 474, + [569] = 480, + [570] = 472, + [571] = 469, + [572] = 459, + [573] = 512, + [574] = 478, + [575] = 575, + [576] = 460, + [577] = 458, + [578] = 578, + [579] = 472, + [580] = 465, + [581] = 581, + [582] = 475, + [583] = 468, + [584] = 484, + [585] = 489, + [586] = 482, + [587] = 482, + [588] = 484, + [589] = 480, + [590] = 458, + [591] = 480, + [592] = 465, + [593] = 475, + [594] = 467, + [595] = 595, + [596] = 441, + [597] = 597, + [598] = 595, + [599] = 599, + [600] = 600, + [601] = 601, + [602] = 602, + [603] = 453, + [604] = 450, + [605] = 424, + [606] = 602, + [607] = 599, + [608] = 426, + [609] = 436, + [610] = 601, + [611] = 597, + [612] = 600, + [613] = 440, + [614] = 614, + [615] = 615, + [616] = 599, + [617] = 617, + [618] = 618, + [619] = 595, + [620] = 620, + [621] = 600, + [622] = 622, + [623] = 602, + [624] = 624, + [625] = 625, + [626] = 600, + [627] = 595, + [628] = 614, + [629] = 629, + [630] = 630, + [631] = 631, + [632] = 629, + [633] = 633, + [634] = 615, + [635] = 635, + [636] = 601, + [637] = 630, + [638] = 599, + [639] = 602, + [640] = 602, + [641] = 641, + [642] = 642, + [643] = 643, + [644] = 599, + [645] = 600, + [646] = 617, + [647] = 647, + [648] = 624, + [649] = 649, + [650] = 625, + [651] = 601, + [652] = 652, + [653] = 595, + [654] = 649, + [655] = 601, + [656] = 635, + [657] = 631, + [658] = 214, + [659] = 643, + [660] = 642, + [661] = 601, + [662] = 600, + [663] = 599, + [664] = 647, + [665] = 215, + [666] = 633, + [667] = 618, + [668] = 595, + [669] = 602, + [670] = 641, + [671] = 620, + [672] = 622, + [673] = 652, + [674] = 674, + [675] = 675, + [676] = 676, + [677] = 677, + [678] = 678, + [679] = 679, + [680] = 678, + [681] = 675, + [682] = 682, + [683] = 677, + [684] = 684, + [685] = 685, + [686] = 685, + [687] = 687, + [688] = 674, + [689] = 682, + [690] = 687, + [691] = 679, + [692] = 676, + [693] = 693, + [694] = 684, + [695] = 693, + [696] = 696, + [697] = 697, + [698] = 698, + [699] = 699, + [700] = 700, + [701] = 701, + [702] = 702, + [703] = 703, + [704] = 704, + [705] = 705, + [706] = 706, + [707] = 707, + [708] = 708, + [709] = 709, + [710] = 710, + [711] = 711, + [712] = 702, + [713] = 713, + [714] = 698, + [715] = 715, + [716] = 716, + [717] = 717, + [718] = 718, + [719] = 719, + [720] = 720, + [721] = 721, + [722] = 722, + [723] = 696, + [724] = 724, + [725] = 725, + [726] = 726, + [727] = 727, + [728] = 728, + [729] = 700, + [730] = 699, + [731] = 701, + [732] = 732, + [733] = 733, + [734] = 734, + [735] = 703, + [736] = 704, + [737] = 713, + [738] = 705, + [739] = 739, + [740] = 706, + [741] = 741, + [742] = 707, + [743] = 708, + [744] = 744, + [745] = 709, + [746] = 710, + [747] = 711, + [748] = 741, + [749] = 739, + [750] = 724, + [751] = 697, + [752] = 734, + [753] = 715, + [754] = 717, + [755] = 732, + [756] = 718, + [757] = 728, + [758] = 719, + [759] = 720, + [760] = 727, + [761] = 721, + [762] = 722, + [763] = 725, + [764] = 716, + [765] = 726, + [766] = 733, + [767] = 744, + [768] = 768, + [769] = 769, + [770] = 770, + [771] = 771, + [772] = 772, + [773] = 773, + [774] = 774, + [775] = 773, + [776] = 771, + [777] = 777, + [778] = 778, + [779] = 779, + [780] = 780, + [781] = 779, + [782] = 782, + [783] = 783, + [784] = 784, + [785] = 785, + [786] = 786, + [787] = 787, + [788] = 788, + [789] = 789, + [790] = 790, + [791] = 791, + [792] = 792, + [793] = 793, + [794] = 769, + [795] = 787, + [796] = 796, + [797] = 797, + [798] = 793, + [799] = 799, + [800] = 792, + [801] = 785, + [802] = 802, + [803] = 786, + [804] = 804, + [805] = 805, + [806] = 806, + [807] = 806, + [808] = 808, + [809] = 809, + [810] = 810, + [811] = 784, + [812] = 805, + [813] = 813, + [814] = 770, + [815] = 815, + [816] = 802, + [817] = 817, + [818] = 818, + [819] = 810, + [820] = 809, + [821] = 813, + [822] = 822, + [823] = 823, + [824] = 824, + [825] = 804, + [826] = 779, + [827] = 824, + [828] = 774, + [829] = 815, + [830] = 817, + [831] = 831, + [832] = 808, + [833] = 783, + [834] = 822, + [835] = 788, + [836] = 789, + [837] = 771, + [838] = 790, + [839] = 791, + [840] = 796, + [841] = 831, + [842] = 823, + [843] = 818, + [844] = 768, + [845] = 797, + [846] = 799, + [847] = 772, + [848] = 777, + [849] = 778, + [850] = 780, + [851] = 782, + [852] = 852, + [853] = 852, + [854] = 852, + [855] = 852, + [856] = 856, + [857] = 856, + [858] = 858, + [859] = 858, + [860] = 860, + [861] = 861, + [862] = 862, + [863] = 861, + [864] = 858, + [865] = 860, + [866] = 862, + [867] = 867, + [868] = 867, + [869] = 867, + [870] = 862, + [871] = 867, + [872] = 867, + [873] = 867, + [874] = 861, + [875] = 867, + [876] = 860, + [877] = 867, + [878] = 453, + [879] = 879, + [880] = 880, + [881] = 881, + [882] = 879, + [883] = 883, + [884] = 436, + [885] = 885, + [886] = 886, + [887] = 885, + [888] = 888, + [889] = 888, + [890] = 862, + [891] = 891, + [892] = 892, + [893] = 893, + [894] = 894, + [895] = 895, + [896] = 896, + [897] = 424, + [898] = 898, + [899] = 899, + [900] = 880, + [901] = 901, + [902] = 902, + [903] = 903, + [904] = 904, + [905] = 905, + [906] = 906, + [907] = 441, + [908] = 881, + [909] = 879, + [910] = 910, + [911] = 895, + [912] = 912, + [913] = 895, + [914] = 879, + [915] = 912, + [916] = 881, + [917] = 880, + [918] = 891, + [919] = 910, + [920] = 906, + [921] = 885, + [922] = 896, + [923] = 896, + [924] = 906, + [925] = 910, + [926] = 912, + [927] = 912, + [928] = 895, + [929] = 879, + [930] = 888, + [931] = 910, + [932] = 858, + [933] = 860, + [934] = 906, + [935] = 935, + [936] = 894, + [937] = 883, + [938] = 888, + [939] = 891, + [940] = 881, + [941] = 861, + [942] = 880, + [943] = 426, + [944] = 901, + [945] = 935, + [946] = 862, + [947] = 883, + [948] = 948, + [949] = 885, + [950] = 894, + [951] = 905, + [952] = 898, + [953] = 885, + [954] = 904, + [955] = 896, + [956] = 860, + [957] = 905, + [958] = 903, + [959] = 858, + [960] = 885, + [961] = 861, + [962] = 450, + [963] = 440, + [964] = 896, + [965] = 906, + [966] = 910, + [967] = 891, + [968] = 912, + [969] = 891, + [970] = 895, + [971] = 879, + [972] = 881, + [973] = 880, + [974] = 891, + [975] = 892, + [976] = 860, + [977] = 893, + [978] = 886, + [979] = 902, + [980] = 892, + [981] = 858, + [982] = 898, + [983] = 894, + [984] = 893, + [985] = 894, + [986] = 861, + [987] = 891, + [988] = 948, + [989] = 948, + [990] = 899, + [991] = 901, + [992] = 902, + [993] = 903, + [994] = 904, + [995] = 894, + [996] = 935, + [997] = 894, + [998] = 891, + [999] = 880, + [1000] = 881, + [1001] = 880, + [1002] = 881, + [1003] = 879, + [1004] = 895, + [1005] = 880, + [1006] = 895, + [1007] = 881, + [1008] = 879, + [1009] = 895, + [1010] = 862, + [1011] = 912, + [1012] = 896, + [1013] = 906, + [1014] = 910, + [1015] = 912, + [1016] = 910, + [1017] = 906, + [1018] = 896, + [1019] = 912, + [1020] = 899, + [1021] = 910, + [1022] = 906, + [1023] = 896, + [1024] = 894, + [1025] = 885, + [1026] = 885, + [1027] = 862, + [1028] = 892, + [1029] = 1029, + [1030] = 899, + [1031] = 901, + [1032] = 893, + [1033] = 892, + [1034] = 905, + [1035] = 858, + [1036] = 904, + [1037] = 903, + [1038] = 861, + [1039] = 902, + [1040] = 901, + [1041] = 899, + [1042] = 1029, + [1043] = 862, + [1044] = 935, + [1045] = 883, + [1046] = 948, + [1047] = 860, + [1048] = 893, + [1049] = 892, + [1050] = 1050, + [1051] = 1051, + [1052] = 898, + [1053] = 883, + [1054] = 935, + [1055] = 1029, + [1056] = 1050, + [1057] = 858, + [1058] = 1051, + [1059] = 1059, + [1060] = 898, + [1061] = 444, + [1062] = 1050, + [1063] = 1051, + [1064] = 948, + [1065] = 902, + [1066] = 1059, + [1067] = 1067, + [1068] = 1068, + [1069] = 893, + [1070] = 899, + [1071] = 901, + [1072] = 902, + [1073] = 903, + [1074] = 904, + [1075] = 905, + [1076] = 898, + [1077] = 429, + [1078] = 948, + [1079] = 861, + [1080] = 905, + [1081] = 904, + [1082] = 903, + [1083] = 883, + [1084] = 935, + [1085] = 1059, + [1086] = 860, + [1087] = 1087, + [1088] = 1088, + [1089] = 453, + [1090] = 1090, + [1091] = 898, + [1092] = 948, + [1093] = 1093, + [1094] = 1094, + [1095] = 1095, + [1096] = 1096, + [1097] = 1097, + [1098] = 424, + [1099] = 426, + [1100] = 436, + [1101] = 1101, + [1102] = 1094, + [1103] = 453, + [1104] = 1096, + [1105] = 450, + [1106] = 1106, + [1107] = 1107, + [1108] = 1108, + [1109] = 440, + [1110] = 1110, + [1111] = 1111, + [1112] = 1112, + [1113] = 1113, + [1114] = 1114, + [1115] = 1115, + [1116] = 1116, + [1117] = 1117, + [1118] = 1050, + [1119] = 1051, + [1120] = 1120, + [1121] = 450, + [1122] = 905, + [1123] = 904, + [1124] = 903, + [1125] = 1107, + [1126] = 902, + [1127] = 901, + [1128] = 899, + [1129] = 424, + [1130] = 893, + [1131] = 892, + [1132] = 426, + [1133] = 436, + [1134] = 441, + [1135] = 1095, + [1136] = 883, + [1137] = 1090, + [1138] = 1093, + [1139] = 1097, + [1140] = 935, + [1141] = 1120, + [1142] = 1088, + [1143] = 1113, + [1144] = 440, + [1145] = 444, + [1146] = 429, + [1147] = 1087, + [1148] = 898, + [1149] = 948, + [1150] = 1110, + [1151] = 519, + [1152] = 1059, + [1153] = 1153, + [1154] = 1059, + [1155] = 1051, + [1156] = 1117, + [1157] = 1050, + [1158] = 1101, + [1159] = 444, + [1160] = 1110, + [1161] = 1050, + [1162] = 1106, + [1163] = 1051, + [1164] = 1164, + [1165] = 1165, + [1166] = 905, + [1167] = 904, + [1168] = 903, + [1169] = 1108, + [1170] = 902, + [1171] = 429, + [1172] = 901, + [1173] = 1094, + [1174] = 553, + [1175] = 1059, + [1176] = 1096, + [1177] = 899, + [1178] = 1029, + [1179] = 1153, + [1180] = 509, + [1181] = 893, + [1182] = 1087, + [1183] = 1112, + [1184] = 892, + [1185] = 441, + [1186] = 1088, + [1187] = 1116, + [1188] = 1115, + [1189] = 1114, + [1190] = 1113, + [1191] = 1029, + [1192] = 1120, + [1193] = 1097, + [1194] = 1093, + [1195] = 1090, + [1196] = 1095, + [1197] = 1153, + [1198] = 1107, + [1199] = 1165, + [1200] = 1164, + [1201] = 1029, + [1202] = 883, + [1203] = 935, + [1204] = 1108, + [1205] = 1106, + [1206] = 1164, + [1207] = 1165, + [1208] = 1117, + [1209] = 1112, + [1210] = 1111, + [1211] = 1111, + [1212] = 1101, + [1213] = 1116, + [1214] = 1115, + [1215] = 1114, + [1216] = 1117, + [1217] = 1059, + [1218] = 1088, + [1219] = 1165, + [1220] = 1164, + [1221] = 1107, + [1222] = 1068, + [1223] = 1067, + [1224] = 1117, + [1225] = 1051, + [1226] = 1050, + [1227] = 1116, + [1228] = 1115, + [1229] = 1114, + [1230] = 1120, + [1231] = 453, + [1232] = 1097, + [1233] = 450, + [1234] = 1110, + [1235] = 1094, + [1236] = 1096, + [1237] = 424, + [1238] = 426, + [1239] = 1093, + [1240] = 1090, + [1241] = 1095, + [1242] = 436, + [1243] = 1101, + [1244] = 1106, + [1245] = 1108, + [1246] = 1113, + [1247] = 1095, + [1248] = 1090, + [1249] = 1093, + [1250] = 1097, + [1251] = 1120, + [1252] = 1088, + [1253] = 440, + [1254] = 1111, + [1255] = 1153, + [1256] = 1107, + [1257] = 1112, + [1258] = 1087, + [1259] = 1113, + [1260] = 1087, + [1261] = 1114, + [1262] = 1115, + [1263] = 1116, + [1264] = 509, + [1265] = 1153, + [1266] = 1029, + [1267] = 1117, + [1268] = 1059, + [1269] = 1112, + [1270] = 1111, + [1271] = 553, + [1272] = 519, + [1273] = 1110, + [1274] = 1107, + [1275] = 1108, + [1276] = 441, + [1277] = 1164, + [1278] = 1165, + [1279] = 1095, + [1280] = 1090, + [1281] = 1116, + [1282] = 1115, + [1283] = 1114, + [1284] = 1113, + [1285] = 1093, + [1286] = 1097, + [1287] = 1120, + [1288] = 1088, + [1289] = 1112, + [1290] = 1111, + [1291] = 1050, + [1292] = 1106, + [1293] = 1101, + [1294] = 1051, + [1295] = 1087, + [1296] = 509, + [1297] = 1153, + [1298] = 553, + [1299] = 1096, + [1300] = 519, + [1301] = 1094, + [1302] = 1110, + [1303] = 1165, + [1304] = 1164, + [1305] = 1094, + [1306] = 1029, + [1307] = 1108, + [1308] = 1096, + [1309] = 1106, + [1310] = 1101, + [1311] = 1107, + [1312] = 1090, + [1313] = 1097, + [1314] = 1120, + [1315] = 1106, + [1316] = 1088, + [1317] = 1108, + [1318] = 1087, + [1319] = 440, + [1320] = 1320, + [1321] = 1153, + [1322] = 539, + [1323] = 1323, + [1324] = 1165, + [1325] = 1164, + [1326] = 1111, + [1327] = 1110, + [1328] = 453, + [1329] = 450, + [1330] = 1094, + [1331] = 1096, + [1332] = 424, + [1333] = 1112, + [1334] = 426, + [1335] = 436, + [1336] = 1101, + [1337] = 1106, + [1338] = 1108, + [1339] = 1339, + [1340] = 519, + [1341] = 1341, + [1342] = 440, + [1343] = 1111, + [1344] = 1112, + [1345] = 1341, + [1346] = 1113, + [1347] = 1114, + [1348] = 1113, + [1349] = 1110, + [1350] = 1115, + [1351] = 1116, + [1352] = 1117, + [1353] = 1101, + [1354] = 425, + [1355] = 435, + [1356] = 1339, + [1357] = 1320, + [1358] = 436, + [1359] = 1093, + [1360] = 425, + [1361] = 1107, + [1362] = 441, + [1363] = 435, + [1364] = 1095, + [1365] = 1090, + [1366] = 1114, + [1367] = 1115, + [1368] = 1095, + [1369] = 1116, + [1370] = 1093, + [1371] = 441, + [1372] = 1165, + [1373] = 553, + [1374] = 1374, + [1375] = 426, + [1376] = 1164, + [1377] = 1097, + [1378] = 1117, + [1379] = 509, + [1380] = 1120, + [1381] = 424, + [1382] = 1382, + [1383] = 453, + [1384] = 1153, + [1385] = 450, + [1386] = 1088, + [1387] = 1096, + [1388] = 1094, + [1389] = 1087, + [1390] = 539, + [1391] = 539, + [1392] = 1392, + [1393] = 1393, + [1394] = 1394, + [1395] = 1394, + [1396] = 1396, + [1397] = 1394, + [1398] = 1382, + [1399] = 1396, + [1400] = 1396, + [1401] = 1396, + [1402] = 1394, + [1403] = 1403, + [1404] = 1393, + [1405] = 1392, + [1406] = 1403, + [1407] = 1403, + [1408] = 1408, + [1409] = 1409, + [1410] = 1392, + [1411] = 1393, + [1412] = 1403, + [1413] = 1409, + [1414] = 1414, + [1415] = 1414, + [1416] = 1414, + [1417] = 1417, + [1418] = 1418, + [1419] = 1419, + [1420] = 1420, + [1421] = 1420, + [1422] = 1420, + [1423] = 1420, + [1424] = 553, + [1425] = 509, + [1426] = 1323, + [1427] = 1374, + [1428] = 539, + [1429] = 519, + [1430] = 1430, + [1431] = 1430, + [1432] = 1432, + [1433] = 1432, + [1434] = 1430, + [1435] = 1432, + [1436] = 1430, + [1437] = 1437, + [1438] = 1438, + [1439] = 1437, + [1440] = 1440, + [1441] = 1432, + [1442] = 1432, + [1443] = 539, + [1444] = 1323, + [1445] = 1430, + [1446] = 1437, + [1447] = 1432, + [1448] = 1437, + [1449] = 1430, + [1450] = 509, + [1451] = 1440, + [1452] = 1452, + [1453] = 1432, + [1454] = 1454, + [1455] = 1455, + [1456] = 1452, + [1457] = 1430, + [1458] = 519, + [1459] = 553, + [1460] = 519, + [1461] = 1374, + [1462] = 553, + [1463] = 1374, + [1464] = 1432, + [1465] = 539, + [1466] = 1452, + [1467] = 1323, + [1468] = 1452, + [1469] = 509, + [1470] = 1430, + [1471] = 1438, + [1472] = 1472, + [1473] = 1473, + [1474] = 1474, + [1475] = 1474, + [1476] = 1474, + [1477] = 1477, + [1478] = 1472, + [1479] = 1472, + [1480] = 1480, + [1481] = 1481, + [1482] = 1482, + [1483] = 1483, + [1484] = 1484, + [1485] = 1474, + [1486] = 1474, + [1487] = 1474, + [1488] = 1474, + [1489] = 1474, + [1490] = 1490, + [1491] = 1491, + [1492] = 1492, + [1493] = 1491, + [1494] = 1494, + [1495] = 1492, + [1496] = 1496, + [1497] = 1497, + [1498] = 1497, + [1499] = 1499, + [1500] = 1499, + [1501] = 1499, + [1502] = 1499, + [1503] = 1499, + [1504] = 1499, + [1505] = 1499, + [1506] = 1499, + [1507] = 1507, + [1508] = 1507, + [1509] = 1509, + [1510] = 1507, + [1511] = 1511, + [1512] = 1512, + [1513] = 1511, + [1514] = 1509, + [1515] = 1511, + [1516] = 1507, + [1517] = 1511, + [1518] = 1509, + [1519] = 1509, + [1520] = 1509, + [1521] = 1509, + [1522] = 1509, + [1523] = 1511, + [1524] = 1511, + [1525] = 1507, + [1526] = 1511, + [1527] = 1511, + [1528] = 1507, + [1529] = 1507, + [1530] = 1507, + [1531] = 1509, + [1532] = 1532, + [1533] = 1533, + [1534] = 1532, + [1535] = 1535, + [1536] = 1532, + [1537] = 1532, + [1538] = 1535, + [1539] = 1532, + [1540] = 1540, + [1541] = 1541, + [1542] = 1532, + [1543] = 1532, + [1544] = 1535, + [1545] = 1535, + [1546] = 1532, + [1547] = 1535, + [1548] = 1535, + [1549] = 1532, + [1550] = 1535, + [1551] = 1535, + [1552] = 1535, + [1553] = 1553, + [1554] = 1554, + [1555] = 1555, + [1556] = 1556, + [1557] = 1553, + [1558] = 1558, + [1559] = 1559, + [1560] = 1555, + [1561] = 1561, + [1562] = 1558, + [1563] = 1563, + [1564] = 1564, + [1565] = 1556, + [1566] = 1566, + [1567] = 1567, + [1568] = 1559, + [1569] = 1553, + [1570] = 1561, + [1571] = 1561, + [1572] = 1567, + [1573] = 1564, + [1574] = 1555, + [1575] = 1558, + [1576] = 1559, + [1577] = 1563, + [1578] = 1563, + [1579] = 1579, + [1580] = 1567, + [1581] = 1556, + [1582] = 1582, + [1583] = 1583, + [1584] = 1564, + [1585] = 1585, + [1586] = 1553, + [1587] = 1579, + [1588] = 1564, + [1589] = 1589, + [1590] = 1553, + [1591] = 1585, + [1592] = 1554, + [1593] = 1593, + [1594] = 1594, + [1595] = 1559, + [1596] = 1596, + [1597] = 1597, + [1598] = 1598, + [1599] = 1561, + [1600] = 1567, + [1601] = 1558, + [1602] = 1563, + [1603] = 1603, + [1604] = 1593, + [1605] = 1603, + [1606] = 1555, + [1607] = 1553, + [1608] = 1608, + [1609] = 1555, + [1610] = 1593, + [1611] = 1567, + [1612] = 1594, + [1613] = 1613, + [1614] = 1594, + [1615] = 1615, + [1616] = 1616, + [1617] = 1596, + [1618] = 1593, + [1619] = 1567, + [1620] = 1603, + [1621] = 1556, + [1622] = 1613, + [1623] = 1615, + [1624] = 1624, + [1625] = 1564, + [1626] = 1626, + [1627] = 1627, + [1628] = 1628, + [1629] = 1556, + [1630] = 1593, + [1631] = 1593, + [1632] = 1559, + [1633] = 1556, + [1634] = 1634, + [1635] = 1616, + [1636] = 1636, + [1637] = 1566, + [1638] = 1563, + [1639] = 1563, + [1640] = 1558, + [1641] = 1596, + [1642] = 1561, + [1643] = 1559, + [1644] = 1593, + [1645] = 1555, + [1646] = 1593, + [1647] = 1561, + [1648] = 1624, + [1649] = 1564, + [1650] = 1540, + [1651] = 1558, + [1652] = 1652, + [1653] = 1540, + [1654] = 1654, + [1655] = 1655, + [1656] = 1656, + [1657] = 1555, + [1658] = 1658, + [1659] = 1658, + [1660] = 1660, + [1661] = 1652, + [1662] = 1654, + [1663] = 1654, + [1664] = 1585, + [1665] = 1665, + [1666] = 1654, + [1667] = 1655, + [1668] = 1654, + [1669] = 1654, + [1670] = 1563, + [1671] = 1558, + [1672] = 1561, + [1673] = 1559, + [1674] = 1658, + [1675] = 1675, + [1676] = 1556, + [1677] = 1677, + [1678] = 1624, + [1679] = 1679, + [1680] = 1680, + [1681] = 1680, + [1682] = 1682, + [1683] = 1683, + [1684] = 1684, + [1685] = 1685, + [1686] = 1686, + [1687] = 1677, + [1688] = 1660, + [1689] = 1567, + [1690] = 1554, + [1691] = 1579, + [1692] = 1579, + [1693] = 1553, + [1694] = 1694, + [1695] = 1695, + [1696] = 1656, + [1697] = 1564, + [1698] = 1585, + [1699] = 1567, + [1700] = 1564, + [1701] = 1701, + [1702] = 1702, + [1703] = 1703, + [1704] = 1704, + [1705] = 1555, + [1706] = 1624, + [1707] = 1554, + [1708] = 1654, + [1709] = 1540, + [1710] = 1660, + [1711] = 1655, + [1712] = 1556, + [1713] = 1701, + [1714] = 1702, + [1715] = 1553, + [1716] = 1704, + [1717] = 1652, + [1718] = 1718, + [1719] = 1626, + [1720] = 1703, + [1721] = 1559, + [1722] = 1654, + [1723] = 1561, + [1724] = 1558, + [1725] = 1725, + [1726] = 1563, + [1727] = 1677, + [1728] = 1728, + [1729] = 1729, + [1730] = 1730, + [1731] = 1731, + [1732] = 1732, + [1733] = 1728, + [1734] = 1728, + [1735] = 1735, + [1736] = 1684, + [1737] = 1585, + [1738] = 1738, + [1739] = 1739, + [1740] = 1740, + [1741] = 1741, + [1742] = 1742, + [1743] = 1743, + [1744] = 1702, + [1745] = 1745, + [1746] = 1746, + [1747] = 1747, + [1748] = 1748, + [1749] = 1749, + [1750] = 1742, + [1751] = 1583, + [1752] = 1752, + [1753] = 1753, + [1754] = 1739, + [1755] = 1738, + [1756] = 1756, + [1757] = 1566, + [1758] = 1743, + [1759] = 1583, + [1760] = 1760, + [1761] = 1761, + [1762] = 1684, + [1763] = 1684, + [1764] = 1583, + [1765] = 1454, + [1766] = 1566, + [1767] = 1735, + [1768] = 1768, + [1769] = 1769, + [1770] = 1768, + [1771] = 1761, + [1772] = 1626, + [1773] = 1773, + [1774] = 1680, + [1775] = 1760, + [1776] = 1704, + [1777] = 1777, + [1778] = 1626, + [1779] = 1598, + [1780] = 1780, + [1781] = 1753, + [1782] = 1566, + [1783] = 1455, + [1784] = 1769, + [1785] = 1785, + [1786] = 1777, + [1787] = 1748, + [1788] = 1738, + [1789] = 1680, + [1790] = 1739, + [1791] = 1791, + [1792] = 1792, + [1793] = 1793, + [1794] = 1794, + [1795] = 1795, + [1796] = 1777, + [1797] = 1704, + [1798] = 1773, + [1799] = 1769, + [1800] = 1730, + [1801] = 1702, + [1802] = 1554, + [1803] = 1803, + [1804] = 1579, + [1805] = 1805, + [1806] = 1806, + [1807] = 1807, + [1808] = 1808, + [1809] = 1730, + [1810] = 1810, + [1811] = 1811, + [1812] = 1812, + [1813] = 1813, + [1814] = 1814, + [1815] = 1815, + [1816] = 1816, + [1817] = 1817, + [1818] = 1812, + [1819] = 1819, + [1820] = 1753, + [1821] = 1821, + [1822] = 1822, + [1823] = 1823, + [1824] = 1817, + [1825] = 1825, + [1826] = 1826, + [1827] = 1827, + [1828] = 1828, + [1829] = 1829, + [1830] = 1830, + [1831] = 1831, + [1832] = 1832, + [1833] = 1748, + [1834] = 1473, + [1835] = 1835, + [1836] = 1836, + [1837] = 1837, + [1838] = 1760, + [1839] = 1839, + [1840] = 1840, + [1841] = 1841, + [1842] = 1477, + [1843] = 1761, + [1844] = 1819, + [1845] = 1845, + [1846] = 1815, + [1847] = 1626, + [1848] = 1848, + [1849] = 1849, + [1850] = 1745, + [1851] = 1761, + [1852] = 1852, + [1853] = 1853, + [1854] = 1848, + [1855] = 1828, + [1856] = 1823, + [1857] = 1857, + [1858] = 1839, + [1859] = 1825, + [1860] = 1840, + [1861] = 1753, + [1862] = 1862, + [1863] = 1829, + [1864] = 1481, + [1865] = 1749, + [1866] = 1482, + [1867] = 1867, + [1868] = 1845, + [1869] = 1857, + [1870] = 1862, + [1871] = 1760, + [1872] = 1821, + [1873] = 1873, + [1874] = 1748, + [1875] = 1815, + [1876] = 1815, + [1877] = 1877, + [1878] = 1878, + [1879] = 1879, + [1880] = 1815, + [1881] = 1830, + [1882] = 1841, + [1883] = 1867, + [1884] = 1873, + [1885] = 1810, + [1886] = 1852, + [1887] = 1878, + [1888] = 1839, + [1889] = 1889, + [1890] = 1815, + [1891] = 1879, + [1892] = 1867, + [1893] = 1840, + [1894] = 1814, + [1895] = 1895, + [1896] = 1889, + [1897] = 1815, + [1898] = 1895, + [1899] = 1813, + [1900] = 1900, + [1901] = 1901, + [1902] = 1835, + [1903] = 1849, + [1904] = 1815, + [1905] = 1658, + [1906] = 1901, + [1907] = 1907, + [1908] = 1908, + [1909] = 1909, + [1910] = 1845, + [1911] = 1857, + [1912] = 1912, + [1913] = 1873, + [1914] = 1845, + [1915] = 1822, + [1916] = 1810, + [1917] = 1823, + [1918] = 1918, + [1919] = 1918, + [1920] = 1819, + [1921] = 1921, + [1922] = 1823, + [1923] = 1923, + [1924] = 1924, + [1925] = 1925, + [1926] = 1862, + [1927] = 1873, + [1928] = 1928, + [1929] = 1862, + [1930] = 1810, + [1931] = 1931, + [1932] = 1932, + [1933] = 1878, + [1934] = 1878, + [1935] = 1900, + [1936] = 1936, + [1937] = 1923, + [1938] = 1938, + [1939] = 1901, + [1940] = 1829, + [1941] = 1857, + [1942] = 1828, + [1943] = 1943, + [1944] = 1944, + [1945] = 1945, + [1946] = 1830, + [1947] = 1817, + [1948] = 1938, + [1949] = 1812, + [1950] = 1950, + [1951] = 1918, + [1952] = 1895, + [1953] = 1901, + [1954] = 1814, + [1955] = 1955, + [1956] = 1945, + [1957] = 1957, + [1958] = 1958, + [1959] = 1959, + [1960] = 1960, + [1961] = 1961, + [1962] = 1895, + [1963] = 1963, + [1964] = 1964, + [1965] = 1965, + [1966] = 1829, + [1967] = 1967, + [1968] = 1918, + [1969] = 1969, + [1970] = 1836, + [1971] = 1828, + [1972] = 1972, + [1973] = 1973, + [1974] = 1974, + [1975] = 1832, + [1976] = 1812, + [1977] = 1977, + [1978] = 1978, + [1979] = 1814, + [1980] = 1938, + [1981] = 1830, + [1982] = 1817, + [1983] = 1983, + [1984] = 1984, + [1985] = 1985, + [1986] = 1986, + [1987] = 1819, + [1988] = 1938, + [1989] = 1989, + [1990] = 1990, + [1991] = 1991, + [1992] = 1992, + [1993] = 1993, + [1994] = 1994, + [1995] = 1995, + [1996] = 1989, + [1997] = 1997, + [1998] = 1745, + [1999] = 1999, + [2000] = 2000, + [2001] = 1455, + [2002] = 601, + [2003] = 1749, + [2004] = 2004, + [2005] = 2005, + [2006] = 1923, + [2007] = 2007, + [2008] = 1957, + [2009] = 2009, + [2010] = 1984, + [2011] = 2011, + [2012] = 2012, + [2013] = 1740, + [2014] = 1059, + [2015] = 2015, + [2016] = 2016, + [2017] = 1807, + [2018] = 1808, + [2019] = 2016, + [2020] = 2004, + [2021] = 1729, + [2022] = 1963, + [2023] = 1923, + [2024] = 1029, + [2025] = 1745, + [2026] = 1749, + [2027] = 2027, + [2028] = 1756, + [2029] = 1752, + [2030] = 1747, + [2031] = 599, + [2032] = 2000, + [2033] = 2015, + [2034] = 2034, + [2035] = 2035, + [2036] = 2036, + [2037] = 2037, + [2038] = 2038, + [2039] = 2039, + [2040] = 2040, + [2041] = 2041, + [2042] = 2042, + [2043] = 2043, + [2044] = 2016, + [2045] = 2012, + [2046] = 2041, + [2047] = 2040, + [2048] = 2037, + [2049] = 2036, + [2050] = 2050, + [2051] = 2051, + [2052] = 2034, + [2053] = 2053, + [2054] = 2054, + [2055] = 1991, + [2056] = 2056, + [2057] = 1944, + [2058] = 2043, + [2059] = 2050, + [2060] = 2053, + [2061] = 2054, + [2062] = 2062, + [2063] = 1999, + [2064] = 2004, + [2065] = 2065, + [2066] = 2027, + [2067] = 2067, + [2068] = 1965, + [2069] = 1989, + [2070] = 2036, + [2071] = 2037, + [2072] = 2040, + [2073] = 1746, + [2074] = 2067, + [2075] = 2041, + [2076] = 2076, + [2077] = 2077, + [2078] = 1455, + [2079] = 2079, + [2080] = 2050, + [2081] = 1745, + [2082] = 595, + [2083] = 2083, + [2084] = 2015, + [2085] = 2053, + [2086] = 2054, + [2087] = 2087, + [2088] = 2088, + [2089] = 2076, + [2090] = 2090, + [2091] = 1749, + [2092] = 2083, + [2093] = 2093, + [2094] = 2094, + [2095] = 2067, + [2096] = 2096, + [2097] = 1993, + [2098] = 2076, + [2099] = 2099, + [2100] = 1977, + [2101] = 2101, + [2102] = 1983, + [2103] = 600, + [2104] = 2054, + [2105] = 2053, + [2106] = 2106, + [2107] = 2094, + [2108] = 2050, + [2109] = 2087, + [2110] = 2093, + [2111] = 1995, + [2112] = 2036, + [2113] = 2041, + [2114] = 2037, + [2115] = 2040, + [2116] = 2040, + [2117] = 2037, + [2118] = 2036, + [2119] = 2041, + [2120] = 2120, + [2121] = 2121, + [2122] = 2050, + [2123] = 2053, + [2124] = 2088, + [2125] = 2054, + [2126] = 2076, + [2127] = 1994, + [2128] = 1991, + [2129] = 1943, + [2130] = 2076, + [2131] = 2131, + [2132] = 2088, + [2133] = 2062, + [2134] = 1997, + [2135] = 2083, + [2136] = 2136, + [2137] = 2067, + [2138] = 2138, + [2139] = 1989, + [2140] = 2083, + [2141] = 2141, + [2142] = 2036, + [2143] = 2083, + [2144] = 2037, + [2145] = 2040, + [2146] = 1909, + [2147] = 2041, + [2148] = 2121, + [2149] = 2050, + [2150] = 2150, + [2151] = 2053, + [2152] = 2054, + [2153] = 2076, + [2154] = 2154, + [2155] = 2067, + [2156] = 2156, + [2157] = 2088, + [2158] = 2158, + [2159] = 2056, + [2160] = 1989, + [2161] = 2083, + [2162] = 2088, + [2163] = 2065, + [2164] = 2067, + [2165] = 2067, + [2166] = 1944, + [2167] = 1989, + [2168] = 2168, + [2169] = 2079, + [2170] = 2170, + [2171] = 2171, + [2172] = 2036, + [2173] = 2083, + [2174] = 2037, + [2175] = 2175, + [2176] = 2040, + [2177] = 2101, + [2178] = 2088, + [2179] = 2041, + [2180] = 602, + [2181] = 2181, + [2182] = 2050, + [2183] = 2053, + [2184] = 2054, + [2185] = 2076, + [2186] = 2076, + [2187] = 1984, + [2188] = 2088, + [2189] = 2083, + [2190] = 1989, + [2191] = 1957, + [2192] = 2054, + [2193] = 2053, + [2194] = 2096, + [2195] = 2195, + [2196] = 2050, + [2197] = 1993, + [2198] = 2067, + [2199] = 2199, + [2200] = 2093, + [2201] = 2041, + [2202] = 2202, + [2203] = 2040, + [2204] = 1997, + [2205] = 2037, + [2206] = 2036, + [2207] = 1997, + [2208] = 2094, + [2209] = 2209, + [2210] = 2210, + [2211] = 2211, + [2212] = 2210, + [2213] = 2213, + [2214] = 2214, + [2215] = 2215, + [2216] = 2216, + [2217] = 2217, + [2218] = 2218, + [2219] = 2219, + [2220] = 2220, + [2221] = 2221, + [2222] = 2222, + [2223] = 2223, + [2224] = 1473, + [2225] = 2210, + [2226] = 1482, + [2227] = 2227, + [2228] = 2227, + [2229] = 2229, + [2230] = 2230, + [2231] = 2231, + [2232] = 2232, + [2233] = 2233, + [2234] = 1477, + [2235] = 1481, + [2236] = 2236, + [2237] = 2237, + [2238] = 2238, + [2239] = 2239, + [2240] = 2240, + [2241] = 2227, + [2242] = 2242, + [2243] = 2243, + [2244] = 2056, + [2245] = 2042, + [2246] = 2079, + [2247] = 2209, + [2248] = 2248, + [2249] = 2230, + [2250] = 2079, + [2251] = 2251, + [2252] = 2005, + [2253] = 1831, + [2254] = 2232, + [2255] = 2209, + [2256] = 2210, + [2257] = 2233, + [2258] = 2219, + [2259] = 2242, + [2260] = 2042, + [2261] = 2240, + [2262] = 2239, + [2263] = 2263, + [2264] = 2056, + [2265] = 2265, + [2266] = 2266, + [2267] = 2267, + [2268] = 2268, + [2269] = 2269, + [2270] = 2230, + [2271] = 2271, + [2272] = 2272, + [2273] = 2271, + [2274] = 2232, + [2275] = 2233, + [2276] = 2272, + [2277] = 2243, + [2278] = 2237, + [2279] = 2279, + [2280] = 2280, + [2281] = 2281, + [2282] = 2282, + [2283] = 2242, + [2284] = 2240, + [2285] = 2285, + [2286] = 2239, + [2287] = 2035, + [2288] = 2039, + [2289] = 2289, + [2290] = 2290, + [2291] = 2291, + [2292] = 1477, + [2293] = 2293, + [2294] = 1473, + [2295] = 2005, + [2296] = 1831, + [2297] = 2290, + [2298] = 2298, + [2299] = 2268, + [2300] = 2231, + [2301] = 2219, + [2302] = 2302, + [2303] = 1481, + [2304] = 2268, + [2305] = 2219, + [2306] = 2280, + [2307] = 1482, + [2308] = 2227, + [2309] = 2229, + [2310] = 2230, + [2311] = 1831, + [2312] = 2312, + [2313] = 2237, + [2314] = 2232, + [2315] = 2106, + [2316] = 2233, + [2317] = 2279, + [2318] = 2302, + [2319] = 2298, + [2320] = 2320, + [2321] = 2237, + [2322] = 2322, + [2323] = 2323, + [2324] = 2324, + [2325] = 2324, + [2326] = 2326, + [2327] = 2327, + [2328] = 2328, + [2329] = 2329, + [2330] = 2330, + [2331] = 2331, + [2332] = 2332, + [2333] = 2333, + [2334] = 2334, + [2335] = 2335, + [2336] = 2336, + [2337] = 2337, + [2338] = 2338, + [2339] = 2339, + [2340] = 2340, + [2341] = 2341, + [2342] = 2336, + [2343] = 2334, + [2344] = 2344, + [2345] = 2345, + [2346] = 2346, + [2347] = 2347, + [2348] = 2348, + [2349] = 2349, + [2350] = 2350, + [2351] = 2327, + [2352] = 2328, + [2353] = 2353, + [2354] = 2334, + [2355] = 2336, + [2356] = 2339, + [2357] = 2331, + [2358] = 2339, + [2359] = 2333, + [2360] = 2323, + [2361] = 2361, + [2362] = 2323, + [2363] = 2363, + [2364] = 2349, + [2365] = 2348, + [2366] = 2345, + [2367] = 2335, + [2368] = 2333, + [2369] = 2369, + [2370] = 2324, + [2371] = 2339, + [2372] = 2333, + [2373] = 2326, + [2374] = 2345, + [2375] = 2347, + [2376] = 2347, + [2377] = 2336, + [2378] = 2341, + [2379] = 2334, + [2380] = 2337, + [2381] = 2381, + [2382] = 2369, + [2383] = 2383, + [2384] = 2336, + [2385] = 2324, + [2386] = 2327, + [2387] = 2349, + [2388] = 2388, + [2389] = 2389, + [2390] = 2390, + [2391] = 2391, + [2392] = 2327, + [2393] = 2348, + [2394] = 2326, + [2395] = 2395, + [2396] = 2324, + [2397] = 2369, + [2398] = 2347, + [2399] = 2399, + [2400] = 2347, + [2401] = 2345, + [2402] = 2327, + [2403] = 2403, + [2404] = 2328, + [2405] = 2334, + [2406] = 2336, + [2407] = 2348, + [2408] = 2323, + [2409] = 2339, + [2410] = 2333, + [2411] = 2323, + [2412] = 2389, + [2413] = 2349, + [2414] = 2348, + [2415] = 2345, + [2416] = 2349, + [2417] = 2349, + [2418] = 2369, + [2419] = 2324, + [2420] = 2323, + [2421] = 2326, + [2422] = 2422, + [2423] = 2333, + [2424] = 2339, + [2425] = 2345, + [2426] = 2426, + [2427] = 2427, + [2428] = 2334, + [2429] = 2328, + [2430] = 2327, + [2431] = 2431, + [2432] = 2326, + [2433] = 2341, + [2434] = 2369, + [2435] = 2347, + [2436] = 2436, + [2437] = 2327, + [2438] = 2369, + [2439] = 2334, + [2440] = 2440, + [2441] = 2441, + [2442] = 2442, + [2443] = 2336, + [2444] = 2353, + [2445] = 2445, + [2446] = 2341, + [2447] = 2383, + [2448] = 2326, + [2449] = 2449, + [2450] = 2450, + [2451] = 2326, + [2452] = 2331, + [2453] = 2399, + [2454] = 2454, + [2455] = 2339, + [2456] = 2350, + [2457] = 2333, + [2458] = 2458, + [2459] = 2323, + [2460] = 2460, + [2461] = 2389, + [2462] = 2349, + [2463] = 2463, + [2464] = 2389, + [2465] = 2422, + [2466] = 2466, + [2467] = 2449, + [2468] = 2348, + [2469] = 2442, + [2470] = 2346, + [2471] = 2335, + [2472] = 2445, + [2473] = 2381, + [2474] = 2337, + [2475] = 2345, + [2476] = 2476, + [2477] = 2477, + [2478] = 2326, + [2479] = 2390, + [2480] = 2480, + [2481] = 2481, + [2482] = 2441, + [2483] = 2324, + [2484] = 2440, + [2485] = 2369, + [2486] = 2340, + [2487] = 2369, + [2488] = 2329, + [2489] = 2338, + [2490] = 2324, + [2491] = 2345, + [2492] = 2348, + [2493] = 2493, + [2494] = 2458, + [2495] = 2495, + [2496] = 2458, + [2497] = 2389, + [2498] = 2422, + [2499] = 2349, + [2500] = 2481, + [2501] = 2323, + [2502] = 2346, + [2503] = 2466, + [2504] = 2504, + [2505] = 2333, + [2506] = 2339, + [2507] = 2481, + [2508] = 2495, + [2509] = 2336, + [2510] = 2510, + [2511] = 2334, + [2512] = 2512, + [2513] = 2480, + [2514] = 2168, + [2515] = 2327, + [2516] = 2460, + [2517] = 2477, + [2518] = 2347, + [2519] = 2519, + [2520] = 2520, + [2521] = 2331, + [2522] = 2463, + [2523] = 2335, + [2524] = 2524, + [2525] = 2361, + [2526] = 2526, + [2527] = 2347, + [2528] = 2337, + [2529] = 2353, + [2530] = 2346, + [2531] = 2353, + [2532] = 2532, + [2533] = 2361, + [2534] = 2363, + [2535] = 2526, + [2536] = 2536, + [2537] = 2537, + [2538] = 2538, + [2539] = 2524, + [2540] = 2363, + [2541] = 2541, + [2542] = 2348, + [2543] = 2538, + [2544] = 2391, + [2545] = 2361, + [2546] = 2388, + [2547] = 2436, + [2548] = 2541, + [2549] = 2363, + [2550] = 2403, + [2551] = 2541, + [2552] = 2426, + [2553] = 2450, +}; + +static inline bool sym_identifier_character_set_1(int32_t c) { + return (c < 43514 + ? (c < 4193 + ? (c < 2707 + ? (c < 1994 + ? (c < 931 + ? (c < 748 + ? (c < 192 + ? (c < 170 + ? (c < 'a' + ? (c >= 'A' && c <= '_') + : c <= 'z') + : (c <= 170 || (c < 186 + ? c == 181 + : c <= 186))) + : (c <= 214 || (c < 710 + ? (c < 248 + ? (c >= 216 && c <= 246) + : c <= 705) + : (c <= 721 || (c >= 736 && c <= 740))))) + : (c <= 748 || (c < 895 + ? (c < 886 + ? (c < 880 + ? c == 750 + : c <= 884) + : (c <= 887 || (c >= 891 && c <= 893))) + : (c <= 895 || (c < 908 + ? (c < 904 + ? c == 902 + : c <= 906) + : (c <= 908 || (c >= 910 && c <= 929))))))) + : (c <= 1013 || (c < 1649 + ? (c < 1376 + ? (c < 1329 + ? (c < 1162 + ? (c >= 1015 && c <= 1153) + : c <= 1327) + : (c <= 1366 || c == 1369)) + : (c <= 1416 || (c < 1568 + ? (c < 1519 + ? (c >= 1488 && c <= 1514) + : c <= 1522) + : (c <= 1610 || (c >= 1646 && c <= 1647))))) + : (c <= 1747 || (c < 1791 + ? (c < 1774 + ? (c < 1765 + ? c == 1749 + : c <= 1766) + : (c <= 1775 || (c >= 1786 && c <= 1788))) + : (c <= 1791 || (c < 1869 + ? (c < 1810 + ? c == 1808 + : c <= 1839) + : (c <= 1957 || c == 1969)))))))) + : (c <= 2026 || (c < 2482 + ? (c < 2208 + ? (c < 2088 + ? (c < 2048 + ? (c < 2042 + ? (c >= 2036 && c <= 2037) + : c <= 2042) + : (c <= 2069 || (c < 2084 + ? c == 2074 + : c <= 2084))) + : (c <= 2088 || (c < 2160 + ? (c < 2144 + ? (c >= 2112 && c <= 2136) + : c <= 2154) + : (c <= 2183 || (c >= 2185 && c <= 2190))))) + : (c <= 2249 || (c < 2417 + ? (c < 2384 + ? (c < 2365 + ? (c >= 2308 && c <= 2361) + : c <= 2365) + : (c <= 2384 || (c >= 2392 && c <= 2401))) + : (c <= 2432 || (c < 2451 + ? (c < 2447 + ? (c >= 2437 && c <= 2444) + : c <= 2448) + : (c <= 2472 || (c >= 2474 && c <= 2480))))))) + : (c <= 2482 || (c < 2579 + ? (c < 2527 + ? (c < 2510 + ? (c < 2493 + ? (c >= 2486 && c <= 2489) + : c <= 2493) + : (c <= 2510 || (c >= 2524 && c <= 2525))) + : (c <= 2529 || (c < 2565 + ? (c < 2556 + ? (c >= 2544 && c <= 2545) + : c <= 2556) + : (c <= 2570 || (c >= 2575 && c <= 2576))))) + : (c <= 2600 || (c < 2649 + ? (c < 2613 + ? (c < 2610 + ? (c >= 2602 && c <= 2608) + : c <= 2611) + : (c <= 2614 || (c >= 2616 && c <= 2617))) + : (c <= 2652 || (c < 2693 + ? (c < 2674 + ? c == 2654 + : c <= 2676) + : (c <= 2701 || (c >= 2703 && c <= 2705))))))))))) + : (c <= 2728 || (c < 3242 + ? (c < 2962 + ? (c < 2858 + ? (c < 2784 + ? (c < 2741 + ? (c < 2738 + ? (c >= 2730 && c <= 2736) + : c <= 2739) + : (c <= 2745 || (c < 2768 + ? c == 2749 + : c <= 2768))) + : (c <= 2785 || (c < 2831 + ? (c < 2821 + ? c == 2809 + : c <= 2828) + : (c <= 2832 || (c >= 2835 && c <= 2856))))) + : (c <= 2864 || (c < 2911 + ? (c < 2877 + ? (c < 2869 + ? (c >= 2866 && c <= 2867) + : c <= 2873) + : (c <= 2877 || (c >= 2908 && c <= 2909))) + : (c <= 2913 || (c < 2949 + ? (c < 2947 + ? c == 2929 + : c <= 2947) + : (c <= 2954 || (c >= 2958 && c <= 2960))))))) + : (c <= 2965 || (c < 3090 + ? (c < 2984 + ? (c < 2974 + ? (c < 2972 + ? (c >= 2969 && c <= 2970) + : c <= 2972) + : (c <= 2975 || (c >= 2979 && c <= 2980))) + : (c <= 2986 || (c < 3077 + ? (c < 3024 + ? (c >= 2990 && c <= 3001) + : c <= 3024) + : (c <= 3084 || (c >= 3086 && c <= 3088))))) + : (c <= 3112 || (c < 3168 + ? (c < 3160 + ? (c < 3133 + ? (c >= 3114 && c <= 3129) + : c <= 3133) + : (c <= 3162 || c == 3165)) + : (c <= 3169 || (c < 3214 + ? (c < 3205 + ? c == 3200 + : c <= 3212) + : (c <= 3216 || (c >= 3218 && c <= 3240))))))))) + : (c <= 3251 || (c < 3648 + ? (c < 3412 + ? (c < 3332 + ? (c < 3293 + ? (c < 3261 + ? (c >= 3253 && c <= 3257) + : c <= 3261) + : (c <= 3294 || (c < 3313 + ? (c >= 3296 && c <= 3297) + : c <= 3314))) + : (c <= 3340 || (c < 3389 + ? (c < 3346 + ? (c >= 3342 && c <= 3344) + : c <= 3386) + : (c <= 3389 || c == 3406)))) + : (c <= 3414 || (c < 3507 + ? (c < 3461 + ? (c < 3450 + ? (c >= 3423 && c <= 3425) + : c <= 3455) + : (c <= 3478 || (c >= 3482 && c <= 3505))) + : (c <= 3515 || (c < 3585 + ? (c < 3520 + ? c == 3517 + : c <= 3526) + : (c <= 3632 || c == 3634)))))) + : (c <= 3654 || (c < 3782 + ? (c < 3749 + ? (c < 3718 + ? (c < 3716 + ? (c >= 3713 && c <= 3714) + : c <= 3716) + : (c <= 3722 || (c >= 3724 && c <= 3747))) + : (c <= 3749 || (c < 3773 + ? (c < 3762 + ? (c >= 3751 && c <= 3760) + : c <= 3762) + : (c <= 3773 || (c >= 3776 && c <= 3780))))) + : (c <= 3782 || (c < 3976 + ? (c < 3904 + ? (c < 3840 + ? (c >= 3804 && c <= 3807) + : c <= 3840) + : (c <= 3911 || (c >= 3913 && c <= 3948))) + : (c <= 3980 || (c < 4176 + ? (c < 4159 + ? (c >= 4096 && c <= 4138) + : c <= 4159) + : (c <= 4181 || (c >= 4186 && c <= 4189))))))))))))) + : (c <= 4193 || (c < 8134 + ? (c < 6176 + ? (c < 4808 + ? (c < 4688 + ? (c < 4295 + ? (c < 4213 + ? (c < 4206 + ? (c >= 4197 && c <= 4198) + : c <= 4208) + : (c <= 4225 || (c < 4256 + ? c == 4238 + : c <= 4293))) + : (c <= 4295 || (c < 4348 + ? (c < 4304 + ? c == 4301 + : c <= 4346) + : (c <= 4680 || (c >= 4682 && c <= 4685))))) + : (c <= 4694 || (c < 4752 + ? (c < 4704 + ? (c < 4698 + ? c == 4696 + : c <= 4701) + : (c <= 4744 || (c >= 4746 && c <= 4749))) + : (c <= 4784 || (c < 4800 + ? (c < 4792 + ? (c >= 4786 && c <= 4789) + : c <= 4798) + : (c <= 4800 || (c >= 4802 && c <= 4805))))))) + : (c <= 4822 || (c < 5792 + ? (c < 5024 + ? (c < 4888 + ? (c < 4882 + ? (c >= 4824 && c <= 4880) + : c <= 4885) + : (c <= 4954 || (c >= 4992 && c <= 5007))) + : (c <= 5109 || (c < 5743 + ? (c < 5121 + ? (c >= 5112 && c <= 5117) + : c <= 5740) + : (c <= 5759 || (c >= 5761 && c <= 5786))))) + : (c <= 5866 || (c < 5984 + ? (c < 5919 + ? (c < 5888 + ? (c >= 5870 && c <= 5880) + : c <= 5905) + : (c <= 5937 || (c >= 5952 && c <= 5969))) + : (c <= 5996 || (c < 6103 + ? (c < 6016 + ? (c >= 5998 && c <= 6000) + : c <= 6067) + : (c <= 6103 || c == 6108)))))))) + : (c <= 6264 || (c < 7312 + ? (c < 6823 + ? (c < 6512 + ? (c < 6320 + ? (c < 6314 + ? (c >= 6272 && c <= 6312) + : c <= 6314) + : (c <= 6389 || (c < 6480 + ? (c >= 6400 && c <= 6430) + : c <= 6509))) + : (c <= 6516 || (c < 6656 + ? (c < 6576 + ? (c >= 6528 && c <= 6571) + : c <= 6601) + : (c <= 6678 || (c >= 6688 && c <= 6740))))) + : (c <= 6823 || (c < 7098 + ? (c < 7043 + ? (c < 6981 + ? (c >= 6917 && c <= 6963) + : c <= 6988) + : (c <= 7072 || (c >= 7086 && c <= 7087))) + : (c <= 7141 || (c < 7258 + ? (c < 7245 + ? (c >= 7168 && c <= 7203) + : c <= 7247) + : (c <= 7293 || (c >= 7296 && c <= 7304))))))) + : (c <= 7354 || (c < 8008 + ? (c < 7418 + ? (c < 7406 + ? (c < 7401 + ? (c >= 7357 && c <= 7359) + : c <= 7404) + : (c <= 7411 || (c >= 7413 && c <= 7414))) + : (c <= 7418 || (c < 7960 + ? (c < 7680 + ? (c >= 7424 && c <= 7615) + : c <= 7957) + : (c <= 7965 || (c >= 7968 && c <= 8005))))) + : (c <= 8013 || (c < 8031 + ? (c < 8027 + ? (c < 8025 + ? (c >= 8016 && c <= 8023) + : c <= 8025) + : (c <= 8027 || c == 8029)) + : (c <= 8061 || (c < 8126 + ? (c < 8118 + ? (c >= 8064 && c <= 8116) + : c <= 8124) + : (c <= 8126 || (c >= 8130 && c <= 8132))))))))))) + : (c <= 8140 || (c < 12337 + ? (c < 8544 + ? (c < 8458 + ? (c < 8305 + ? (c < 8160 + ? (c < 8150 + ? (c >= 8144 && c <= 8147) + : c <= 8155) + : (c <= 8172 || (c < 8182 + ? (c >= 8178 && c <= 8180) + : c <= 8188))) + : (c <= 8305 || (c < 8450 + ? (c < 8336 + ? c == 8319 + : c <= 8348) + : (c <= 8450 || c == 8455)))) + : (c <= 8467 || (c < 8488 + ? (c < 8484 + ? (c < 8472 + ? c == 8469 + : c <= 8477) + : (c <= 8484 || c == 8486)) + : (c <= 8488 || (c < 8517 + ? (c < 8508 + ? (c >= 8490 && c <= 8505) + : c <= 8511) + : (c <= 8521 || c == 8526)))))) + : (c <= 8584 || (c < 11680 + ? (c < 11559 + ? (c < 11506 + ? (c < 11499 + ? (c >= 11264 && c <= 11492) + : c <= 11502) + : (c <= 11507 || (c >= 11520 && c <= 11557))) + : (c <= 11559 || (c < 11631 + ? (c < 11568 + ? c == 11565 + : c <= 11623) + : (c <= 11631 || (c >= 11648 && c <= 11670))))) + : (c <= 11686 || (c < 11720 + ? (c < 11704 + ? (c < 11696 + ? (c >= 11688 && c <= 11694) + : c <= 11702) + : (c <= 11710 || (c >= 11712 && c <= 11718))) + : (c <= 11726 || (c < 12293 + ? (c < 11736 + ? (c >= 11728 && c <= 11734) + : c <= 11742) + : (c <= 12295 || (c >= 12321 && c <= 12329))))))))) + : (c <= 12341 || (c < 42891 + ? (c < 19968 + ? (c < 12549 + ? (c < 12445 + ? (c < 12353 + ? (c >= 12344 && c <= 12348) + : c <= 12438) + : (c <= 12447 || (c < 12540 + ? (c >= 12449 && c <= 12538) + : c <= 12543))) + : (c <= 12591 || (c < 12784 + ? (c < 12704 + ? (c >= 12593 && c <= 12686) + : c <= 12735) + : (c <= 12799 || (c >= 13312 && c <= 19903))))) + : (c <= 42124 || (c < 42560 + ? (c < 42512 + ? (c < 42240 + ? (c >= 42192 && c <= 42237) + : c <= 42508) + : (c <= 42527 || (c >= 42538 && c <= 42539))) + : (c <= 42606 || (c < 42775 + ? (c < 42656 + ? (c >= 42623 && c <= 42653) + : c <= 42735) + : (c <= 42783 || (c >= 42786 && c <= 42888))))))) + : (c <= 42954 || (c < 43250 + ? (c < 43011 + ? (c < 42965 + ? (c < 42963 + ? (c >= 42960 && c <= 42961) + : c <= 42963) + : (c <= 42969 || (c >= 42994 && c <= 43009))) + : (c <= 43013 || (c < 43072 + ? (c < 43020 + ? (c >= 43015 && c <= 43018) + : c <= 43042) + : (c <= 43123 || (c >= 43138 && c <= 43187))))) + : (c <= 43255 || (c < 43360 + ? (c < 43274 + ? (c < 43261 + ? c == 43259 + : c <= 43262) + : (c <= 43301 || (c >= 43312 && c <= 43334))) + : (c <= 43388 || (c < 43488 + ? (c < 43471 + ? (c >= 43396 && c <= 43442) + : c <= 43471) + : (c <= 43492 || (c >= 43494 && c <= 43503))))))))))))))) + : (c <= 43518 || (c < 70727 + ? (c < 66956 + ? (c < 64914 + ? (c < 43868 + ? (c < 43714 + ? (c < 43646 + ? (c < 43588 + ? (c < 43584 + ? (c >= 43520 && c <= 43560) + : c <= 43586) + : (c <= 43595 || (c < 43642 + ? (c >= 43616 && c <= 43638) + : c <= 43642))) + : (c <= 43695 || (c < 43705 + ? (c < 43701 + ? c == 43697 + : c <= 43702) + : (c <= 43709 || c == 43712)))) + : (c <= 43714 || (c < 43785 + ? (c < 43762 + ? (c < 43744 + ? (c >= 43739 && c <= 43741) + : c <= 43754) + : (c <= 43764 || (c >= 43777 && c <= 43782))) + : (c <= 43790 || (c < 43816 + ? (c < 43808 + ? (c >= 43793 && c <= 43798) + : c <= 43814) + : (c <= 43822 || (c >= 43824 && c <= 43866))))))) + : (c <= 43881 || (c < 64287 + ? (c < 63744 + ? (c < 55216 + ? (c < 44032 + ? (c >= 43888 && c <= 44002) + : c <= 55203) + : (c <= 55238 || (c >= 55243 && c <= 55291))) + : (c <= 64109 || (c < 64275 + ? (c < 64256 + ? (c >= 64112 && c <= 64217) + : c <= 64262) + : (c <= 64279 || c == 64285)))) + : (c <= 64296 || (c < 64323 + ? (c < 64318 + ? (c < 64312 + ? (c >= 64298 && c <= 64310) + : c <= 64316) + : (c <= 64318 || (c >= 64320 && c <= 64321))) + : (c <= 64324 || (c < 64612 + ? (c < 64467 + ? (c >= 64326 && c <= 64433) + : c <= 64605) + : (c <= 64829 || (c >= 64848 && c <= 64911))))))))) + : (c <= 64967 || (c < 65599 + ? (c < 65382 + ? (c < 65147 + ? (c < 65139 + ? (c < 65137 + ? (c >= 65008 && c <= 65017) + : c <= 65137) + : (c <= 65139 || (c < 65145 + ? c == 65143 + : c <= 65145))) + : (c <= 65147 || (c < 65313 + ? (c < 65151 + ? c == 65149 + : c <= 65276) + : (c <= 65338 || (c >= 65345 && c <= 65370))))) + : (c <= 65437 || (c < 65498 + ? (c < 65482 + ? (c < 65474 + ? (c >= 65440 && c <= 65470) + : c <= 65479) + : (c <= 65487 || (c >= 65490 && c <= 65495))) + : (c <= 65500 || (c < 65576 + ? (c < 65549 + ? (c >= 65536 && c <= 65547) + : c <= 65574) + : (c <= 65594 || (c >= 65596 && c <= 65597))))))) + : (c <= 65613 || (c < 66464 + ? (c < 66208 + ? (c < 65856 + ? (c < 65664 + ? (c >= 65616 && c <= 65629) + : c <= 65786) + : (c <= 65908 || (c >= 66176 && c <= 66204))) + : (c <= 66256 || (c < 66384 + ? (c < 66349 + ? (c >= 66304 && c <= 66335) + : c <= 66378) + : (c <= 66421 || (c >= 66432 && c <= 66461))))) + : (c <= 66499 || (c < 66776 + ? (c < 66560 + ? (c < 66513 + ? (c >= 66504 && c <= 66511) + : c <= 66517) + : (c <= 66717 || (c >= 66736 && c <= 66771))) + : (c <= 66811 || (c < 66928 + ? (c < 66864 + ? (c >= 66816 && c <= 66855) + : c <= 66915) + : (c <= 66938 || (c >= 66940 && c <= 66954))))))))))) + : (c <= 66962 || (c < 68864 + ? (c < 67828 + ? (c < 67506 + ? (c < 67072 + ? (c < 66979 + ? (c < 66967 + ? (c >= 66964 && c <= 66965) + : c <= 66977) + : (c <= 66993 || (c < 67003 + ? (c >= 66995 && c <= 67001) + : c <= 67004))) + : (c <= 67382 || (c < 67456 + ? (c < 67424 + ? (c >= 67392 && c <= 67413) + : c <= 67431) + : (c <= 67461 || (c >= 67463 && c <= 67504))))) + : (c <= 67514 || (c < 67644 + ? (c < 67594 + ? (c < 67592 + ? (c >= 67584 && c <= 67589) + : c <= 67592) + : (c <= 67637 || (c >= 67639 && c <= 67640))) + : (c <= 67644 || (c < 67712 + ? (c < 67680 + ? (c >= 67647 && c <= 67669) + : c <= 67702) + : (c <= 67742 || (c >= 67808 && c <= 67826))))))) + : (c <= 67829 || (c < 68224 + ? (c < 68096 + ? (c < 67968 + ? (c < 67872 + ? (c >= 67840 && c <= 67861) + : c <= 67897) + : (c <= 68023 || (c >= 68030 && c <= 68031))) + : (c <= 68096 || (c < 68121 + ? (c < 68117 + ? (c >= 68112 && c <= 68115) + : c <= 68119) + : (c <= 68149 || (c >= 68192 && c <= 68220))))) + : (c <= 68252 || (c < 68448 + ? (c < 68352 + ? (c < 68297 + ? (c >= 68288 && c <= 68295) + : c <= 68324) + : (c <= 68405 || (c >= 68416 && c <= 68437))) + : (c <= 68466 || (c < 68736 + ? (c < 68608 + ? (c >= 68480 && c <= 68497) + : c <= 68680) + : (c <= 68786 || (c >= 68800 && c <= 68850))))))))) + : (c <= 68899 || (c < 70106 + ? (c < 69749 + ? (c < 69488 + ? (c < 69376 + ? (c < 69296 + ? (c >= 69248 && c <= 69289) + : c <= 69297) + : (c <= 69404 || (c < 69424 + ? c == 69415 + : c <= 69445))) + : (c <= 69505 || (c < 69635 + ? (c < 69600 + ? (c >= 69552 && c <= 69572) + : c <= 69622) + : (c <= 69687 || (c >= 69745 && c <= 69746))))) + : (c <= 69749 || (c < 69959 + ? (c < 69891 + ? (c < 69840 + ? (c >= 69763 && c <= 69807) + : c <= 69864) + : (c <= 69926 || c == 69956)) + : (c <= 69959 || (c < 70019 + ? (c < 70006 + ? (c >= 69968 && c <= 70002) + : c <= 70006) + : (c <= 70066 || (c >= 70081 && c <= 70084))))))) + : (c <= 70106 || (c < 70405 + ? (c < 70280 + ? (c < 70163 + ? (c < 70144 + ? c == 70108 + : c <= 70161) + : (c <= 70187 || (c >= 70272 && c <= 70278))) + : (c <= 70280 || (c < 70303 + ? (c < 70287 + ? (c >= 70282 && c <= 70285) + : c <= 70301) + : (c <= 70312 || (c >= 70320 && c <= 70366))))) + : (c <= 70412 || (c < 70453 + ? (c < 70442 + ? (c < 70419 + ? (c >= 70415 && c <= 70416) + : c <= 70440) + : (c <= 70448 || (c >= 70450 && c <= 70451))) + : (c <= 70457 || (c < 70493 + ? (c < 70480 + ? c == 70461 + : c <= 70480) + : (c <= 70497 || (c >= 70656 && c <= 70708))))))))))))) + : (c <= 70730 || (c < 119894 + ? (c < 73056 + ? (c < 72001 + ? (c < 71424 + ? (c < 71128 + ? (c < 70852 + ? (c < 70784 + ? (c >= 70751 && c <= 70753) + : c <= 70831) + : (c <= 70853 || (c < 71040 + ? c == 70855 + : c <= 71086))) + : (c <= 71131 || (c < 71296 + ? (c < 71236 + ? (c >= 71168 && c <= 71215) + : c <= 71236) + : (c <= 71338 || c == 71352)))) + : (c <= 71450 || (c < 71945 + ? (c < 71840 + ? (c < 71680 + ? (c >= 71488 && c <= 71494) + : c <= 71723) + : (c <= 71903 || (c >= 71935 && c <= 71942))) + : (c <= 71945 || (c < 71960 + ? (c < 71957 + ? (c >= 71948 && c <= 71955) + : c <= 71958) + : (c <= 71983 || c == 71999)))))) + : (c <= 72001 || (c < 72349 + ? (c < 72192 + ? (c < 72161 + ? (c < 72106 + ? (c >= 72096 && c <= 72103) + : c <= 72144) + : (c <= 72161 || c == 72163)) + : (c <= 72192 || (c < 72272 + ? (c < 72250 + ? (c >= 72203 && c <= 72242) + : c <= 72250) + : (c <= 72272 || (c >= 72284 && c <= 72329))))) + : (c <= 72349 || (c < 72818 + ? (c < 72714 + ? (c < 72704 + ? (c >= 72368 && c <= 72440) + : c <= 72712) + : (c <= 72750 || c == 72768)) + : (c <= 72847 || (c < 72971 + ? (c < 72968 + ? (c >= 72960 && c <= 72966) + : c <= 72969) + : (c <= 73008 || c == 73030)))))))) + : (c <= 73061 || (c < 93952 + ? (c < 82944 + ? (c < 73728 + ? (c < 73112 + ? (c < 73066 + ? (c >= 73063 && c <= 73064) + : c <= 73097) + : (c <= 73112 || (c < 73648 + ? (c >= 73440 && c <= 73458) + : c <= 73648))) + : (c <= 74649 || (c < 77712 + ? (c < 74880 + ? (c >= 74752 && c <= 74862) + : c <= 75075) + : (c <= 77808 || (c >= 77824 && c <= 78894))))) + : (c <= 83526 || (c < 92928 + ? (c < 92784 + ? (c < 92736 + ? (c >= 92160 && c <= 92728) + : c <= 92766) + : (c <= 92862 || (c >= 92880 && c <= 92909))) + : (c <= 92975 || (c < 93053 + ? (c < 93027 + ? (c >= 92992 && c <= 92995) + : c <= 93047) + : (c <= 93071 || (c >= 93760 && c <= 93823))))))) + : (c <= 94026 || (c < 110589 + ? (c < 94208 + ? (c < 94176 + ? (c < 94099 + ? c == 94032 + : c <= 94111) + : (c <= 94177 || c == 94179)) + : (c <= 100343 || (c < 110576 + ? (c < 101632 + ? (c >= 100352 && c <= 101589) + : c <= 101640) + : (c <= 110579 || (c >= 110581 && c <= 110587))))) + : (c <= 110590 || (c < 113664 + ? (c < 110948 + ? (c < 110928 + ? (c >= 110592 && c <= 110882) + : c <= 110930) + : (c <= 110951 || (c >= 110960 && c <= 111355))) + : (c <= 113770 || (c < 113808 + ? (c < 113792 + ? (c >= 113776 && c <= 113788) + : c <= 113800) + : (c <= 113817 || (c >= 119808 && c <= 119892))))))))))) + : (c <= 119964 || (c < 125259 + ? (c < 120572 + ? (c < 120086 + ? (c < 119995 + ? (c < 119973 + ? (c < 119970 + ? (c >= 119966 && c <= 119967) + : c <= 119970) + : (c <= 119974 || (c < 119982 + ? (c >= 119977 && c <= 119980) + : c <= 119993))) + : (c <= 119995 || (c < 120071 + ? (c < 120005 + ? (c >= 119997 && c <= 120003) + : c <= 120069) + : (c <= 120074 || (c >= 120077 && c <= 120084))))) + : (c <= 120092 || (c < 120138 + ? (c < 120128 + ? (c < 120123 + ? (c >= 120094 && c <= 120121) + : c <= 120126) + : (c <= 120132 || c == 120134)) + : (c <= 120144 || (c < 120514 + ? (c < 120488 + ? (c >= 120146 && c <= 120485) + : c <= 120512) + : (c <= 120538 || (c >= 120540 && c <= 120570))))))) + : (c <= 120596 || (c < 123191 + ? (c < 120714 + ? (c < 120656 + ? (c < 120630 + ? (c >= 120598 && c <= 120628) + : c <= 120654) + : (c <= 120686 || (c >= 120688 && c <= 120712))) + : (c <= 120744 || (c < 122624 + ? (c < 120772 + ? (c >= 120746 && c <= 120770) + : c <= 120779) + : (c <= 122654 || (c >= 123136 && c <= 123180))))) + : (c <= 123197 || (c < 124904 + ? (c < 123584 + ? (c < 123536 + ? c == 123214 + : c <= 123565) + : (c <= 123627 || (c >= 124896 && c <= 124902))) + : (c <= 124907 || (c < 124928 + ? (c < 124912 + ? (c >= 124909 && c <= 124910) + : c <= 124926) + : (c <= 125124 || (c >= 125184 && c <= 125251))))))))) + : (c <= 125259 || (c < 126559 + ? (c < 126535 + ? (c < 126505 + ? (c < 126497 + ? (c < 126469 + ? (c >= 126464 && c <= 126467) + : c <= 126495) + : (c <= 126498 || (c < 126503 + ? c == 126500 + : c <= 126503))) + : (c <= 126514 || (c < 126523 + ? (c < 126521 + ? (c >= 126516 && c <= 126519) + : c <= 126521) + : (c <= 126523 || c == 126530)))) + : (c <= 126535 || (c < 126548 + ? (c < 126541 + ? (c < 126539 + ? c == 126537 + : c <= 126539) + : (c <= 126543 || (c >= 126545 && c <= 126546))) + : (c <= 126548 || (c < 126555 + ? (c < 126553 + ? c == 126551 + : c <= 126553) + : (c <= 126555 || c == 126557)))))) + : (c <= 126559 || (c < 126625 + ? (c < 126580 + ? (c < 126567 + ? (c < 126564 + ? (c >= 126561 && c <= 126562) + : c <= 126564) + : (c <= 126570 || (c >= 126572 && c <= 126578))) + : (c <= 126583 || (c < 126592 + ? (c < 126590 + ? (c >= 126585 && c <= 126588) + : c <= 126590) + : (c <= 126601 || (c >= 126603 && c <= 126619))))) + : (c <= 126627 || (c < 177984 + ? (c < 131072 + ? (c < 126635 + ? (c >= 126629 && c <= 126633) + : c <= 126651) + : (c <= 173791 || (c >= 173824 && c <= 177976))) + : (c <= 178205 || (c < 194560 + ? (c < 183984 + ? (c >= 178208 && c <= 183969) + : c <= 191456) + : (c <= 195101 || (c >= 196608 && c <= 201546))))))))))))))))); +} + +static inline bool sym_identifier_character_set_2(int32_t c) { + return (c < 43514 + ? (c < 4193 + ? (c < 2707 + ? (c < 1994 + ? (c < 910 + ? (c < 736 + ? (c < 186 + ? (c < 'a' + ? (c < '_' + ? (c >= 'A' && c <= 'Z') + : c <= '_') + : (c <= 'z' || (c < 181 + ? c == 170 + : c <= 181))) + : (c <= 186 || (c < 248 + ? (c < 216 + ? (c >= 192 && c <= 214) + : c <= 246) + : (c <= 705 || (c >= 710 && c <= 721))))) + : (c <= 740 || (c < 891 + ? (c < 880 + ? (c < 750 + ? c == 748 + : c <= 750) + : (c <= 884 || (c >= 886 && c <= 887))) + : (c <= 893 || (c < 904 + ? (c < 902 + ? c == 895 + : c <= 902) + : (c <= 906 || c == 908)))))) + : (c <= 929 || (c < 1649 + ? (c < 1376 + ? (c < 1162 + ? (c < 1015 + ? (c >= 931 && c <= 1013) + : c <= 1153) + : (c <= 1327 || (c < 1369 + ? (c >= 1329 && c <= 1366) + : c <= 1369))) + : (c <= 1416 || (c < 1568 + ? (c < 1519 + ? (c >= 1488 && c <= 1514) + : c <= 1522) + : (c <= 1610 || (c >= 1646 && c <= 1647))))) + : (c <= 1747 || (c < 1791 + ? (c < 1774 + ? (c < 1765 + ? c == 1749 + : c <= 1766) + : (c <= 1775 || (c >= 1786 && c <= 1788))) + : (c <= 1791 || (c < 1869 + ? (c < 1810 + ? c == 1808 + : c <= 1839) + : (c <= 1957 || c == 1969)))))))) + : (c <= 2026 || (c < 2482 + ? (c < 2208 + ? (c < 2088 + ? (c < 2048 + ? (c < 2042 + ? (c >= 2036 && c <= 2037) + : c <= 2042) + : (c <= 2069 || (c < 2084 + ? c == 2074 + : c <= 2084))) + : (c <= 2088 || (c < 2160 + ? (c < 2144 + ? (c >= 2112 && c <= 2136) + : c <= 2154) + : (c <= 2183 || (c >= 2185 && c <= 2190))))) + : (c <= 2249 || (c < 2417 + ? (c < 2384 + ? (c < 2365 + ? (c >= 2308 && c <= 2361) + : c <= 2365) + : (c <= 2384 || (c >= 2392 && c <= 2401))) + : (c <= 2432 || (c < 2451 + ? (c < 2447 + ? (c >= 2437 && c <= 2444) + : c <= 2448) + : (c <= 2472 || (c >= 2474 && c <= 2480))))))) + : (c <= 2482 || (c < 2579 + ? (c < 2527 + ? (c < 2510 + ? (c < 2493 + ? (c >= 2486 && c <= 2489) + : c <= 2493) + : (c <= 2510 || (c >= 2524 && c <= 2525))) + : (c <= 2529 || (c < 2565 + ? (c < 2556 + ? (c >= 2544 && c <= 2545) + : c <= 2556) + : (c <= 2570 || (c >= 2575 && c <= 2576))))) + : (c <= 2600 || (c < 2649 + ? (c < 2613 + ? (c < 2610 + ? (c >= 2602 && c <= 2608) + : c <= 2611) + : (c <= 2614 || (c >= 2616 && c <= 2617))) + : (c <= 2652 || (c < 2693 + ? (c < 2674 + ? c == 2654 + : c <= 2676) + : (c <= 2701 || (c >= 2703 && c <= 2705))))))))))) + : (c <= 2728 || (c < 3242 + ? (c < 2962 + ? (c < 2858 + ? (c < 2784 + ? (c < 2741 + ? (c < 2738 + ? (c >= 2730 && c <= 2736) + : c <= 2739) + : (c <= 2745 || (c < 2768 + ? c == 2749 + : c <= 2768))) + : (c <= 2785 || (c < 2831 + ? (c < 2821 + ? c == 2809 + : c <= 2828) + : (c <= 2832 || (c >= 2835 && c <= 2856))))) + : (c <= 2864 || (c < 2911 + ? (c < 2877 + ? (c < 2869 + ? (c >= 2866 && c <= 2867) + : c <= 2873) + : (c <= 2877 || (c >= 2908 && c <= 2909))) + : (c <= 2913 || (c < 2949 + ? (c < 2947 + ? c == 2929 + : c <= 2947) + : (c <= 2954 || (c >= 2958 && c <= 2960))))))) + : (c <= 2965 || (c < 3090 + ? (c < 2984 + ? (c < 2974 + ? (c < 2972 + ? (c >= 2969 && c <= 2970) + : c <= 2972) + : (c <= 2975 || (c >= 2979 && c <= 2980))) + : (c <= 2986 || (c < 3077 + ? (c < 3024 + ? (c >= 2990 && c <= 3001) + : c <= 3024) + : (c <= 3084 || (c >= 3086 && c <= 3088))))) + : (c <= 3112 || (c < 3168 + ? (c < 3160 + ? (c < 3133 + ? (c >= 3114 && c <= 3129) + : c <= 3133) + : (c <= 3162 || c == 3165)) + : (c <= 3169 || (c < 3214 + ? (c < 3205 + ? c == 3200 + : c <= 3212) + : (c <= 3216 || (c >= 3218 && c <= 3240))))))))) + : (c <= 3251 || (c < 3648 + ? (c < 3412 + ? (c < 3332 + ? (c < 3293 + ? (c < 3261 + ? (c >= 3253 && c <= 3257) + : c <= 3261) + : (c <= 3294 || (c < 3313 + ? (c >= 3296 && c <= 3297) + : c <= 3314))) + : (c <= 3340 || (c < 3389 + ? (c < 3346 + ? (c >= 3342 && c <= 3344) + : c <= 3386) + : (c <= 3389 || c == 3406)))) + : (c <= 3414 || (c < 3507 + ? (c < 3461 + ? (c < 3450 + ? (c >= 3423 && c <= 3425) + : c <= 3455) + : (c <= 3478 || (c >= 3482 && c <= 3505))) + : (c <= 3515 || (c < 3585 + ? (c < 3520 + ? c == 3517 + : c <= 3526) + : (c <= 3632 || c == 3634)))))) + : (c <= 3654 || (c < 3782 + ? (c < 3749 + ? (c < 3718 + ? (c < 3716 + ? (c >= 3713 && c <= 3714) + : c <= 3716) + : (c <= 3722 || (c >= 3724 && c <= 3747))) + : (c <= 3749 || (c < 3773 + ? (c < 3762 + ? (c >= 3751 && c <= 3760) + : c <= 3762) + : (c <= 3773 || (c >= 3776 && c <= 3780))))) + : (c <= 3782 || (c < 3976 + ? (c < 3904 + ? (c < 3840 + ? (c >= 3804 && c <= 3807) + : c <= 3840) + : (c <= 3911 || (c >= 3913 && c <= 3948))) + : (c <= 3980 || (c < 4176 + ? (c < 4159 + ? (c >= 4096 && c <= 4138) + : c <= 4159) + : (c <= 4181 || (c >= 4186 && c <= 4189))))))))))))) + : (c <= 4193 || (c < 8134 + ? (c < 6176 + ? (c < 4808 + ? (c < 4688 + ? (c < 4295 + ? (c < 4213 + ? (c < 4206 + ? (c >= 4197 && c <= 4198) + : c <= 4208) + : (c <= 4225 || (c < 4256 + ? c == 4238 + : c <= 4293))) + : (c <= 4295 || (c < 4348 + ? (c < 4304 + ? c == 4301 + : c <= 4346) + : (c <= 4680 || (c >= 4682 && c <= 4685))))) + : (c <= 4694 || (c < 4752 + ? (c < 4704 + ? (c < 4698 + ? c == 4696 + : c <= 4701) + : (c <= 4744 || (c >= 4746 && c <= 4749))) + : (c <= 4784 || (c < 4800 + ? (c < 4792 + ? (c >= 4786 && c <= 4789) + : c <= 4798) + : (c <= 4800 || (c >= 4802 && c <= 4805))))))) + : (c <= 4822 || (c < 5792 + ? (c < 5024 + ? (c < 4888 + ? (c < 4882 + ? (c >= 4824 && c <= 4880) + : c <= 4885) + : (c <= 4954 || (c >= 4992 && c <= 5007))) + : (c <= 5109 || (c < 5743 + ? (c < 5121 + ? (c >= 5112 && c <= 5117) + : c <= 5740) + : (c <= 5759 || (c >= 5761 && c <= 5786))))) + : (c <= 5866 || (c < 5984 + ? (c < 5919 + ? (c < 5888 + ? (c >= 5870 && c <= 5880) + : c <= 5905) + : (c <= 5937 || (c >= 5952 && c <= 5969))) + : (c <= 5996 || (c < 6103 + ? (c < 6016 + ? (c >= 5998 && c <= 6000) + : c <= 6067) + : (c <= 6103 || c == 6108)))))))) + : (c <= 6264 || (c < 7312 + ? (c < 6823 + ? (c < 6512 + ? (c < 6320 + ? (c < 6314 + ? (c >= 6272 && c <= 6312) + : c <= 6314) + : (c <= 6389 || (c < 6480 + ? (c >= 6400 && c <= 6430) + : c <= 6509))) + : (c <= 6516 || (c < 6656 + ? (c < 6576 + ? (c >= 6528 && c <= 6571) + : c <= 6601) + : (c <= 6678 || (c >= 6688 && c <= 6740))))) + : (c <= 6823 || (c < 7098 + ? (c < 7043 + ? (c < 6981 + ? (c >= 6917 && c <= 6963) + : c <= 6988) + : (c <= 7072 || (c >= 7086 && c <= 7087))) + : (c <= 7141 || (c < 7258 + ? (c < 7245 + ? (c >= 7168 && c <= 7203) + : c <= 7247) + : (c <= 7293 || (c >= 7296 && c <= 7304))))))) + : (c <= 7354 || (c < 8008 + ? (c < 7418 + ? (c < 7406 + ? (c < 7401 + ? (c >= 7357 && c <= 7359) + : c <= 7404) + : (c <= 7411 || (c >= 7413 && c <= 7414))) + : (c <= 7418 || (c < 7960 + ? (c < 7680 + ? (c >= 7424 && c <= 7615) + : c <= 7957) + : (c <= 7965 || (c >= 7968 && c <= 8005))))) + : (c <= 8013 || (c < 8031 + ? (c < 8027 + ? (c < 8025 + ? (c >= 8016 && c <= 8023) + : c <= 8025) + : (c <= 8027 || c == 8029)) + : (c <= 8061 || (c < 8126 + ? (c < 8118 + ? (c >= 8064 && c <= 8116) + : c <= 8124) + : (c <= 8126 || (c >= 8130 && c <= 8132))))))))))) + : (c <= 8140 || (c < 12337 + ? (c < 8544 + ? (c < 8458 + ? (c < 8305 + ? (c < 8160 + ? (c < 8150 + ? (c >= 8144 && c <= 8147) + : c <= 8155) + : (c <= 8172 || (c < 8182 + ? (c >= 8178 && c <= 8180) + : c <= 8188))) + : (c <= 8305 || (c < 8450 + ? (c < 8336 + ? c == 8319 + : c <= 8348) + : (c <= 8450 || c == 8455)))) + : (c <= 8467 || (c < 8488 + ? (c < 8484 + ? (c < 8472 + ? c == 8469 + : c <= 8477) + : (c <= 8484 || c == 8486)) + : (c <= 8488 || (c < 8517 + ? (c < 8508 + ? (c >= 8490 && c <= 8505) + : c <= 8511) + : (c <= 8521 || c == 8526)))))) + : (c <= 8584 || (c < 11680 + ? (c < 11559 + ? (c < 11506 + ? (c < 11499 + ? (c >= 11264 && c <= 11492) + : c <= 11502) + : (c <= 11507 || (c >= 11520 && c <= 11557))) + : (c <= 11559 || (c < 11631 + ? (c < 11568 + ? c == 11565 + : c <= 11623) + : (c <= 11631 || (c >= 11648 && c <= 11670))))) + : (c <= 11686 || (c < 11720 + ? (c < 11704 + ? (c < 11696 + ? (c >= 11688 && c <= 11694) + : c <= 11702) + : (c <= 11710 || (c >= 11712 && c <= 11718))) + : (c <= 11726 || (c < 12293 + ? (c < 11736 + ? (c >= 11728 && c <= 11734) + : c <= 11742) + : (c <= 12295 || (c >= 12321 && c <= 12329))))))))) + : (c <= 12341 || (c < 42891 + ? (c < 19968 + ? (c < 12549 + ? (c < 12445 + ? (c < 12353 + ? (c >= 12344 && c <= 12348) + : c <= 12438) + : (c <= 12447 || (c < 12540 + ? (c >= 12449 && c <= 12538) + : c <= 12543))) + : (c <= 12591 || (c < 12784 + ? (c < 12704 + ? (c >= 12593 && c <= 12686) + : c <= 12735) + : (c <= 12799 || (c >= 13312 && c <= 19903))))) + : (c <= 42124 || (c < 42560 + ? (c < 42512 + ? (c < 42240 + ? (c >= 42192 && c <= 42237) + : c <= 42508) + : (c <= 42527 || (c >= 42538 && c <= 42539))) + : (c <= 42606 || (c < 42775 + ? (c < 42656 + ? (c >= 42623 && c <= 42653) + : c <= 42735) + : (c <= 42783 || (c >= 42786 && c <= 42888))))))) + : (c <= 42954 || (c < 43250 + ? (c < 43011 + ? (c < 42965 + ? (c < 42963 + ? (c >= 42960 && c <= 42961) + : c <= 42963) + : (c <= 42969 || (c >= 42994 && c <= 43009))) + : (c <= 43013 || (c < 43072 + ? (c < 43020 + ? (c >= 43015 && c <= 43018) + : c <= 43042) + : (c <= 43123 || (c >= 43138 && c <= 43187))))) + : (c <= 43255 || (c < 43360 + ? (c < 43274 + ? (c < 43261 + ? c == 43259 + : c <= 43262) + : (c <= 43301 || (c >= 43312 && c <= 43334))) + : (c <= 43388 || (c < 43488 + ? (c < 43471 + ? (c >= 43396 && c <= 43442) + : c <= 43471) + : (c <= 43492 || (c >= 43494 && c <= 43503))))))))))))))) + : (c <= 43518 || (c < 70727 + ? (c < 66956 + ? (c < 64914 + ? (c < 43868 + ? (c < 43714 + ? (c < 43646 + ? (c < 43588 + ? (c < 43584 + ? (c >= 43520 && c <= 43560) + : c <= 43586) + : (c <= 43595 || (c < 43642 + ? (c >= 43616 && c <= 43638) + : c <= 43642))) + : (c <= 43695 || (c < 43705 + ? (c < 43701 + ? c == 43697 + : c <= 43702) + : (c <= 43709 || c == 43712)))) + : (c <= 43714 || (c < 43785 + ? (c < 43762 + ? (c < 43744 + ? (c >= 43739 && c <= 43741) + : c <= 43754) + : (c <= 43764 || (c >= 43777 && c <= 43782))) + : (c <= 43790 || (c < 43816 + ? (c < 43808 + ? (c >= 43793 && c <= 43798) + : c <= 43814) + : (c <= 43822 || (c >= 43824 && c <= 43866))))))) + : (c <= 43881 || (c < 64287 + ? (c < 63744 + ? (c < 55216 + ? (c < 44032 + ? (c >= 43888 && c <= 44002) + : c <= 55203) + : (c <= 55238 || (c >= 55243 && c <= 55291))) + : (c <= 64109 || (c < 64275 + ? (c < 64256 + ? (c >= 64112 && c <= 64217) + : c <= 64262) + : (c <= 64279 || c == 64285)))) + : (c <= 64296 || (c < 64323 + ? (c < 64318 + ? (c < 64312 + ? (c >= 64298 && c <= 64310) + : c <= 64316) + : (c <= 64318 || (c >= 64320 && c <= 64321))) + : (c <= 64324 || (c < 64612 + ? (c < 64467 + ? (c >= 64326 && c <= 64433) + : c <= 64605) + : (c <= 64829 || (c >= 64848 && c <= 64911))))))))) + : (c <= 64967 || (c < 65599 + ? (c < 65382 + ? (c < 65147 + ? (c < 65139 + ? (c < 65137 + ? (c >= 65008 && c <= 65017) + : c <= 65137) + : (c <= 65139 || (c < 65145 + ? c == 65143 + : c <= 65145))) + : (c <= 65147 || (c < 65313 + ? (c < 65151 + ? c == 65149 + : c <= 65276) + : (c <= 65338 || (c >= 65345 && c <= 65370))))) + : (c <= 65437 || (c < 65498 + ? (c < 65482 + ? (c < 65474 + ? (c >= 65440 && c <= 65470) + : c <= 65479) + : (c <= 65487 || (c >= 65490 && c <= 65495))) + : (c <= 65500 || (c < 65576 + ? (c < 65549 + ? (c >= 65536 && c <= 65547) + : c <= 65574) + : (c <= 65594 || (c >= 65596 && c <= 65597))))))) + : (c <= 65613 || (c < 66464 + ? (c < 66208 + ? (c < 65856 + ? (c < 65664 + ? (c >= 65616 && c <= 65629) + : c <= 65786) + : (c <= 65908 || (c >= 66176 && c <= 66204))) + : (c <= 66256 || (c < 66384 + ? (c < 66349 + ? (c >= 66304 && c <= 66335) + : c <= 66378) + : (c <= 66421 || (c >= 66432 && c <= 66461))))) + : (c <= 66499 || (c < 66776 + ? (c < 66560 + ? (c < 66513 + ? (c >= 66504 && c <= 66511) + : c <= 66517) + : (c <= 66717 || (c >= 66736 && c <= 66771))) + : (c <= 66811 || (c < 66928 + ? (c < 66864 + ? (c >= 66816 && c <= 66855) + : c <= 66915) + : (c <= 66938 || (c >= 66940 && c <= 66954))))))))))) + : (c <= 66962 || (c < 68864 + ? (c < 67828 + ? (c < 67506 + ? (c < 67072 + ? (c < 66979 + ? (c < 66967 + ? (c >= 66964 && c <= 66965) + : c <= 66977) + : (c <= 66993 || (c < 67003 + ? (c >= 66995 && c <= 67001) + : c <= 67004))) + : (c <= 67382 || (c < 67456 + ? (c < 67424 + ? (c >= 67392 && c <= 67413) + : c <= 67431) + : (c <= 67461 || (c >= 67463 && c <= 67504))))) + : (c <= 67514 || (c < 67644 + ? (c < 67594 + ? (c < 67592 + ? (c >= 67584 && c <= 67589) + : c <= 67592) + : (c <= 67637 || (c >= 67639 && c <= 67640))) + : (c <= 67644 || (c < 67712 + ? (c < 67680 + ? (c >= 67647 && c <= 67669) + : c <= 67702) + : (c <= 67742 || (c >= 67808 && c <= 67826))))))) + : (c <= 67829 || (c < 68224 + ? (c < 68096 + ? (c < 67968 + ? (c < 67872 + ? (c >= 67840 && c <= 67861) + : c <= 67897) + : (c <= 68023 || (c >= 68030 && c <= 68031))) + : (c <= 68096 || (c < 68121 + ? (c < 68117 + ? (c >= 68112 && c <= 68115) + : c <= 68119) + : (c <= 68149 || (c >= 68192 && c <= 68220))))) + : (c <= 68252 || (c < 68448 + ? (c < 68352 + ? (c < 68297 + ? (c >= 68288 && c <= 68295) + : c <= 68324) + : (c <= 68405 || (c >= 68416 && c <= 68437))) + : (c <= 68466 || (c < 68736 + ? (c < 68608 + ? (c >= 68480 && c <= 68497) + : c <= 68680) + : (c <= 68786 || (c >= 68800 && c <= 68850))))))))) + : (c <= 68899 || (c < 70106 + ? (c < 69749 + ? (c < 69488 + ? (c < 69376 + ? (c < 69296 + ? (c >= 69248 && c <= 69289) + : c <= 69297) + : (c <= 69404 || (c < 69424 + ? c == 69415 + : c <= 69445))) + : (c <= 69505 || (c < 69635 + ? (c < 69600 + ? (c >= 69552 && c <= 69572) + : c <= 69622) + : (c <= 69687 || (c >= 69745 && c <= 69746))))) + : (c <= 69749 || (c < 69959 + ? (c < 69891 + ? (c < 69840 + ? (c >= 69763 && c <= 69807) + : c <= 69864) + : (c <= 69926 || c == 69956)) + : (c <= 69959 || (c < 70019 + ? (c < 70006 + ? (c >= 69968 && c <= 70002) + : c <= 70006) + : (c <= 70066 || (c >= 70081 && c <= 70084))))))) + : (c <= 70106 || (c < 70405 + ? (c < 70280 + ? (c < 70163 + ? (c < 70144 + ? c == 70108 + : c <= 70161) + : (c <= 70187 || (c >= 70272 && c <= 70278))) + : (c <= 70280 || (c < 70303 + ? (c < 70287 + ? (c >= 70282 && c <= 70285) + : c <= 70301) + : (c <= 70312 || (c >= 70320 && c <= 70366))))) + : (c <= 70412 || (c < 70453 + ? (c < 70442 + ? (c < 70419 + ? (c >= 70415 && c <= 70416) + : c <= 70440) + : (c <= 70448 || (c >= 70450 && c <= 70451))) + : (c <= 70457 || (c < 70493 + ? (c < 70480 + ? c == 70461 + : c <= 70480) + : (c <= 70497 || (c >= 70656 && c <= 70708))))))))))))) + : (c <= 70730 || (c < 119894 + ? (c < 73056 + ? (c < 72001 + ? (c < 71424 + ? (c < 71128 + ? (c < 70852 + ? (c < 70784 + ? (c >= 70751 && c <= 70753) + : c <= 70831) + : (c <= 70853 || (c < 71040 + ? c == 70855 + : c <= 71086))) + : (c <= 71131 || (c < 71296 + ? (c < 71236 + ? (c >= 71168 && c <= 71215) + : c <= 71236) + : (c <= 71338 || c == 71352)))) + : (c <= 71450 || (c < 71945 + ? (c < 71840 + ? (c < 71680 + ? (c >= 71488 && c <= 71494) + : c <= 71723) + : (c <= 71903 || (c >= 71935 && c <= 71942))) + : (c <= 71945 || (c < 71960 + ? (c < 71957 + ? (c >= 71948 && c <= 71955) + : c <= 71958) + : (c <= 71983 || c == 71999)))))) + : (c <= 72001 || (c < 72349 + ? (c < 72192 + ? (c < 72161 + ? (c < 72106 + ? (c >= 72096 && c <= 72103) + : c <= 72144) + : (c <= 72161 || c == 72163)) + : (c <= 72192 || (c < 72272 + ? (c < 72250 + ? (c >= 72203 && c <= 72242) + : c <= 72250) + : (c <= 72272 || (c >= 72284 && c <= 72329))))) + : (c <= 72349 || (c < 72818 + ? (c < 72714 + ? (c < 72704 + ? (c >= 72368 && c <= 72440) + : c <= 72712) + : (c <= 72750 || c == 72768)) + : (c <= 72847 || (c < 72971 + ? (c < 72968 + ? (c >= 72960 && c <= 72966) + : c <= 72969) + : (c <= 73008 || c == 73030)))))))) + : (c <= 73061 || (c < 93952 + ? (c < 82944 + ? (c < 73728 + ? (c < 73112 + ? (c < 73066 + ? (c >= 73063 && c <= 73064) + : c <= 73097) + : (c <= 73112 || (c < 73648 + ? (c >= 73440 && c <= 73458) + : c <= 73648))) + : (c <= 74649 || (c < 77712 + ? (c < 74880 + ? (c >= 74752 && c <= 74862) + : c <= 75075) + : (c <= 77808 || (c >= 77824 && c <= 78894))))) + : (c <= 83526 || (c < 92928 + ? (c < 92784 + ? (c < 92736 + ? (c >= 92160 && c <= 92728) + : c <= 92766) + : (c <= 92862 || (c >= 92880 && c <= 92909))) + : (c <= 92975 || (c < 93053 + ? (c < 93027 + ? (c >= 92992 && c <= 92995) + : c <= 93047) + : (c <= 93071 || (c >= 93760 && c <= 93823))))))) + : (c <= 94026 || (c < 110589 + ? (c < 94208 + ? (c < 94176 + ? (c < 94099 + ? c == 94032 + : c <= 94111) + : (c <= 94177 || c == 94179)) + : (c <= 100343 || (c < 110576 + ? (c < 101632 + ? (c >= 100352 && c <= 101589) + : c <= 101640) + : (c <= 110579 || (c >= 110581 && c <= 110587))))) + : (c <= 110590 || (c < 113664 + ? (c < 110948 + ? (c < 110928 + ? (c >= 110592 && c <= 110882) + : c <= 110930) + : (c <= 110951 || (c >= 110960 && c <= 111355))) + : (c <= 113770 || (c < 113808 + ? (c < 113792 + ? (c >= 113776 && c <= 113788) + : c <= 113800) + : (c <= 113817 || (c >= 119808 && c <= 119892))))))))))) + : (c <= 119964 || (c < 125259 + ? (c < 120572 + ? (c < 120086 + ? (c < 119995 + ? (c < 119973 + ? (c < 119970 + ? (c >= 119966 && c <= 119967) + : c <= 119970) + : (c <= 119974 || (c < 119982 + ? (c >= 119977 && c <= 119980) + : c <= 119993))) + : (c <= 119995 || (c < 120071 + ? (c < 120005 + ? (c >= 119997 && c <= 120003) + : c <= 120069) + : (c <= 120074 || (c >= 120077 && c <= 120084))))) + : (c <= 120092 || (c < 120138 + ? (c < 120128 + ? (c < 120123 + ? (c >= 120094 && c <= 120121) + : c <= 120126) + : (c <= 120132 || c == 120134)) + : (c <= 120144 || (c < 120514 + ? (c < 120488 + ? (c >= 120146 && c <= 120485) + : c <= 120512) + : (c <= 120538 || (c >= 120540 && c <= 120570))))))) + : (c <= 120596 || (c < 123191 + ? (c < 120714 + ? (c < 120656 + ? (c < 120630 + ? (c >= 120598 && c <= 120628) + : c <= 120654) + : (c <= 120686 || (c >= 120688 && c <= 120712))) + : (c <= 120744 || (c < 122624 + ? (c < 120772 + ? (c >= 120746 && c <= 120770) + : c <= 120779) + : (c <= 122654 || (c >= 123136 && c <= 123180))))) + : (c <= 123197 || (c < 124904 + ? (c < 123584 + ? (c < 123536 + ? c == 123214 + : c <= 123565) + : (c <= 123627 || (c >= 124896 && c <= 124902))) + : (c <= 124907 || (c < 124928 + ? (c < 124912 + ? (c >= 124909 && c <= 124910) + : c <= 124926) + : (c <= 125124 || (c >= 125184 && c <= 125251))))))))) + : (c <= 125259 || (c < 126559 + ? (c < 126535 + ? (c < 126505 + ? (c < 126497 + ? (c < 126469 + ? (c >= 126464 && c <= 126467) + : c <= 126495) + : (c <= 126498 || (c < 126503 + ? c == 126500 + : c <= 126503))) + : (c <= 126514 || (c < 126523 + ? (c < 126521 + ? (c >= 126516 && c <= 126519) + : c <= 126521) + : (c <= 126523 || c == 126530)))) + : (c <= 126535 || (c < 126548 + ? (c < 126541 + ? (c < 126539 + ? c == 126537 + : c <= 126539) + : (c <= 126543 || (c >= 126545 && c <= 126546))) + : (c <= 126548 || (c < 126555 + ? (c < 126553 + ? c == 126551 + : c <= 126553) + : (c <= 126555 || c == 126557)))))) + : (c <= 126559 || (c < 126625 + ? (c < 126580 + ? (c < 126567 + ? (c < 126564 + ? (c >= 126561 && c <= 126562) + : c <= 126564) + : (c <= 126570 || (c >= 126572 && c <= 126578))) + : (c <= 126583 || (c < 126592 + ? (c < 126590 + ? (c >= 126585 && c <= 126588) + : c <= 126590) + : (c <= 126601 || (c >= 126603 && c <= 126619))))) + : (c <= 126627 || (c < 177984 + ? (c < 131072 + ? (c < 126635 + ? (c >= 126629 && c <= 126633) + : c <= 126651) + : (c <= 173791 || (c >= 173824 && c <= 177976))) + : (c <= 178205 || (c < 194560 + ? (c < 183984 + ? (c >= 178208 && c <= 183969) + : c <= 191456) + : (c <= 195101 || (c >= 196608 && c <= 201546))))))))))))))))); +} + +static inline bool sym_identifier_character_set_3(int32_t c) { + return (c < 43616 + ? (c < 3782 + ? (c < 2748 + ? (c < 2045 + ? (c < 1015 + ? (c < 710 + ? (c < 181 + ? (c < '_' + ? (c < 'A' + ? (c >= '0' && c <= '9') + : c <= 'Z') + : (c <= '_' || (c < 170 + ? (c >= 'a' && c <= 'z') + : c <= 170))) + : (c <= 181 || (c < 192 + ? (c < 186 + ? c == 183 + : c <= 186) + : (c <= 214 || (c < 248 + ? (c >= 216 && c <= 246) + : c <= 705))))) + : (c <= 721 || (c < 891 + ? (c < 750 + ? (c < 748 + ? (c >= 736 && c <= 740) + : c <= 748) + : (c <= 750 || (c < 886 + ? (c >= 768 && c <= 884) + : c <= 887))) + : (c <= 893 || (c < 908 + ? (c < 902 + ? c == 895 + : c <= 906) + : (c <= 908 || (c < 931 + ? (c >= 910 && c <= 929) + : c <= 1013))))))) + : (c <= 1153 || (c < 1519 + ? (c < 1425 + ? (c < 1329 + ? (c < 1162 + ? (c >= 1155 && c <= 1159) + : c <= 1327) + : (c <= 1366 || (c < 1376 + ? c == 1369 + : c <= 1416))) + : (c <= 1469 || (c < 1476 + ? (c < 1473 + ? c == 1471 + : c <= 1474) + : (c <= 1477 || (c < 1488 + ? c == 1479 + : c <= 1514))))) + : (c <= 1522 || (c < 1770 + ? (c < 1646 + ? (c < 1568 + ? (c >= 1552 && c <= 1562) + : c <= 1641) + : (c <= 1747 || (c < 1759 + ? (c >= 1749 && c <= 1756) + : c <= 1768))) + : (c <= 1788 || (c < 1869 + ? (c < 1808 + ? c == 1791 + : c <= 1866) + : (c <= 1969 || (c < 2042 + ? (c >= 1984 && c <= 2037) + : c <= 2042))))))))) + : (c <= 2045 || (c < 2558 + ? (c < 2451 + ? (c < 2200 + ? (c < 2144 + ? (c < 2112 + ? (c >= 2048 && c <= 2093) + : c <= 2139) + : (c <= 2154 || (c < 2185 + ? (c >= 2160 && c <= 2183) + : c <= 2190))) + : (c <= 2273 || (c < 2417 + ? (c < 2406 + ? (c >= 2275 && c <= 2403) + : c <= 2415) + : (c <= 2435 || (c < 2447 + ? (c >= 2437 && c <= 2444) + : c <= 2448))))) + : (c <= 2472 || (c < 2507 + ? (c < 2486 + ? (c < 2482 + ? (c >= 2474 && c <= 2480) + : c <= 2482) + : (c <= 2489 || (c < 2503 + ? (c >= 2492 && c <= 2500) + : c <= 2504))) + : (c <= 2510 || (c < 2527 + ? (c < 2524 + ? c == 2519 + : c <= 2525) + : (c <= 2531 || (c < 2556 + ? (c >= 2534 && c <= 2545) + : c <= 2556))))))) + : (c <= 2558 || (c < 2635 + ? (c < 2610 + ? (c < 2575 + ? (c < 2565 + ? (c >= 2561 && c <= 2563) + : c <= 2570) + : (c <= 2576 || (c < 2602 + ? (c >= 2579 && c <= 2600) + : c <= 2608))) + : (c <= 2611 || (c < 2620 + ? (c < 2616 + ? (c >= 2613 && c <= 2614) + : c <= 2617) + : (c <= 2620 || (c < 2631 + ? (c >= 2622 && c <= 2626) + : c <= 2632))))) + : (c <= 2637 || (c < 2693 + ? (c < 2654 + ? (c < 2649 + ? c == 2641 + : c <= 2652) + : (c <= 2654 || (c < 2689 + ? (c >= 2662 && c <= 2677) + : c <= 2691))) + : (c <= 2701 || (c < 2730 + ? (c < 2707 + ? (c >= 2703 && c <= 2705) + : c <= 2728) + : (c <= 2736 || (c < 2741 + ? (c >= 2738 && c <= 2739) + : c <= 2745))))))))))) + : (c <= 2757 || (c < 3168 + ? (c < 2958 + ? (c < 2866 + ? (c < 2809 + ? (c < 2768 + ? (c < 2763 + ? (c >= 2759 && c <= 2761) + : c <= 2765) + : (c <= 2768 || (c < 2790 + ? (c >= 2784 && c <= 2787) + : c <= 2799))) + : (c <= 2815 || (c < 2831 + ? (c < 2821 + ? (c >= 2817 && c <= 2819) + : c <= 2828) + : (c <= 2832 || (c < 2858 + ? (c >= 2835 && c <= 2856) + : c <= 2864))))) + : (c <= 2867 || (c < 2908 + ? (c < 2887 + ? (c < 2876 + ? (c >= 2869 && c <= 2873) + : c <= 2884) + : (c <= 2888 || (c < 2901 + ? (c >= 2891 && c <= 2893) + : c <= 2903))) + : (c <= 2909 || (c < 2929 + ? (c < 2918 + ? (c >= 2911 && c <= 2915) + : c <= 2927) + : (c <= 2929 || (c < 2949 + ? (c >= 2946 && c <= 2947) + : c <= 2954))))))) + : (c <= 2960 || (c < 3031 + ? (c < 2984 + ? (c < 2972 + ? (c < 2969 + ? (c >= 2962 && c <= 2965) + : c <= 2970) + : (c <= 2972 || (c < 2979 + ? (c >= 2974 && c <= 2975) + : c <= 2980))) + : (c <= 2986 || (c < 3014 + ? (c < 3006 + ? (c >= 2990 && c <= 3001) + : c <= 3010) + : (c <= 3016 || (c < 3024 + ? (c >= 3018 && c <= 3021) + : c <= 3024))))) + : (c <= 3031 || (c < 3132 + ? (c < 3086 + ? (c < 3072 + ? (c >= 3046 && c <= 3055) + : c <= 3084) + : (c <= 3088 || (c < 3114 + ? (c >= 3090 && c <= 3112) + : c <= 3129))) + : (c <= 3140 || (c < 3157 + ? (c < 3146 + ? (c >= 3142 && c <= 3144) + : c <= 3149) + : (c <= 3158 || (c < 3165 + ? (c >= 3160 && c <= 3162) + : c <= 3165))))))))) + : (c <= 3171 || (c < 3450 + ? (c < 3293 + ? (c < 3242 + ? (c < 3205 + ? (c < 3200 + ? (c >= 3174 && c <= 3183) + : c <= 3203) + : (c <= 3212 || (c < 3218 + ? (c >= 3214 && c <= 3216) + : c <= 3240))) + : (c <= 3251 || (c < 3270 + ? (c < 3260 + ? (c >= 3253 && c <= 3257) + : c <= 3268) + : (c <= 3272 || (c < 3285 + ? (c >= 3274 && c <= 3277) + : c <= 3286))))) + : (c <= 3294 || (c < 3346 + ? (c < 3313 + ? (c < 3302 + ? (c >= 3296 && c <= 3299) + : c <= 3311) + : (c <= 3314 || (c < 3342 + ? (c >= 3328 && c <= 3340) + : c <= 3344))) + : (c <= 3396 || (c < 3412 + ? (c < 3402 + ? (c >= 3398 && c <= 3400) + : c <= 3406) + : (c <= 3415 || (c < 3430 + ? (c >= 3423 && c <= 3427) + : c <= 3439))))))) + : (c <= 3455 || (c < 3570 + ? (c < 3520 + ? (c < 3482 + ? (c < 3461 + ? (c >= 3457 && c <= 3459) + : c <= 3478) + : (c <= 3505 || (c < 3517 + ? (c >= 3507 && c <= 3515) + : c <= 3517))) + : (c <= 3526 || (c < 3542 + ? (c < 3535 + ? c == 3530 + : c <= 3540) + : (c <= 3542 || (c < 3558 + ? (c >= 3544 && c <= 3551) + : c <= 3567))))) + : (c <= 3571 || (c < 3718 + ? (c < 3664 + ? (c < 3648 + ? (c >= 3585 && c <= 3642) + : c <= 3662) + : (c <= 3673 || (c < 3716 + ? (c >= 3713 && c <= 3714) + : c <= 3716))) + : (c <= 3722 || (c < 3751 + ? (c < 3749 + ? (c >= 3724 && c <= 3747) + : c <= 3749) + : (c <= 3773 || (c >= 3776 && c <= 3780))))))))))))) + : (c <= 3782 || (c < 8025 + ? (c < 5888 + ? (c < 4688 + ? (c < 3953 + ? (c < 3872 + ? (c < 3804 + ? (c < 3792 + ? (c >= 3784 && c <= 3789) + : c <= 3801) + : (c <= 3807 || (c < 3864 + ? c == 3840 + : c <= 3865))) + : (c <= 3881 || (c < 3897 + ? (c < 3895 + ? c == 3893 + : c <= 3895) + : (c <= 3897 || (c < 3913 + ? (c >= 3902 && c <= 3911) + : c <= 3948))))) + : (c <= 3972 || (c < 4256 + ? (c < 4038 + ? (c < 3993 + ? (c >= 3974 && c <= 3991) + : c <= 4028) + : (c <= 4038 || (c < 4176 + ? (c >= 4096 && c <= 4169) + : c <= 4253))) + : (c <= 4293 || (c < 4304 + ? (c < 4301 + ? c == 4295 + : c <= 4301) + : (c <= 4346 || (c < 4682 + ? (c >= 4348 && c <= 4680) + : c <= 4685))))))) + : (c <= 4694 || (c < 4882 + ? (c < 4786 + ? (c < 4704 + ? (c < 4698 + ? c == 4696 + : c <= 4701) + : (c <= 4744 || (c < 4752 + ? (c >= 4746 && c <= 4749) + : c <= 4784))) + : (c <= 4789 || (c < 4802 + ? (c < 4800 + ? (c >= 4792 && c <= 4798) + : c <= 4800) + : (c <= 4805 || (c < 4824 + ? (c >= 4808 && c <= 4822) + : c <= 4880))))) + : (c <= 4885 || (c < 5112 + ? (c < 4969 + ? (c < 4957 + ? (c >= 4888 && c <= 4954) + : c <= 4959) + : (c <= 4977 || (c < 5024 + ? (c >= 4992 && c <= 5007) + : c <= 5109))) + : (c <= 5117 || (c < 5761 + ? (c < 5743 + ? (c >= 5121 && c <= 5740) + : c <= 5759) + : (c <= 5786 || (c < 5870 + ? (c >= 5792 && c <= 5866) + : c <= 5880))))))))) + : (c <= 5909 || (c < 6688 + ? (c < 6176 + ? (c < 6016 + ? (c < 5984 + ? (c < 5952 + ? (c >= 5919 && c <= 5940) + : c <= 5971) + : (c <= 5996 || (c < 6002 + ? (c >= 5998 && c <= 6000) + : c <= 6003))) + : (c <= 6099 || (c < 6112 + ? (c < 6108 + ? c == 6103 + : c <= 6109) + : (c <= 6121 || (c < 6159 + ? (c >= 6155 && c <= 6157) + : c <= 6169))))) + : (c <= 6264 || (c < 6470 + ? (c < 6400 + ? (c < 6320 + ? (c >= 6272 && c <= 6314) + : c <= 6389) + : (c <= 6430 || (c < 6448 + ? (c >= 6432 && c <= 6443) + : c <= 6459))) + : (c <= 6509 || (c < 6576 + ? (c < 6528 + ? (c >= 6512 && c <= 6516) + : c <= 6571) + : (c <= 6601 || (c < 6656 + ? (c >= 6608 && c <= 6618) + : c <= 6683))))))) + : (c <= 6750 || (c < 7232 + ? (c < 6847 + ? (c < 6800 + ? (c < 6783 + ? (c >= 6752 && c <= 6780) + : c <= 6793) + : (c <= 6809 || (c < 6832 + ? c == 6823 + : c <= 6845))) + : (c <= 6862 || (c < 7019 + ? (c < 6992 + ? (c >= 6912 && c <= 6988) + : c <= 7001) + : (c <= 7027 || (c < 7168 + ? (c >= 7040 && c <= 7155) + : c <= 7223))))) + : (c <= 7241 || (c < 7380 + ? (c < 7312 + ? (c < 7296 + ? (c >= 7245 && c <= 7293) + : c <= 7304) + : (c <= 7354 || (c < 7376 + ? (c >= 7357 && c <= 7359) + : c <= 7378))) + : (c <= 7418 || (c < 7968 + ? (c < 7960 + ? (c >= 7424 && c <= 7957) + : c <= 7965) + : (c <= 8005 || (c < 8016 + ? (c >= 8008 && c <= 8013) + : c <= 8023))))))))))) + : (c <= 8025 || (c < 11720 + ? (c < 8458 + ? (c < 8178 + ? (c < 8126 + ? (c < 8031 + ? (c < 8029 + ? c == 8027 + : c <= 8029) + : (c <= 8061 || (c < 8118 + ? (c >= 8064 && c <= 8116) + : c <= 8124))) + : (c <= 8126 || (c < 8144 + ? (c < 8134 + ? (c >= 8130 && c <= 8132) + : c <= 8140) + : (c <= 8147 || (c < 8160 + ? (c >= 8150 && c <= 8155) + : c <= 8172))))) + : (c <= 8180 || (c < 8336 + ? (c < 8276 + ? (c < 8255 + ? (c >= 8182 && c <= 8188) + : c <= 8256) + : (c <= 8276 || (c < 8319 + ? c == 8305 + : c <= 8319))) + : (c <= 8348 || (c < 8421 + ? (c < 8417 + ? (c >= 8400 && c <= 8412) + : c <= 8417) + : (c <= 8432 || (c < 8455 + ? c == 8450 + : c <= 8455))))))) + : (c <= 8467 || (c < 11499 + ? (c < 8490 + ? (c < 8484 + ? (c < 8472 + ? c == 8469 + : c <= 8477) + : (c <= 8484 || (c < 8488 + ? c == 8486 + : c <= 8488))) + : (c <= 8505 || (c < 8526 + ? (c < 8517 + ? (c >= 8508 && c <= 8511) + : c <= 8521) + : (c <= 8526 || (c < 11264 + ? (c >= 8544 && c <= 8584) + : c <= 11492))))) + : (c <= 11507 || (c < 11647 + ? (c < 11565 + ? (c < 11559 + ? (c >= 11520 && c <= 11557) + : c <= 11559) + : (c <= 11565 || (c < 11631 + ? (c >= 11568 && c <= 11623) + : c <= 11631))) + : (c <= 11670 || (c < 11696 + ? (c < 11688 + ? (c >= 11680 && c <= 11686) + : c <= 11694) + : (c <= 11702 || (c < 11712 + ? (c >= 11704 && c <= 11710) + : c <= 11718))))))))) + : (c <= 11726 || (c < 42623 + ? (c < 12540 + ? (c < 12337 + ? (c < 11744 + ? (c < 11736 + ? (c >= 11728 && c <= 11734) + : c <= 11742) + : (c <= 11775 || (c < 12321 + ? (c >= 12293 && c <= 12295) + : c <= 12335))) + : (c <= 12341 || (c < 12441 + ? (c < 12353 + ? (c >= 12344 && c <= 12348) + : c <= 12438) + : (c <= 12442 || (c < 12449 + ? (c >= 12445 && c <= 12447) + : c <= 12538))))) + : (c <= 12543 || (c < 19968 + ? (c < 12704 + ? (c < 12593 + ? (c >= 12549 && c <= 12591) + : c <= 12686) + : (c <= 12735 || (c < 13312 + ? (c >= 12784 && c <= 12799) + : c <= 19903))) + : (c <= 42124 || (c < 42512 + ? (c < 42240 + ? (c >= 42192 && c <= 42237) + : c <= 42508) + : (c <= 42539 || (c < 42612 + ? (c >= 42560 && c <= 42607) + : c <= 42621))))))) + : (c <= 42737 || (c < 43232 + ? (c < 42965 + ? (c < 42891 + ? (c < 42786 + ? (c >= 42775 && c <= 42783) + : c <= 42888) + : (c <= 42954 || (c < 42963 + ? (c >= 42960 && c <= 42961) + : c <= 42963))) + : (c <= 42969 || (c < 43072 + ? (c < 43052 + ? (c >= 42994 && c <= 43047) + : c <= 43052) + : (c <= 43123 || (c < 43216 + ? (c >= 43136 && c <= 43205) + : c <= 43225))))) + : (c <= 43255 || (c < 43471 + ? (c < 43312 + ? (c < 43261 + ? c == 43259 + : c <= 43309) + : (c <= 43347 || (c < 43392 + ? (c >= 43360 && c <= 43388) + : c <= 43456))) + : (c <= 43481 || (c < 43584 + ? (c < 43520 + ? (c >= 43488 && c <= 43518) + : c <= 43574) + : (c <= 43597 || (c >= 43600 && c <= 43609))))))))))))))) + : (c <= 43638 || (c < 71453 + ? (c < 67639 + ? (c < 65345 + ? (c < 64312 + ? (c < 43888 + ? (c < 43785 + ? (c < 43744 + ? (c < 43739 + ? (c >= 43642 && c <= 43714) + : c <= 43741) + : (c <= 43759 || (c < 43777 + ? (c >= 43762 && c <= 43766) + : c <= 43782))) + : (c <= 43790 || (c < 43816 + ? (c < 43808 + ? (c >= 43793 && c <= 43798) + : c <= 43814) + : (c <= 43822 || (c < 43868 + ? (c >= 43824 && c <= 43866) + : c <= 43881))))) + : (c <= 44010 || (c < 63744 + ? (c < 44032 + ? (c < 44016 + ? (c >= 44012 && c <= 44013) + : c <= 44025) + : (c <= 55203 || (c < 55243 + ? (c >= 55216 && c <= 55238) + : c <= 55291))) + : (c <= 64109 || (c < 64275 + ? (c < 64256 + ? (c >= 64112 && c <= 64217) + : c <= 64262) + : (c <= 64279 || (c < 64298 + ? (c >= 64285 && c <= 64296) + : c <= 64310))))))) + : (c <= 64316 || (c < 65075 + ? (c < 64612 + ? (c < 64323 + ? (c < 64320 + ? c == 64318 + : c <= 64321) + : (c <= 64324 || (c < 64467 + ? (c >= 64326 && c <= 64433) + : c <= 64605))) + : (c <= 64829 || (c < 65008 + ? (c < 64914 + ? (c >= 64848 && c <= 64911) + : c <= 64967) + : (c <= 65017 || (c < 65056 + ? (c >= 65024 && c <= 65039) + : c <= 65071))))) + : (c <= 65076 || (c < 65147 + ? (c < 65139 + ? (c < 65137 + ? (c >= 65101 && c <= 65103) + : c <= 65137) + : (c <= 65139 || (c < 65145 + ? c == 65143 + : c <= 65145))) + : (c <= 65147 || (c < 65296 + ? (c < 65151 + ? c == 65149 + : c <= 65276) + : (c <= 65305 || (c < 65343 + ? (c >= 65313 && c <= 65338) + : c <= 65343))))))))) + : (c <= 65370 || (c < 66513 + ? (c < 65664 + ? (c < 65536 + ? (c < 65482 + ? (c < 65474 + ? (c >= 65382 && c <= 65470) + : c <= 65479) + : (c <= 65487 || (c < 65498 + ? (c >= 65490 && c <= 65495) + : c <= 65500))) + : (c <= 65547 || (c < 65596 + ? (c < 65576 + ? (c >= 65549 && c <= 65574) + : c <= 65594) + : (c <= 65597 || (c < 65616 + ? (c >= 65599 && c <= 65613) + : c <= 65629))))) + : (c <= 65786 || (c < 66304 + ? (c < 66176 + ? (c < 66045 + ? (c >= 65856 && c <= 65908) + : c <= 66045) + : (c <= 66204 || (c < 66272 + ? (c >= 66208 && c <= 66256) + : c <= 66272))) + : (c <= 66335 || (c < 66432 + ? (c < 66384 + ? (c >= 66349 && c <= 66378) + : c <= 66426) + : (c <= 66461 || (c < 66504 + ? (c >= 66464 && c <= 66499) + : c <= 66511))))))) + : (c <= 66517 || (c < 66979 + ? (c < 66864 + ? (c < 66736 + ? (c < 66720 + ? (c >= 66560 && c <= 66717) + : c <= 66729) + : (c <= 66771 || (c < 66816 + ? (c >= 66776 && c <= 66811) + : c <= 66855))) + : (c <= 66915 || (c < 66956 + ? (c < 66940 + ? (c >= 66928 && c <= 66938) + : c <= 66954) + : (c <= 66962 || (c < 66967 + ? (c >= 66964 && c <= 66965) + : c <= 66977))))) + : (c <= 66993 || (c < 67456 + ? (c < 67072 + ? (c < 67003 + ? (c >= 66995 && c <= 67001) + : c <= 67004) + : (c <= 67382 || (c < 67424 + ? (c >= 67392 && c <= 67413) + : c <= 67431))) + : (c <= 67461 || (c < 67584 + ? (c < 67506 + ? (c >= 67463 && c <= 67504) + : c <= 67514) + : (c <= 67589 || (c < 67594 + ? c == 67592 + : c <= 67637))))))))))) + : (c <= 67640 || (c < 69956 + ? (c < 68448 + ? (c < 68101 + ? (c < 67828 + ? (c < 67680 + ? (c < 67647 + ? c == 67644 + : c <= 67669) + : (c <= 67702 || (c < 67808 + ? (c >= 67712 && c <= 67742) + : c <= 67826))) + : (c <= 67829 || (c < 67968 + ? (c < 67872 + ? (c >= 67840 && c <= 67861) + : c <= 67897) + : (c <= 68023 || (c < 68096 + ? (c >= 68030 && c <= 68031) + : c <= 68099))))) + : (c <= 68102 || (c < 68192 + ? (c < 68121 + ? (c < 68117 + ? (c >= 68108 && c <= 68115) + : c <= 68119) + : (c <= 68149 || (c < 68159 + ? (c >= 68152 && c <= 68154) + : c <= 68159))) + : (c <= 68220 || (c < 68297 + ? (c < 68288 + ? (c >= 68224 && c <= 68252) + : c <= 68295) + : (c <= 68326 || (c < 68416 + ? (c >= 68352 && c <= 68405) + : c <= 68437))))))) + : (c <= 68466 || (c < 69424 + ? (c < 68912 + ? (c < 68736 + ? (c < 68608 + ? (c >= 68480 && c <= 68497) + : c <= 68680) + : (c <= 68786 || (c < 68864 + ? (c >= 68800 && c <= 68850) + : c <= 68903))) + : (c <= 68921 || (c < 69296 + ? (c < 69291 + ? (c >= 69248 && c <= 69289) + : c <= 69292) + : (c <= 69297 || (c < 69415 + ? (c >= 69376 && c <= 69404) + : c <= 69415))))) + : (c <= 69456 || (c < 69759 + ? (c < 69600 + ? (c < 69552 + ? (c >= 69488 && c <= 69509) + : c <= 69572) + : (c <= 69622 || (c < 69734 + ? (c >= 69632 && c <= 69702) + : c <= 69749))) + : (c <= 69818 || (c < 69872 + ? (c < 69840 + ? c == 69826 + : c <= 69864) + : (c <= 69881 || (c < 69942 + ? (c >= 69888 && c <= 69940) + : c <= 69951))))))))) + : (c <= 69959 || (c < 70459 + ? (c < 70282 + ? (c < 70108 + ? (c < 70016 + ? (c < 70006 + ? (c >= 69968 && c <= 70003) + : c <= 70006) + : (c <= 70084 || (c < 70094 + ? (c >= 70089 && c <= 70092) + : c <= 70106))) + : (c <= 70108 || (c < 70206 + ? (c < 70163 + ? (c >= 70144 && c <= 70161) + : c <= 70199) + : (c <= 70206 || (c < 70280 + ? (c >= 70272 && c <= 70278) + : c <= 70280))))) + : (c <= 70285 || (c < 70405 + ? (c < 70320 + ? (c < 70303 + ? (c >= 70287 && c <= 70301) + : c <= 70312) + : (c <= 70378 || (c < 70400 + ? (c >= 70384 && c <= 70393) + : c <= 70403))) + : (c <= 70412 || (c < 70442 + ? (c < 70419 + ? (c >= 70415 && c <= 70416) + : c <= 70440) + : (c <= 70448 || (c < 70453 + ? (c >= 70450 && c <= 70451) + : c <= 70457))))))) + : (c <= 70468 || (c < 70855 + ? (c < 70502 + ? (c < 70480 + ? (c < 70475 + ? (c >= 70471 && c <= 70472) + : c <= 70477) + : (c <= 70480 || (c < 70493 + ? c == 70487 + : c <= 70499))) + : (c <= 70508 || (c < 70736 + ? (c < 70656 + ? (c >= 70512 && c <= 70516) + : c <= 70730) + : (c <= 70745 || (c < 70784 + ? (c >= 70750 && c <= 70753) + : c <= 70853))))) + : (c <= 70855 || (c < 71236 + ? (c < 71096 + ? (c < 71040 + ? (c >= 70864 && c <= 70873) + : c <= 71093) + : (c <= 71104 || (c < 71168 + ? (c >= 71128 && c <= 71133) + : c <= 71232))) + : (c <= 71236 || (c < 71360 + ? (c < 71296 + ? (c >= 71248 && c <= 71257) + : c <= 71352) + : (c <= 71369 || (c >= 71424 && c <= 71450))))))))))))) + : (c <= 71467 || (c < 119973 + ? (c < 77824 + ? (c < 72760 + ? (c < 72016 + ? (c < 71945 + ? (c < 71680 + ? (c < 71488 + ? (c >= 71472 && c <= 71481) + : c <= 71494) + : (c <= 71738 || (c < 71935 + ? (c >= 71840 && c <= 71913) + : c <= 71942))) + : (c <= 71945 || (c < 71960 + ? (c < 71957 + ? (c >= 71948 && c <= 71955) + : c <= 71958) + : (c <= 71989 || (c < 71995 + ? (c >= 71991 && c <= 71992) + : c <= 72003))))) + : (c <= 72025 || (c < 72263 + ? (c < 72154 + ? (c < 72106 + ? (c >= 72096 && c <= 72103) + : c <= 72151) + : (c <= 72161 || (c < 72192 + ? (c >= 72163 && c <= 72164) + : c <= 72254))) + : (c <= 72263 || (c < 72368 + ? (c < 72349 + ? (c >= 72272 && c <= 72345) + : c <= 72349) + : (c <= 72440 || (c < 72714 + ? (c >= 72704 && c <= 72712) + : c <= 72758))))))) + : (c <= 72768 || (c < 73056 + ? (c < 72968 + ? (c < 72850 + ? (c < 72818 + ? (c >= 72784 && c <= 72793) + : c <= 72847) + : (c <= 72871 || (c < 72960 + ? (c >= 72873 && c <= 72886) + : c <= 72966))) + : (c <= 72969 || (c < 73020 + ? (c < 73018 + ? (c >= 72971 && c <= 73014) + : c <= 73018) + : (c <= 73021 || (c < 73040 + ? (c >= 73023 && c <= 73031) + : c <= 73049))))) + : (c <= 73061 || (c < 73440 + ? (c < 73104 + ? (c < 73066 + ? (c >= 73063 && c <= 73064) + : c <= 73102) + : (c <= 73105 || (c < 73120 + ? (c >= 73107 && c <= 73112) + : c <= 73129))) + : (c <= 73462 || (c < 74752 + ? (c < 73728 + ? c == 73648 + : c <= 74649) + : (c <= 74862 || (c < 77712 + ? (c >= 74880 && c <= 75075) + : c <= 77808))))))))) + : (c <= 78894 || (c < 110576 + ? (c < 93027 + ? (c < 92864 + ? (c < 92736 + ? (c < 92160 + ? (c >= 82944 && c <= 83526) + : c <= 92728) + : (c <= 92766 || (c < 92784 + ? (c >= 92768 && c <= 92777) + : c <= 92862))) + : (c <= 92873 || (c < 92928 + ? (c < 92912 + ? (c >= 92880 && c <= 92909) + : c <= 92916) + : (c <= 92982 || (c < 93008 + ? (c >= 92992 && c <= 92995) + : c <= 93017))))) + : (c <= 93047 || (c < 94176 + ? (c < 93952 + ? (c < 93760 + ? (c >= 93053 && c <= 93071) + : c <= 93823) + : (c <= 94026 || (c < 94095 + ? (c >= 94031 && c <= 94087) + : c <= 94111))) + : (c <= 94177 || (c < 94208 + ? (c < 94192 + ? (c >= 94179 && c <= 94180) + : c <= 94193) + : (c <= 100343 || (c < 101632 + ? (c >= 100352 && c <= 101589) + : c <= 101640))))))) + : (c <= 110579 || (c < 118528 + ? (c < 110960 + ? (c < 110592 + ? (c < 110589 + ? (c >= 110581 && c <= 110587) + : c <= 110590) + : (c <= 110882 || (c < 110948 + ? (c >= 110928 && c <= 110930) + : c <= 110951))) + : (c <= 111355 || (c < 113792 + ? (c < 113776 + ? (c >= 113664 && c <= 113770) + : c <= 113788) + : (c <= 113800 || (c < 113821 + ? (c >= 113808 && c <= 113817) + : c <= 113822))))) + : (c <= 118573 || (c < 119210 + ? (c < 119149 + ? (c < 119141 + ? (c >= 118576 && c <= 118598) + : c <= 119145) + : (c <= 119154 || (c < 119173 + ? (c >= 119163 && c <= 119170) + : c <= 119179))) + : (c <= 119213 || (c < 119894 + ? (c < 119808 + ? (c >= 119362 && c <= 119364) + : c <= 119892) + : (c <= 119964 || (c < 119970 + ? (c >= 119966 && c <= 119967) + : c <= 119970))))))))))) + : (c <= 119974 || (c < 124912 + ? (c < 120746 + ? (c < 120134 + ? (c < 120071 + ? (c < 119995 + ? (c < 119982 + ? (c >= 119977 && c <= 119980) + : c <= 119993) + : (c <= 119995 || (c < 120005 + ? (c >= 119997 && c <= 120003) + : c <= 120069))) + : (c <= 120074 || (c < 120094 + ? (c < 120086 + ? (c >= 120077 && c <= 120084) + : c <= 120092) + : (c <= 120121 || (c < 120128 + ? (c >= 120123 && c <= 120126) + : c <= 120132))))) + : (c <= 120134 || (c < 120572 + ? (c < 120488 + ? (c < 120146 + ? (c >= 120138 && c <= 120144) + : c <= 120485) + : (c <= 120512 || (c < 120540 + ? (c >= 120514 && c <= 120538) + : c <= 120570))) + : (c <= 120596 || (c < 120656 + ? (c < 120630 + ? (c >= 120598 && c <= 120628) + : c <= 120654) + : (c <= 120686 || (c < 120714 + ? (c >= 120688 && c <= 120712) + : c <= 120744))))))) + : (c <= 120770 || (c < 122907 + ? (c < 121476 + ? (c < 121344 + ? (c < 120782 + ? (c >= 120772 && c <= 120779) + : c <= 120831) + : (c <= 121398 || (c < 121461 + ? (c >= 121403 && c <= 121452) + : c <= 121461))) + : (c <= 121476 || (c < 122624 + ? (c < 121505 + ? (c >= 121499 && c <= 121503) + : c <= 121519) + : (c <= 122654 || (c < 122888 + ? (c >= 122880 && c <= 122886) + : c <= 122904))))) + : (c <= 122913 || (c < 123214 + ? (c < 123136 + ? (c < 122918 + ? (c >= 122915 && c <= 122916) + : c <= 122922) + : (c <= 123180 || (c < 123200 + ? (c >= 123184 && c <= 123197) + : c <= 123209))) + : (c <= 123214 || (c < 124896 + ? (c < 123584 + ? (c >= 123536 && c <= 123566) + : c <= 123641) + : (c <= 124902 || (c < 124909 + ? (c >= 124904 && c <= 124907) + : c <= 124910))))))))) + : (c <= 124926 || (c < 126557 + ? (c < 126521 + ? (c < 126469 + ? (c < 125184 + ? (c < 125136 + ? (c >= 124928 && c <= 125124) + : c <= 125142) + : (c <= 125259 || (c < 126464 + ? (c >= 125264 && c <= 125273) + : c <= 126467))) + : (c <= 126495 || (c < 126503 + ? (c < 126500 + ? (c >= 126497 && c <= 126498) + : c <= 126500) + : (c <= 126503 || (c < 126516 + ? (c >= 126505 && c <= 126514) + : c <= 126519))))) + : (c <= 126521 || (c < 126541 + ? (c < 126535 + ? (c < 126530 + ? c == 126523 + : c <= 126530) + : (c <= 126535 || (c < 126539 + ? c == 126537 + : c <= 126539))) + : (c <= 126543 || (c < 126551 + ? (c < 126548 + ? (c >= 126545 && c <= 126546) + : c <= 126548) + : (c <= 126551 || (c < 126555 + ? c == 126553 + : c <= 126555))))))) + : (c <= 126557 || (c < 126629 + ? (c < 126580 + ? (c < 126564 + ? (c < 126561 + ? c == 126559 + : c <= 126562) + : (c <= 126564 || (c < 126572 + ? (c >= 126567 && c <= 126570) + : c <= 126578))) + : (c <= 126583 || (c < 126592 + ? (c < 126590 + ? (c >= 126585 && c <= 126588) + : c <= 126590) + : (c <= 126601 || (c < 126625 + ? (c >= 126603 && c <= 126619) + : c <= 126627))))) + : (c <= 126633 || (c < 178208 + ? (c < 131072 + ? (c < 130032 + ? (c >= 126635 && c <= 126651) + : c <= 130041) + : (c <= 173791 || (c < 177984 + ? (c >= 173824 && c <= 177976) + : c <= 178205))) + : (c <= 183969 || (c < 196608 + ? (c < 194560 + ? (c >= 183984 && c <= 191456) + : c <= 195101) + : (c <= 201546 || (c >= 917760 && c <= 917999))))))))))))))))); +} + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + bool eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(37) + if (lookahead == '\r') SKIP(37) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(66); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(73); + if (lookahead == '0') ADVANCE(110); + if (lookahead == ':') ADVANCE(53); + if (lookahead == ';') ADVANCE(42); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(103); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == 'e') ADVANCE(133); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 1: + if (lookahead == '\n') ADVANCE(138); + END_STATE(); + case 2: + if (lookahead == '\n') ADVANCE(102); + END_STATE(); + case 3: + if (lookahead == '\n') SKIP(3) + if (lookahead == '\r') ADVANCE(105); + if (lookahead == '#') ADVANCE(106); + if (lookahead == '\\') ADVANCE(104); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '}') ADVANCE(71); + if (lookahead == '\t' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) ADVANCE(105); + if (lookahead != 0) ADVANCE(106); + END_STATE(); + case 4: + if (lookahead == '.') ADVANCE(5); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(116); + END_STATE(); + case 5: + if (lookahead == '.') ADVANCE(100); + END_STATE(); + case 6: + if (lookahead == '=') ADVANCE(83); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(107); + END_STATE(); + case 7: + if (lookahead == '>') ADVANCE(57); + END_STATE(); + case 8: + if (lookahead == '_') ADVANCE(16); + if (lookahead == '0' || + lookahead == '1') ADVANCE(112); + END_STATE(); + case 9: + if (lookahead == '_') ADVANCE(23); + if (('0' <= lookahead && lookahead <= '7')) ADVANCE(113); + END_STATE(); + case 10: + if (lookahead == '_') ADVANCE(28); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(114); + END_STATE(); + case 11: + if (lookahead == '{') ADVANCE(36); + END_STATE(); + case 12: + if (lookahead == '}') ADVANCE(102); + if (lookahead != 0) ADVANCE(12); + END_STATE(); + case 13: + if (lookahead == '}') ADVANCE(101); + END_STATE(); + case 14: + if (lookahead == 0 || + lookahead == '\n') ADVANCE(138); + if (lookahead == '\r') ADVANCE(1); + END_STATE(); + case 15: + if (lookahead == '+' || + lookahead == '-') ADVANCE(25); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(117); + END_STATE(); + case 16: + if (lookahead == '0' || + lookahead == '1') ADVANCE(112); + END_STATE(); + case 17: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(17) + if (lookahead == '\r') SKIP(17) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(65); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(73); + if (lookahead == '0') ADVANCE(110); + if (lookahead == ':') ADVANCE(52); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 18: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(18) + if (lookahead == '\r') SKIP(18) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(65); + if (lookahead == '.') ADVANCE(43); + if (lookahead == '/') ADVANCE(73); + if (lookahead == ':') ADVANCE(53); + if (lookahead == ';') ADVANCE(42); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 19: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(20) + if (lookahead == '\r') SKIP(20) + if (lookahead == '#') ADVANCE(137); + if (lookahead == '\\') ADVANCE(103); + if (lookahead == '{') ADVANCE(70); + if (lookahead == '}') ADVANCE(13); + END_STATE(); + case 20: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(20) + if (lookahead == '\r') SKIP(20) + if (lookahead == '#') ADVANCE(137); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == '{') ADVANCE(69); + END_STATE(); + case 21: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(21) + if (lookahead == '\r') SKIP(21) + if (lookahead == '#') ADVANCE(137); + if (lookahead == '-') ADVANCE(7); + if (lookahead == ':') ADVANCE(52); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == 'e') ADVANCE(133); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(136); + END_STATE(); + case 22: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(22) + if (lookahead == '\r') SKIP(22) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(65); + if (lookahead == '.') ADVANCE(43); + if (lookahead == '/') ADVANCE(73); + if (lookahead == ':') ADVANCE(52); + if (lookahead == ';') ADVANCE(42); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 23: + if (('0' <= lookahead && lookahead <= '7')) ADVANCE(113); + END_STATE(); + case 24: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(102); + END_STATE(); + case 25: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(117); + END_STATE(); + case 26: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); + END_STATE(); + case 27: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(102); + END_STATE(); + case 28: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(114); + END_STATE(); + case 29: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27); + END_STATE(); + case 30: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(29); + END_STATE(); + case 31: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + END_STATE(); + case 32: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(31); + END_STATE(); + case 33: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32); + END_STATE(); + case 34: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(33); + END_STATE(); + case 35: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(34); + END_STATE(); + case 36: + if (lookahead != 0 && + lookahead != '}') ADVANCE(12); + END_STATE(); + case 37: + if (eof) ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(37) + if (lookahead == '\r') SKIP(37) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(66); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(73); + if (lookahead == '0') ADVANCE(110); + if (lookahead == ':') ADVANCE(53); + if (lookahead == ';') ADVANCE(42); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == 'e') ADVANCE(133); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 38: + if (eof) ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(38) + if (lookahead == '\r') SKIP(38) + if (lookahead == '!') ADVANCE(6); + if (lookahead == '#') ADVANCE(137); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(76); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(49); + if (lookahead == '+') ADVANCE(63); + if (lookahead == ',') ADVANCE(47); + if (lookahead == '-') ADVANCE(65); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(73); + if (lookahead == '0') ADVANCE(110); + if (lookahead == ':') ADVANCE(53); + if (lookahead == ';') ADVANCE(42); + if (lookahead == '<') ADVANCE(80); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(85); + if (lookahead == '@') ADVANCE(60); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == ']') ADVANCE(68); + if (lookahead == '^') ADVANCE(77); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '|') ADVANCE(61); + if (lookahead == '}') ADVANCE(71); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(136); + END_STATE(); + case 39: + if (eof) ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(39) + if (lookahead == '\r') SKIP(39) + if (lookahead == '#') ADVANCE(137); + if (lookahead == '(') ADVANCE(45); + if (lookahead == '*') ADVANCE(48); + if (lookahead == '+') ADVANCE(62); + if (lookahead == '-') ADVANCE(64); + if (lookahead == '.') ADVANCE(4); + if (lookahead == '0') ADVANCE(110); + if (lookahead == '@') ADVANCE(59); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == 'e') ADVANCE(134); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(136); + END_STATE(); + case 40: + if (eof) ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(40) + if (lookahead == '\r') SKIP(40) + if (lookahead == '#') ADVANCE(137); + if (lookahead == '(') ADVANCE(45); + if (lookahead == '*') ADVANCE(48); + if (lookahead == '+') ADVANCE(62); + if (lookahead == '-') ADVANCE(64); + if (lookahead == '.') ADVANCE(4); + if (lookahead == '0') ADVANCE(110); + if (lookahead == '@') ADVANCE(59); + if (lookahead == '[') ADVANCE(67); + if (lookahead == '\\') ADVANCE(14); + if (lookahead == 'e') ADVANCE(135); + if (lookahead == '{') ADVANCE(69); + if (lookahead == '~') ADVANCE(79); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(109); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(136); + END_STATE(); + case 41: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 42: + ACCEPT_TOKEN(anon_sym_SEMI); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_DOT); + END_STATE(); + case 44: + ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == '.') ADVANCE(5); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(116); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 46: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 48: + ACCEPT_TOKEN(anon_sym_STAR); + END_STATE(); + case 49: + ACCEPT_TOKEN(anon_sym_STAR); + if (lookahead == '*') ADVANCE(58); + if (lookahead == '=') ADVANCE(89); + END_STATE(); + case 50: + ACCEPT_TOKEN(anon_sym_GT_GT); + if (lookahead == '=') ADVANCE(95); + END_STATE(); + case 51: + ACCEPT_TOKEN(anon_sym_COLON_EQ); + END_STATE(); + case 52: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 53: + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == '=') ADVANCE(51); + END_STATE(); + case 54: + ACCEPT_TOKEN(anon_sym_except); + if (lookahead == '*') ADVANCE(56); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 55: + ACCEPT_TOKEN(anon_sym_except); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 56: + ACCEPT_TOKEN(anon_sym_except_STAR); + END_STATE(); + case 57: + ACCEPT_TOKEN(anon_sym_DASH_GT); + END_STATE(); + case 58: + ACCEPT_TOKEN(anon_sym_STAR_STAR); + if (lookahead == '=') ADVANCE(94); + END_STATE(); + case 59: + ACCEPT_TOKEN(anon_sym_AT); + END_STATE(); + case 60: + ACCEPT_TOKEN(anon_sym_AT); + if (lookahead == '=') ADVANCE(91); + END_STATE(); + case 61: + ACCEPT_TOKEN(anon_sym_PIPE); + if (lookahead == '=') ADVANCE(99); + END_STATE(); + case 62: + ACCEPT_TOKEN(anon_sym_PLUS); + END_STATE(); + case 63: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '=') ADVANCE(87); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_DASH); + END_STATE(); + case 65: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(88); + END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(88); + if (lookahead == '>') ADVANCE(57); + END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_LBRACK); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_LBRACE); + if (lookahead == '{') ADVANCE(101); + END_STATE(); + case 71: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(82); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_SLASH); + if (lookahead == '/') ADVANCE(75); + if (lookahead == '=') ADVANCE(90); + END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_PERCENT); + if (lookahead == '=') ADVANCE(93); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_SLASH_SLASH); + if (lookahead == '=') ADVANCE(92); + END_STATE(); + case 76: + ACCEPT_TOKEN(anon_sym_AMP); + if (lookahead == '=') ADVANCE(97); + END_STATE(); + case 77: + ACCEPT_TOKEN(anon_sym_CARET); + if (lookahead == '=') ADVANCE(98); + END_STATE(); + case 78: + ACCEPT_TOKEN(anon_sym_LT_LT); + if (lookahead == '=') ADVANCE(96); + END_STATE(); + case 79: + ACCEPT_TOKEN(anon_sym_TILDE); + END_STATE(); + case 80: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '<') ADVANCE(78); + if (lookahead == '=') ADVANCE(81); + if (lookahead == '>') ADVANCE(86); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_LT_EQ); + END_STATE(); + case 82: + ACCEPT_TOKEN(anon_sym_EQ_EQ); + END_STATE(); + case 83: + ACCEPT_TOKEN(anon_sym_BANG_EQ); + END_STATE(); + case 84: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 85: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(84); + if (lookahead == '>') ADVANCE(50); + END_STATE(); + case 86: + ACCEPT_TOKEN(anon_sym_LT_GT); + END_STATE(); + case 87: + ACCEPT_TOKEN(anon_sym_PLUS_EQ); + END_STATE(); + case 88: + ACCEPT_TOKEN(anon_sym_DASH_EQ); + END_STATE(); + case 89: + ACCEPT_TOKEN(anon_sym_STAR_EQ); + END_STATE(); + case 90: + ACCEPT_TOKEN(anon_sym_SLASH_EQ); + END_STATE(); + case 91: + ACCEPT_TOKEN(anon_sym_AT_EQ); + END_STATE(); + case 92: + ACCEPT_TOKEN(anon_sym_SLASH_SLASH_EQ); + END_STATE(); + case 93: + ACCEPT_TOKEN(anon_sym_PERCENT_EQ); + END_STATE(); + case 94: + ACCEPT_TOKEN(anon_sym_STAR_STAR_EQ); + END_STATE(); + case 95: + ACCEPT_TOKEN(anon_sym_GT_GT_EQ); + END_STATE(); + case 96: + ACCEPT_TOKEN(anon_sym_LT_LT_EQ); + END_STATE(); + case 97: + ACCEPT_TOKEN(anon_sym_AMP_EQ); + END_STATE(); + case 98: + ACCEPT_TOKEN(anon_sym_CARET_EQ); + END_STATE(); + case 99: + ACCEPT_TOKEN(anon_sym_PIPE_EQ); + END_STATE(); + case 100: + ACCEPT_TOKEN(sym_ellipsis); + END_STATE(); + case 101: + ACCEPT_TOKEN(sym__escape_interpolation); + END_STATE(); + case 102: + ACCEPT_TOKEN(sym_escape_sequence); + END_STATE(); + case 103: + ACCEPT_TOKEN(sym__not_escape_sequence); + if (lookahead == 0) ADVANCE(138); + if (lookahead == '\n') ADVANCE(102); + if (lookahead == '\r') ADVANCE(2); + if (lookahead == 'N') ADVANCE(11); + if (lookahead == 'U') ADVANCE(35); + if (lookahead == 'u') ADVANCE(31); + if (lookahead == 'x') ADVANCE(29); + if (lookahead == '"' || + lookahead == '\'' || + lookahead == '\\' || + lookahead == 'a' || + lookahead == 'b' || + lookahead == 'f' || + lookahead == 'n' || + lookahead == 'r' || + ('t' <= lookahead && lookahead <= 'v')) ADVANCE(102); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(26); + END_STATE(); + case 104: + ACCEPT_TOKEN(aux_sym_format_specifier_token1); + if (lookahead == 0) ADVANCE(106); + if (lookahead == '\r') ADVANCE(106); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '{' && + lookahead != '}') ADVANCE(106); + END_STATE(); + case 105: + ACCEPT_TOKEN(aux_sym_format_specifier_token1); + if (lookahead == '\r') ADVANCE(105); + if (lookahead == '#') ADVANCE(106); + if (lookahead == '\\') ADVANCE(104); + if (lookahead == '\t' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) ADVANCE(105); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '{' && + lookahead != '}') ADVANCE(106); + END_STATE(); + case 106: + ACCEPT_TOKEN(aux_sym_format_specifier_token1); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '{' && + lookahead != '}') ADVANCE(106); + END_STATE(); + case 107: + ACCEPT_TOKEN(sym_type_conversion); + END_STATE(); + case 108: + ACCEPT_TOKEN(sym_integer); + END_STATE(); + case 109: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(118); + if (lookahead == '_') ADVANCE(111); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(15); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(108); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(109); + END_STATE(); + case 110: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(118); + if (lookahead == 'B' || + lookahead == 'b') ADVANCE(8); + if (lookahead == 'O' || + lookahead == 'o') ADVANCE(9); + if (lookahead == 'X' || + lookahead == 'x') ADVANCE(10); + if (lookahead == '_') ADVANCE(111); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(15); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(108); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(109); + END_STATE(); + case 111: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(118); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(15); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(108); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(109); + END_STATE(); + case 112: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '_') ADVANCE(16); + if (lookahead == 'L' || + lookahead == 'l') ADVANCE(108); + if (lookahead == '0' || + lookahead == '1') ADVANCE(112); + END_STATE(); + case 113: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '_') ADVANCE(23); + if (lookahead == 'L' || + lookahead == 'l') ADVANCE(108); + if (('0' <= lookahead && lookahead <= '7')) ADVANCE(113); + END_STATE(); + case 114: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '_') ADVANCE(28); + if (lookahead == 'L' || + lookahead == 'l') ADVANCE(108); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(114); + END_STATE(); + case 115: + ACCEPT_TOKEN(sym_float); + END_STATE(); + case 116: + ACCEPT_TOKEN(sym_float); + if (lookahead == '_') ADVANCE(118); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(15); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(116); + END_STATE(); + case 117: + ACCEPT_TOKEN(sym_float); + if (lookahead == '_') ADVANCE(119); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(117); + END_STATE(); + case 118: + ACCEPT_TOKEN(sym_float); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(15); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(116); + END_STATE(); + case 119: + ACCEPT_TOKEN(sym_float); + if (lookahead == 'J' || + lookahead == 'L' || + lookahead == 'j' || + lookahead == 'l') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(117); + END_STATE(); + case 120: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '*') ADVANCE(56); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 121: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'c') ADVANCE(124); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 122: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'c') ADVANCE(125); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 123: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'c') ADVANCE(126); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 124: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(127); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 125: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(128); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 126: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(129); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 127: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'p') ADVANCE(130); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 128: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'p') ADVANCE(131); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 129: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'p') ADVANCE(132); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 130: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 't') ADVANCE(54); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 131: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 't') ADVANCE(55); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 132: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 't') ADVANCE(120); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 133: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'x') ADVANCE(121); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 134: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'x') ADVANCE(122); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 135: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'x') ADVANCE(123); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 136: + ACCEPT_TOKEN(sym_identifier); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(136); + END_STATE(); + case 137: + ACCEPT_TOKEN(sym_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(137); + END_STATE(); + case 138: + ACCEPT_TOKEN(sym_line_continuation); + END_STATE(); + default: + return false; + } +} + +static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { + START_LEXER(); + switch (state) { + case 0: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\f' || + lookahead == ' ' || + lookahead == 8203 || + lookahead == 8288 || + lookahead == 65279) SKIP(0) + if (lookahead == '\r') SKIP(0) + if (lookahead == 'F') ADVANCE(1); + if (lookahead == 'N') ADVANCE(2); + if (lookahead == 'T') ADVANCE(3); + if (lookahead == '_') ADVANCE(4); + if (lookahead == 'a') ADVANCE(5); + if (lookahead == 'b') ADVANCE(6); + if (lookahead == 'c') ADVANCE(7); + if (lookahead == 'd') ADVANCE(8); + if (lookahead == 'e') ADVANCE(9); + if (lookahead == 'f') ADVANCE(10); + if (lookahead == 'g') ADVANCE(11); + if (lookahead == 'i') ADVANCE(12); + if (lookahead == 'l') ADVANCE(13); + if (lookahead == 'm') ADVANCE(14); + if (lookahead == 'n') ADVANCE(15); + if (lookahead == 'o') ADVANCE(16); + if (lookahead == 'p') ADVANCE(17); + if (lookahead == 'r') ADVANCE(18); + if (lookahead == 't') ADVANCE(19); + if (lookahead == 'w') ADVANCE(20); + if (lookahead == 'y') ADVANCE(21); + END_STATE(); + case 1: + if (lookahead == 'a') ADVANCE(22); + END_STATE(); + case 2: + if (lookahead == 'o') ADVANCE(23); + END_STATE(); + case 3: + if (lookahead == 'r') ADVANCE(24); + END_STATE(); + case 4: + ACCEPT_TOKEN(sym_case_wildcard_pattern); + if (lookahead == '_') ADVANCE(25); + END_STATE(); + case 5: + if (lookahead == 'n') ADVANCE(26); + if (lookahead == 's') ADVANCE(27); + if (lookahead == 'w') ADVANCE(28); + END_STATE(); + case 6: + if (lookahead == 'r') ADVANCE(29); + END_STATE(); + case 7: + if (lookahead == 'a') ADVANCE(30); + if (lookahead == 'l') ADVANCE(31); + if (lookahead == 'o') ADVANCE(32); + END_STATE(); + case 8: + if (lookahead == 'e') ADVANCE(33); + END_STATE(); + case 9: + if (lookahead == 'l') ADVANCE(34); + if (lookahead == 'x') ADVANCE(35); + END_STATE(); + case 10: + if (lookahead == 'i') ADVANCE(36); + if (lookahead == 'o') ADVANCE(37); + if (lookahead == 'r') ADVANCE(38); + END_STATE(); + case 11: + if (lookahead == 'l') ADVANCE(39); + END_STATE(); + case 12: + if (lookahead == 'f') ADVANCE(40); + if (lookahead == 'm') ADVANCE(41); + if (lookahead == 'n') ADVANCE(42); + if (lookahead == 's') ADVANCE(43); + END_STATE(); + case 13: + if (lookahead == 'a') ADVANCE(44); + END_STATE(); + case 14: + if (lookahead == 'a') ADVANCE(45); + END_STATE(); + case 15: + if (lookahead == 'o') ADVANCE(46); + END_STATE(); + case 16: + if (lookahead == 'r') ADVANCE(47); + END_STATE(); + case 17: + if (lookahead == 'a') ADVANCE(48); + if (lookahead == 'r') ADVANCE(49); + END_STATE(); + case 18: + if (lookahead == 'a') ADVANCE(50); + if (lookahead == 'e') ADVANCE(51); + END_STATE(); + case 19: + if (lookahead == 'r') ADVANCE(52); + END_STATE(); + case 20: + if (lookahead == 'h') ADVANCE(53); + if (lookahead == 'i') ADVANCE(54); + END_STATE(); + case 21: + if (lookahead == 'i') ADVANCE(55); + END_STATE(); + case 22: + if (lookahead == 'l') ADVANCE(56); + END_STATE(); + case 23: + if (lookahead == 'n') ADVANCE(57); + END_STATE(); + case 24: + if (lookahead == 'u') ADVANCE(58); + END_STATE(); + case 25: + if (lookahead == 'f') ADVANCE(59); + END_STATE(); + case 26: + if (lookahead == 'd') ADVANCE(60); + END_STATE(); + case 27: + ACCEPT_TOKEN(anon_sym_as); + if (lookahead == 's') ADVANCE(61); + if (lookahead == 'y') ADVANCE(62); + END_STATE(); + case 28: + if (lookahead == 'a') ADVANCE(63); + END_STATE(); + case 29: + if (lookahead == 'e') ADVANCE(64); + END_STATE(); + case 30: + if (lookahead == 's') ADVANCE(65); + END_STATE(); + case 31: + if (lookahead == 'a') ADVANCE(66); + END_STATE(); + case 32: + if (lookahead == 'n') ADVANCE(67); + END_STATE(); + case 33: + if (lookahead == 'f') ADVANCE(68); + if (lookahead == 'l') ADVANCE(69); + END_STATE(); + case 34: + if (lookahead == 'i') ADVANCE(70); + if (lookahead == 's') ADVANCE(71); + END_STATE(); + case 35: + if (lookahead == 'e') ADVANCE(72); + END_STATE(); + case 36: + if (lookahead == 'n') ADVANCE(73); + END_STATE(); + case 37: + if (lookahead == 'r') ADVANCE(74); + END_STATE(); + case 38: + if (lookahead == 'o') ADVANCE(75); + END_STATE(); + case 39: + if (lookahead == 'o') ADVANCE(76); + END_STATE(); + case 40: + ACCEPT_TOKEN(anon_sym_if); + END_STATE(); + case 41: + if (lookahead == 'p') ADVANCE(77); + END_STATE(); + case 42: + ACCEPT_TOKEN(anon_sym_in); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_is); + END_STATE(); + case 44: + if (lookahead == 'm') ADVANCE(78); + END_STATE(); + case 45: + if (lookahead == 't') ADVANCE(79); + END_STATE(); + case 46: + if (lookahead == 'n') ADVANCE(80); + if (lookahead == 't') ADVANCE(81); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_or); + END_STATE(); + case 48: + if (lookahead == 's') ADVANCE(82); + END_STATE(); + case 49: + if (lookahead == 'i') ADVANCE(83); + END_STATE(); + case 50: + if (lookahead == 'i') ADVANCE(84); + END_STATE(); + case 51: + if (lookahead == 't') ADVANCE(85); + END_STATE(); + case 52: + if (lookahead == 'y') ADVANCE(86); + END_STATE(); + case 53: + if (lookahead == 'i') ADVANCE(87); + END_STATE(); + case 54: + if (lookahead == 't') ADVANCE(88); + END_STATE(); + case 55: + if (lookahead == 'e') ADVANCE(89); + END_STATE(); + case 56: + if (lookahead == 's') ADVANCE(90); + END_STATE(); + case 57: + if (lookahead == 'e') ADVANCE(91); + END_STATE(); + case 58: + if (lookahead == 'e') ADVANCE(92); + END_STATE(); + case 59: + if (lookahead == 'u') ADVANCE(93); + END_STATE(); + case 60: + ACCEPT_TOKEN(anon_sym_and); + END_STATE(); + case 61: + if (lookahead == 'e') ADVANCE(94); + END_STATE(); + case 62: + if (lookahead == 'n') ADVANCE(95); + END_STATE(); + case 63: + if (lookahead == 'i') ADVANCE(96); + END_STATE(); + case 64: + if (lookahead == 'a') ADVANCE(97); + END_STATE(); + case 65: + if (lookahead == 'e') ADVANCE(98); + END_STATE(); + case 66: + if (lookahead == 's') ADVANCE(99); + END_STATE(); + case 67: + if (lookahead == 't') ADVANCE(100); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_def); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_del); + END_STATE(); + case 70: + if (lookahead == 'f') ADVANCE(101); + END_STATE(); + case 71: + if (lookahead == 'e') ADVANCE(102); + END_STATE(); + case 72: + if (lookahead == 'c') ADVANCE(103); + END_STATE(); + case 73: + if (lookahead == 'a') ADVANCE(104); + END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 75: + if (lookahead == 'm') ADVANCE(105); + END_STATE(); + case 76: + if (lookahead == 'b') ADVANCE(106); + END_STATE(); + case 77: + if (lookahead == 'o') ADVANCE(107); + END_STATE(); + case 78: + if (lookahead == 'b') ADVANCE(108); + END_STATE(); + case 79: + if (lookahead == 'c') ADVANCE(109); + END_STATE(); + case 80: + if (lookahead == 'l') ADVANCE(110); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_not); + END_STATE(); + case 82: + if (lookahead == 's') ADVANCE(111); + END_STATE(); + case 83: + if (lookahead == 'n') ADVANCE(112); + END_STATE(); + case 84: + if (lookahead == 's') ADVANCE(113); + END_STATE(); + case 85: + if (lookahead == 'u') ADVANCE(114); + END_STATE(); + case 86: + ACCEPT_TOKEN(anon_sym_try); + END_STATE(); + case 87: + if (lookahead == 'l') ADVANCE(115); + END_STATE(); + case 88: + if (lookahead == 'h') ADVANCE(116); + END_STATE(); + case 89: + if (lookahead == 'l') ADVANCE(117); + END_STATE(); + case 90: + if (lookahead == 'e') ADVANCE(118); + END_STATE(); + case 91: + ACCEPT_TOKEN(sym_none); + END_STATE(); + case 92: + ACCEPT_TOKEN(sym_true); + END_STATE(); + case 93: + if (lookahead == 't') ADVANCE(119); + END_STATE(); + case 94: + if (lookahead == 'r') ADVANCE(120); + END_STATE(); + case 95: + if (lookahead == 'c') ADVANCE(121); + END_STATE(); + case 96: + if (lookahead == 't') ADVANCE(122); + END_STATE(); + case 97: + if (lookahead == 'k') ADVANCE(123); + END_STATE(); + case 98: + ACCEPT_TOKEN(anon_sym_case); + END_STATE(); + case 99: + if (lookahead == 's') ADVANCE(124); + END_STATE(); + case 100: + if (lookahead == 'i') ADVANCE(125); + END_STATE(); + case 101: + ACCEPT_TOKEN(anon_sym_elif); + END_STATE(); + case 102: + ACCEPT_TOKEN(anon_sym_else); + END_STATE(); + case 103: + ACCEPT_TOKEN(anon_sym_exec); + END_STATE(); + case 104: + if (lookahead == 'l') ADVANCE(126); + END_STATE(); + case 105: + ACCEPT_TOKEN(anon_sym_from); + END_STATE(); + case 106: + if (lookahead == 'a') ADVANCE(127); + END_STATE(); + case 107: + if (lookahead == 'r') ADVANCE(128); + END_STATE(); + case 108: + if (lookahead == 'd') ADVANCE(129); + END_STATE(); + case 109: + if (lookahead == 'h') ADVANCE(130); + END_STATE(); + case 110: + if (lookahead == 'o') ADVANCE(131); + END_STATE(); + case 111: + ACCEPT_TOKEN(anon_sym_pass); + END_STATE(); + case 112: + if (lookahead == 't') ADVANCE(132); + END_STATE(); + case 113: + if (lookahead == 'e') ADVANCE(133); + END_STATE(); + case 114: + if (lookahead == 'r') ADVANCE(134); + END_STATE(); + case 115: + if (lookahead == 'e') ADVANCE(135); + END_STATE(); + case 116: + ACCEPT_TOKEN(anon_sym_with); + END_STATE(); + case 117: + if (lookahead == 'd') ADVANCE(136); + END_STATE(); + case 118: + ACCEPT_TOKEN(sym_false); + END_STATE(); + case 119: + if (lookahead == 'u') ADVANCE(137); + END_STATE(); + case 120: + if (lookahead == 't') ADVANCE(138); + END_STATE(); + case 121: + ACCEPT_TOKEN(anon_sym_async); + END_STATE(); + case 122: + ACCEPT_TOKEN(anon_sym_await); + END_STATE(); + case 123: + ACCEPT_TOKEN(anon_sym_break); + END_STATE(); + case 124: + ACCEPT_TOKEN(anon_sym_class); + END_STATE(); + case 125: + if (lookahead == 'n') ADVANCE(139); + END_STATE(); + case 126: + if (lookahead == 'l') ADVANCE(140); + END_STATE(); + case 127: + if (lookahead == 'l') ADVANCE(141); + END_STATE(); + case 128: + if (lookahead == 't') ADVANCE(142); + END_STATE(); + case 129: + if (lookahead == 'a') ADVANCE(143); + END_STATE(); + case 130: + ACCEPT_TOKEN(anon_sym_match); + END_STATE(); + case 131: + if (lookahead == 'c') ADVANCE(144); + END_STATE(); + case 132: + ACCEPT_TOKEN(anon_sym_print); + END_STATE(); + case 133: + ACCEPT_TOKEN(anon_sym_raise); + END_STATE(); + case 134: + if (lookahead == 'n') ADVANCE(145); + END_STATE(); + case 135: + ACCEPT_TOKEN(anon_sym_while); + END_STATE(); + case 136: + ACCEPT_TOKEN(anon_sym_yield); + END_STATE(); + case 137: + if (lookahead == 'r') ADVANCE(146); + END_STATE(); + case 138: + ACCEPT_TOKEN(anon_sym_assert); + END_STATE(); + case 139: + if (lookahead == 'u') ADVANCE(147); + END_STATE(); + case 140: + if (lookahead == 'y') ADVANCE(148); + END_STATE(); + case 141: + ACCEPT_TOKEN(anon_sym_global); + END_STATE(); + case 142: + ACCEPT_TOKEN(anon_sym_import); + END_STATE(); + case 143: + ACCEPT_TOKEN(anon_sym_lambda); + END_STATE(); + case 144: + if (lookahead == 'a') ADVANCE(149); + END_STATE(); + case 145: + ACCEPT_TOKEN(anon_sym_return); + END_STATE(); + case 146: + if (lookahead == 'e') ADVANCE(150); + END_STATE(); + case 147: + if (lookahead == 'e') ADVANCE(151); + END_STATE(); + case 148: + ACCEPT_TOKEN(anon_sym_finally); + END_STATE(); + case 149: + if (lookahead == 'l') ADVANCE(152); + END_STATE(); + case 150: + if (lookahead == '_') ADVANCE(153); + END_STATE(); + case 151: + ACCEPT_TOKEN(anon_sym_continue); + END_STATE(); + case 152: + ACCEPT_TOKEN(anon_sym_nonlocal); + END_STATE(); + case 153: + if (lookahead == '_') ADVANCE(154); + END_STATE(); + case 154: + ACCEPT_TOKEN(anon_sym___future__); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0, .external_lex_state = 1}, + [1] = {.lex_state = 38, .external_lex_state = 2}, + [2] = {.lex_state = 38, .external_lex_state = 3}, + [3] = {.lex_state = 38, .external_lex_state = 3}, + [4] = {.lex_state = 38, .external_lex_state = 3}, + [5] = {.lex_state = 38, .external_lex_state = 3}, + [6] = {.lex_state = 38, .external_lex_state = 3}, + [7] = {.lex_state = 38, .external_lex_state = 3}, + [8] = {.lex_state = 38, .external_lex_state = 3}, + [9] = {.lex_state = 38, .external_lex_state = 3}, + [10] = {.lex_state = 38, .external_lex_state = 3}, + [11] = {.lex_state = 38, .external_lex_state = 3}, + [12] = {.lex_state = 38, .external_lex_state = 3}, + [13] = {.lex_state = 38, .external_lex_state = 3}, + [14] = {.lex_state = 38, .external_lex_state = 3}, + [15] = {.lex_state = 38, .external_lex_state = 3}, + [16] = {.lex_state = 38, .external_lex_state = 3}, + [17] = {.lex_state = 38, .external_lex_state = 3}, + [18] = {.lex_state = 38, .external_lex_state = 3}, + [19] = {.lex_state = 38, .external_lex_state = 3}, + [20] = {.lex_state = 38, .external_lex_state = 3}, + [21] = {.lex_state = 38, .external_lex_state = 3}, + [22] = {.lex_state = 38, .external_lex_state = 3}, + [23] = {.lex_state = 38, .external_lex_state = 3}, + [24] = {.lex_state = 38, .external_lex_state = 3}, + [25] = {.lex_state = 38, .external_lex_state = 3}, + [26] = {.lex_state = 38, .external_lex_state = 3}, + [27] = {.lex_state = 38, .external_lex_state = 3}, + [28] = {.lex_state = 38, .external_lex_state = 3}, + [29] = {.lex_state = 38, .external_lex_state = 3}, + [30] = {.lex_state = 38, .external_lex_state = 3}, + [31] = {.lex_state = 38, .external_lex_state = 3}, + [32] = {.lex_state = 38, .external_lex_state = 3}, + [33] = {.lex_state = 38, .external_lex_state = 3}, + [34] = {.lex_state = 38, .external_lex_state = 3}, + [35] = {.lex_state = 38, .external_lex_state = 3}, + [36] = {.lex_state = 38, .external_lex_state = 3}, + [37] = {.lex_state = 38, .external_lex_state = 3}, + [38] = {.lex_state = 38, .external_lex_state = 3}, + [39] = {.lex_state = 38, .external_lex_state = 3}, + [40] = {.lex_state = 38, .external_lex_state = 3}, + [41] = {.lex_state = 38, .external_lex_state = 3}, + [42] = {.lex_state = 38, .external_lex_state = 3}, + [43] = {.lex_state = 38, .external_lex_state = 3}, + [44] = {.lex_state = 38, .external_lex_state = 3}, + [45] = {.lex_state = 38, .external_lex_state = 3}, + [46] = {.lex_state = 38, .external_lex_state = 3}, + [47] = {.lex_state = 38, .external_lex_state = 3}, + [48] = {.lex_state = 38, .external_lex_state = 3}, + [49] = {.lex_state = 38, .external_lex_state = 3}, + [50] = {.lex_state = 38, .external_lex_state = 3}, + [51] = {.lex_state = 38, .external_lex_state = 3}, + [52] = {.lex_state = 38, .external_lex_state = 3}, + [53] = {.lex_state = 38, .external_lex_state = 3}, + [54] = {.lex_state = 38, .external_lex_state = 3}, + [55] = {.lex_state = 38, .external_lex_state = 3}, + [56] = {.lex_state = 38, .external_lex_state = 3}, + [57] = {.lex_state = 38, .external_lex_state = 3}, + [58] = {.lex_state = 38, .external_lex_state = 3}, + [59] = {.lex_state = 38, .external_lex_state = 3}, + [60] = {.lex_state = 38, .external_lex_state = 3}, + [61] = {.lex_state = 38, .external_lex_state = 3}, + [62] = {.lex_state = 38, .external_lex_state = 3}, + [63] = {.lex_state = 38, .external_lex_state = 3}, + [64] = {.lex_state = 38, .external_lex_state = 3}, + [65] = {.lex_state = 38, .external_lex_state = 3}, + [66] = {.lex_state = 38, .external_lex_state = 3}, + [67] = {.lex_state = 38, .external_lex_state = 3}, + [68] = {.lex_state = 38, .external_lex_state = 3}, + [69] = {.lex_state = 38, .external_lex_state = 3}, + [70] = {.lex_state = 38, .external_lex_state = 3}, + [71] = {.lex_state = 38, .external_lex_state = 2}, + [72] = {.lex_state = 38, .external_lex_state = 2}, + [73] = {.lex_state = 38, .external_lex_state = 3}, + [74] = {.lex_state = 38, .external_lex_state = 3}, + [75] = {.lex_state = 38, .external_lex_state = 3}, + [76] = {.lex_state = 38, .external_lex_state = 3}, + [77] = {.lex_state = 38, .external_lex_state = 3}, + [78] = {.lex_state = 38, .external_lex_state = 4}, + [79] = {.lex_state = 38, .external_lex_state = 4}, + [80] = {.lex_state = 38, .external_lex_state = 4}, + [81] = {.lex_state = 38, .external_lex_state = 5}, + [82] = {.lex_state = 38, .external_lex_state = 5}, + [83] = {.lex_state = 38, .external_lex_state = 5}, + [84] = {.lex_state = 38, .external_lex_state = 5}, + [85] = {.lex_state = 38, .external_lex_state = 5}, + [86] = {.lex_state = 38, .external_lex_state = 5}, + [87] = {.lex_state = 38, .external_lex_state = 5}, + [88] = {.lex_state = 38, .external_lex_state = 5}, + [89] = {.lex_state = 38, .external_lex_state = 5}, + [90] = {.lex_state = 38, .external_lex_state = 5}, + [91] = {.lex_state = 38, .external_lex_state = 5}, + [92] = {.lex_state = 38, .external_lex_state = 5}, + [93] = {.lex_state = 38, .external_lex_state = 5}, + [94] = {.lex_state = 38, .external_lex_state = 5}, + [95] = {.lex_state = 38, .external_lex_state = 5}, + [96] = {.lex_state = 38, .external_lex_state = 5}, + [97] = {.lex_state = 38, .external_lex_state = 5}, + [98] = {.lex_state = 38, .external_lex_state = 5}, + [99] = {.lex_state = 38, .external_lex_state = 5}, + [100] = {.lex_state = 38, .external_lex_state = 5}, + [101] = {.lex_state = 38, .external_lex_state = 5}, + [102] = {.lex_state = 38, .external_lex_state = 5}, + [103] = {.lex_state = 38, .external_lex_state = 5}, + [104] = {.lex_state = 38, .external_lex_state = 5}, + [105] = {.lex_state = 38, .external_lex_state = 5}, + [106] = {.lex_state = 38, .external_lex_state = 5}, + [107] = {.lex_state = 38, .external_lex_state = 5}, + [108] = {.lex_state = 38, .external_lex_state = 5}, + [109] = {.lex_state = 38, .external_lex_state = 5}, + [110] = {.lex_state = 38, .external_lex_state = 5}, + [111] = {.lex_state = 38, .external_lex_state = 5}, + [112] = {.lex_state = 38, .external_lex_state = 5}, + [113] = {.lex_state = 38, .external_lex_state = 5}, + [114] = {.lex_state = 38, .external_lex_state = 5}, + [115] = {.lex_state = 38, .external_lex_state = 5}, + [116] = {.lex_state = 38, .external_lex_state = 5}, + [117] = {.lex_state = 38, .external_lex_state = 5}, + [118] = {.lex_state = 38, .external_lex_state = 5}, + [119] = {.lex_state = 38, .external_lex_state = 5}, + [120] = {.lex_state = 38, .external_lex_state = 5}, + [121] = {.lex_state = 38, .external_lex_state = 5}, + [122] = {.lex_state = 38, .external_lex_state = 5}, + [123] = {.lex_state = 38, .external_lex_state = 5}, + [124] = {.lex_state = 38, .external_lex_state = 5}, + [125] = {.lex_state = 38, .external_lex_state = 5}, + [126] = {.lex_state = 38, .external_lex_state = 5}, + [127] = {.lex_state = 38, .external_lex_state = 5}, + [128] = {.lex_state = 38, .external_lex_state = 5}, + [129] = {.lex_state = 38, .external_lex_state = 5}, + [130] = {.lex_state = 38, .external_lex_state = 5}, + [131] = {.lex_state = 38, .external_lex_state = 5}, + [132] = {.lex_state = 38, .external_lex_state = 5}, + [133] = {.lex_state = 38, .external_lex_state = 5}, + [134] = {.lex_state = 38, .external_lex_state = 5}, + [135] = {.lex_state = 38, .external_lex_state = 5}, + [136] = {.lex_state = 38, .external_lex_state = 5}, + [137] = {.lex_state = 38, .external_lex_state = 5}, + [138] = {.lex_state = 38, .external_lex_state = 5}, + [139] = {.lex_state = 38, .external_lex_state = 5}, + [140] = {.lex_state = 38, .external_lex_state = 5}, + [141] = {.lex_state = 38, .external_lex_state = 5}, + [142] = {.lex_state = 38, .external_lex_state = 5}, + [143] = {.lex_state = 38, .external_lex_state = 5}, + [144] = {.lex_state = 38, .external_lex_state = 5}, + [145] = {.lex_state = 38, .external_lex_state = 4}, + [146] = {.lex_state = 38, .external_lex_state = 4}, + [147] = {.lex_state = 38, .external_lex_state = 4}, + [148] = {.lex_state = 38, .external_lex_state = 4}, + [149] = {.lex_state = 38, .external_lex_state = 4}, + [150] = {.lex_state = 38, .external_lex_state = 4}, + [151] = {.lex_state = 38, .external_lex_state = 4}, + [152] = {.lex_state = 38, .external_lex_state = 4}, + [153] = {.lex_state = 38, .external_lex_state = 4}, + [154] = {.lex_state = 38, .external_lex_state = 4}, + [155] = {.lex_state = 38, .external_lex_state = 4}, + [156] = {.lex_state = 38, .external_lex_state = 4}, + [157] = {.lex_state = 38, .external_lex_state = 4}, + [158] = {.lex_state = 38, .external_lex_state = 4}, + [159] = {.lex_state = 38, .external_lex_state = 2}, + [160] = {.lex_state = 38, .external_lex_state = 4}, + [161] = {.lex_state = 38, .external_lex_state = 4}, + [162] = {.lex_state = 38, .external_lex_state = 6}, + [163] = {.lex_state = 38, .external_lex_state = 4}, + [164] = {.lex_state = 38, .external_lex_state = 6}, + [165] = {.lex_state = 17, .external_lex_state = 6}, + [166] = {.lex_state = 38, .external_lex_state = 4}, + [167] = {.lex_state = 38, .external_lex_state = 6}, + [168] = {.lex_state = 38, .external_lex_state = 2}, + [169] = {.lex_state = 38, .external_lex_state = 7}, + [170] = {.lex_state = 38, .external_lex_state = 7}, + [171] = {.lex_state = 38, .external_lex_state = 7}, + [172] = {.lex_state = 17, .external_lex_state = 6}, + [173] = {.lex_state = 38, .external_lex_state = 7}, + [174] = {.lex_state = 38, .external_lex_state = 8}, + [175] = {.lex_state = 38, .external_lex_state = 8}, + [176] = {.lex_state = 17, .external_lex_state = 2}, + [177] = {.lex_state = 38, .external_lex_state = 8}, + [178] = {.lex_state = 38, .external_lex_state = 7}, + [179] = {.lex_state = 38, .external_lex_state = 8}, + [180] = {.lex_state = 38, .external_lex_state = 8}, + [181] = {.lex_state = 17, .external_lex_state = 2}, + [182] = {.lex_state = 17, .external_lex_state = 8}, + [183] = {.lex_state = 38, .external_lex_state = 7}, + [184] = {.lex_state = 38, .external_lex_state = 7}, + [185] = {.lex_state = 17, .external_lex_state = 2}, + [186] = {.lex_state = 38, .external_lex_state = 7}, + [187] = {.lex_state = 38, .external_lex_state = 2}, + [188] = {.lex_state = 38, .external_lex_state = 2}, + [189] = {.lex_state = 38, .external_lex_state = 2}, + [190] = {.lex_state = 38, .external_lex_state = 7}, + [191] = {.lex_state = 38, .external_lex_state = 8}, + [192] = {.lex_state = 38, .external_lex_state = 7}, + [193] = {.lex_state = 38, .external_lex_state = 8}, + [194] = {.lex_state = 38, .external_lex_state = 7}, + [195] = {.lex_state = 38, .external_lex_state = 7}, + [196] = {.lex_state = 38, .external_lex_state = 8}, + [197] = {.lex_state = 38, .external_lex_state = 8}, + [198] = {.lex_state = 38, .external_lex_state = 8}, + [199] = {.lex_state = 38, .external_lex_state = 7}, + [200] = {.lex_state = 38, .external_lex_state = 7}, + [201] = {.lex_state = 38, .external_lex_state = 8}, + [202] = {.lex_state = 38, .external_lex_state = 7}, + [203] = {.lex_state = 38, .external_lex_state = 8}, + [204] = {.lex_state = 38, .external_lex_state = 7}, + [205] = {.lex_state = 38, .external_lex_state = 8}, + [206] = {.lex_state = 38, .external_lex_state = 6}, + [207] = {.lex_state = 38, .external_lex_state = 6}, + [208] = {.lex_state = 38, .external_lex_state = 6}, + [209] = {.lex_state = 38, .external_lex_state = 6}, + [210] = {.lex_state = 38, .external_lex_state = 6}, + [211] = {.lex_state = 38, .external_lex_state = 6}, + [212] = {.lex_state = 38, .external_lex_state = 6}, + [213] = {.lex_state = 38, .external_lex_state = 6}, + [214] = {.lex_state = 17, .external_lex_state = 2}, + [215] = {.lex_state = 17, .external_lex_state = 2}, + [216] = {.lex_state = 38, .external_lex_state = 2}, + [217] = {.lex_state = 38, .external_lex_state = 2}, + [218] = {.lex_state = 38, .external_lex_state = 7}, + [219] = {.lex_state = 38, .external_lex_state = 7}, + [220] = {.lex_state = 38, .external_lex_state = 7}, + [221] = {.lex_state = 38, .external_lex_state = 7}, + [222] = {.lex_state = 38, .external_lex_state = 7}, + [223] = {.lex_state = 38, .external_lex_state = 7}, + [224] = {.lex_state = 38, .external_lex_state = 7}, + [225] = {.lex_state = 38, .external_lex_state = 7}, + [226] = {.lex_state = 38, .external_lex_state = 7}, + [227] = {.lex_state = 38, .external_lex_state = 7}, + [228] = {.lex_state = 38, .external_lex_state = 7}, + [229] = {.lex_state = 38, .external_lex_state = 8}, + [230] = {.lex_state = 38, .external_lex_state = 7}, + [231] = {.lex_state = 38, .external_lex_state = 7}, + [232] = {.lex_state = 38, .external_lex_state = 7}, + [233] = {.lex_state = 38, .external_lex_state = 8}, + [234] = {.lex_state = 38, .external_lex_state = 7}, + [235] = {.lex_state = 38, .external_lex_state = 8}, + [236] = {.lex_state = 38, .external_lex_state = 7}, + [237] = {.lex_state = 38, .external_lex_state = 7}, + [238] = {.lex_state = 38, .external_lex_state = 7}, + [239] = {.lex_state = 38, .external_lex_state = 7}, + [240] = {.lex_state = 38, .external_lex_state = 8}, + [241] = {.lex_state = 38, .external_lex_state = 7}, + [242] = {.lex_state = 38, .external_lex_state = 7}, + [243] = {.lex_state = 38, .external_lex_state = 7}, + [244] = {.lex_state = 38, .external_lex_state = 7}, + [245] = {.lex_state = 38, .external_lex_state = 7}, + [246] = {.lex_state = 38, .external_lex_state = 7}, + [247] = {.lex_state = 38, .external_lex_state = 7}, + [248] = {.lex_state = 38, .external_lex_state = 7}, + [249] = {.lex_state = 38, .external_lex_state = 8}, + [250] = {.lex_state = 38, .external_lex_state = 7}, + [251] = {.lex_state = 38, .external_lex_state = 7}, + [252] = {.lex_state = 38, .external_lex_state = 7}, + [253] = {.lex_state = 38, .external_lex_state = 7}, + [254] = {.lex_state = 38, .external_lex_state = 7}, + [255] = {.lex_state = 38, .external_lex_state = 7}, + [256] = {.lex_state = 38, .external_lex_state = 7}, + [257] = {.lex_state = 38, .external_lex_state = 7}, + [258] = {.lex_state = 38, .external_lex_state = 7}, + [259] = {.lex_state = 38, .external_lex_state = 7}, + [260] = {.lex_state = 38, .external_lex_state = 7}, + [261] = {.lex_state = 38, .external_lex_state = 7}, + [262] = {.lex_state = 38, .external_lex_state = 7}, + [263] = {.lex_state = 38, .external_lex_state = 7}, + [264] = {.lex_state = 38, .external_lex_state = 8}, + [265] = {.lex_state = 38, .external_lex_state = 8}, + [266] = {.lex_state = 38, .external_lex_state = 7}, + [267] = {.lex_state = 38, .external_lex_state = 7}, + [268] = {.lex_state = 38, .external_lex_state = 7}, + [269] = {.lex_state = 38, .external_lex_state = 7}, + [270] = {.lex_state = 38, .external_lex_state = 7}, + [271] = {.lex_state = 38, .external_lex_state = 7}, + [272] = {.lex_state = 38, .external_lex_state = 8}, + [273] = {.lex_state = 38, .external_lex_state = 7}, + [274] = {.lex_state = 38, .external_lex_state = 7}, + [275] = {.lex_state = 38, .external_lex_state = 7}, + [276] = {.lex_state = 17, .external_lex_state = 6}, + [277] = {.lex_state = 38, .external_lex_state = 7}, + [278] = {.lex_state = 38, .external_lex_state = 7}, + [279] = {.lex_state = 38, .external_lex_state = 7}, + [280] = {.lex_state = 38, .external_lex_state = 7}, + [281] = {.lex_state = 38, .external_lex_state = 7}, + [282] = {.lex_state = 38, .external_lex_state = 7}, + [283] = {.lex_state = 38, .external_lex_state = 6}, + [284] = {.lex_state = 38, .external_lex_state = 7}, + [285] = {.lex_state = 38, .external_lex_state = 8}, + [286] = {.lex_state = 17, .external_lex_state = 6}, + [287] = {.lex_state = 38, .external_lex_state = 6}, + [288] = {.lex_state = 17, .external_lex_state = 6}, + [289] = {.lex_state = 38, .external_lex_state = 2}, + [290] = {.lex_state = 38, .external_lex_state = 8}, + [291] = {.lex_state = 38, .external_lex_state = 7}, + [292] = {.lex_state = 38, .external_lex_state = 4}, + [293] = {.lex_state = 38, .external_lex_state = 2}, + [294] = {.lex_state = 38, .external_lex_state = 2}, + [295] = {.lex_state = 38, .external_lex_state = 7}, + [296] = {.lex_state = 17, .external_lex_state = 6}, + [297] = {.lex_state = 17, .external_lex_state = 6}, + [298] = {.lex_state = 38, .external_lex_state = 6}, + [299] = {.lex_state = 38, .external_lex_state = 8}, + [300] = {.lex_state = 38, .external_lex_state = 8}, + [301] = {.lex_state = 38, .external_lex_state = 8}, + [302] = {.lex_state = 38, .external_lex_state = 7}, + [303] = {.lex_state = 38, .external_lex_state = 7}, + [304] = {.lex_state = 38, .external_lex_state = 7}, + [305] = {.lex_state = 38, .external_lex_state = 2}, + [306] = {.lex_state = 38, .external_lex_state = 6}, + [307] = {.lex_state = 38, .external_lex_state = 6}, + [308] = {.lex_state = 38, .external_lex_state = 4}, + [309] = {.lex_state = 38, .external_lex_state = 8}, + [310] = {.lex_state = 38, .external_lex_state = 6}, + [311] = {.lex_state = 38, .external_lex_state = 6}, + [312] = {.lex_state = 38, .external_lex_state = 6}, + [313] = {.lex_state = 38, .external_lex_state = 6}, + [314] = {.lex_state = 18, .external_lex_state = 9}, + [315] = {.lex_state = 38, .external_lex_state = 6}, + [316] = {.lex_state = 17, .external_lex_state = 7}, + [317] = {.lex_state = 17, .external_lex_state = 7}, + [318] = {.lex_state = 38, .external_lex_state = 8}, + [319] = {.lex_state = 38, .external_lex_state = 6}, + [320] = {.lex_state = 38, .external_lex_state = 6}, + [321] = {.lex_state = 38, .external_lex_state = 6}, + [322] = {.lex_state = 38, .external_lex_state = 7}, + [323] = {.lex_state = 18, .external_lex_state = 4}, + [324] = {.lex_state = 38, .external_lex_state = 6}, + [325] = {.lex_state = 38, .external_lex_state = 6}, + [326] = {.lex_state = 38, .external_lex_state = 6}, + [327] = {.lex_state = 38, .external_lex_state = 4}, + [328] = {.lex_state = 38, .external_lex_state = 6}, + [329] = {.lex_state = 38, .external_lex_state = 4}, + [330] = {.lex_state = 38, .external_lex_state = 6}, + [331] = {.lex_state = 18, .external_lex_state = 9}, + [332] = {.lex_state = 38, .external_lex_state = 6}, + [333] = {.lex_state = 38, .external_lex_state = 6}, + [334] = {.lex_state = 38, .external_lex_state = 6}, + [335] = {.lex_state = 38, .external_lex_state = 6}, + [336] = {.lex_state = 17, .external_lex_state = 8}, + [337] = {.lex_state = 17, .external_lex_state = 8}, + [338] = {.lex_state = 38, .external_lex_state = 4}, + [339] = {.lex_state = 17, .external_lex_state = 8}, + [340] = {.lex_state = 17, .external_lex_state = 8}, + [341] = {.lex_state = 38, .external_lex_state = 2}, + [342] = {.lex_state = 17, .external_lex_state = 8}, + [343] = {.lex_state = 17, .external_lex_state = 8}, + [344] = {.lex_state = 38, .external_lex_state = 7}, + [345] = {.lex_state = 17, .external_lex_state = 2}, + [346] = {.lex_state = 17, .external_lex_state = 8}, + [347] = {.lex_state = 17, .external_lex_state = 8}, + [348] = {.lex_state = 17, .external_lex_state = 8}, + [349] = {.lex_state = 17, .external_lex_state = 8}, + [350] = {.lex_state = 17, .external_lex_state = 8}, + [351] = {.lex_state = 17, .external_lex_state = 8}, + [352] = {.lex_state = 17, .external_lex_state = 8}, + [353] = {.lex_state = 17, .external_lex_state = 8}, + [354] = {.lex_state = 38, .external_lex_state = 8}, + [355] = {.lex_state = 17, .external_lex_state = 8}, + [356] = {.lex_state = 17, .external_lex_state = 8}, + [357] = {.lex_state = 17, .external_lex_state = 8}, + [358] = {.lex_state = 38, .external_lex_state = 4}, + [359] = {.lex_state = 38, .external_lex_state = 4}, + [360] = {.lex_state = 17, .external_lex_state = 8}, + [361] = {.lex_state = 17, .external_lex_state = 8}, + [362] = {.lex_state = 38, .external_lex_state = 2}, + [363] = {.lex_state = 17, .external_lex_state = 8}, + [364] = {.lex_state = 17, .external_lex_state = 8}, + [365] = {.lex_state = 17, .external_lex_state = 8}, + [366] = {.lex_state = 17, .external_lex_state = 8}, + [367] = {.lex_state = 17, .external_lex_state = 8}, + [368] = {.lex_state = 17, .external_lex_state = 8}, + [369] = {.lex_state = 38, .external_lex_state = 8}, + [370] = {.lex_state = 17, .external_lex_state = 8}, + [371] = {.lex_state = 38, .external_lex_state = 7}, + [372] = {.lex_state = 38, .external_lex_state = 2}, + [373] = {.lex_state = 39, .external_lex_state = 3}, + [374] = {.lex_state = 40, .external_lex_state = 2}, + [375] = {.lex_state = 39, .external_lex_state = 2}, + [376] = {.lex_state = 39, .external_lex_state = 2}, + [377] = {.lex_state = 38, .external_lex_state = 2}, + [378] = {.lex_state = 38, .external_lex_state = 2}, + [379] = {.lex_state = 17, .external_lex_state = 2}, + [380] = {.lex_state = 17, .external_lex_state = 2}, + [381] = {.lex_state = 38, .external_lex_state = 8}, + [382] = {.lex_state = 40, .external_lex_state = 2}, + [383] = {.lex_state = 38, .external_lex_state = 2}, + [384] = {.lex_state = 38, .external_lex_state = 2}, + [385] = {.lex_state = 38, .external_lex_state = 4}, + [386] = {.lex_state = 38, .external_lex_state = 2}, + [387] = {.lex_state = 38, .external_lex_state = 7}, + [388] = {.lex_state = 38, .external_lex_state = 4}, + [389] = {.lex_state = 38, .external_lex_state = 2}, + [390] = {.lex_state = 38, .external_lex_state = 4}, + [391] = {.lex_state = 38, .external_lex_state = 2}, + [392] = {.lex_state = 17, .external_lex_state = 2}, + [393] = {.lex_state = 17, .external_lex_state = 2}, + [394] = {.lex_state = 38, .external_lex_state = 2}, + [395] = {.lex_state = 17, .external_lex_state = 2}, + [396] = {.lex_state = 38, .external_lex_state = 8}, + [397] = {.lex_state = 17, .external_lex_state = 2}, + [398] = {.lex_state = 38, .external_lex_state = 8}, + [399] = {.lex_state = 38, .external_lex_state = 8}, + [400] = {.lex_state = 40, .external_lex_state = 3}, + [401] = {.lex_state = 17, .external_lex_state = 2}, + [402] = {.lex_state = 38, .external_lex_state = 8}, + [403] = {.lex_state = 38, .external_lex_state = 2}, + [404] = {.lex_state = 38, .external_lex_state = 4}, + [405] = {.lex_state = 17, .external_lex_state = 2}, + [406] = {.lex_state = 38, .external_lex_state = 4}, + [407] = {.lex_state = 38, .external_lex_state = 7}, + [408] = {.lex_state = 38, .external_lex_state = 2}, + [409] = {.lex_state = 38, .external_lex_state = 2}, + [410] = {.lex_state = 17, .external_lex_state = 2}, + [411] = {.lex_state = 38, .external_lex_state = 4}, + [412] = {.lex_state = 39, .external_lex_state = 3}, + [413] = {.lex_state = 38, .external_lex_state = 2}, + [414] = {.lex_state = 38, .external_lex_state = 7}, + [415] = {.lex_state = 38, .external_lex_state = 2}, + [416] = {.lex_state = 17, .external_lex_state = 2}, + [417] = {.lex_state = 38, .external_lex_state = 2}, + [418] = {.lex_state = 38, .external_lex_state = 2}, + [419] = {.lex_state = 38, .external_lex_state = 2}, + [420] = {.lex_state = 40, .external_lex_state = 3}, + [421] = {.lex_state = 17, .external_lex_state = 2}, + [422] = {.lex_state = 38, .external_lex_state = 2}, + [423] = {.lex_state = 38, .external_lex_state = 2}, + [424] = {.lex_state = 22, .external_lex_state = 9}, + [425] = {.lex_state = 18, .external_lex_state = 9}, + [426] = {.lex_state = 22, .external_lex_state = 9}, + [427] = {.lex_state = 38, .external_lex_state = 2}, + [428] = {.lex_state = 38, .external_lex_state = 2}, + [429] = {.lex_state = 18, .external_lex_state = 9}, + [430] = {.lex_state = 38, .external_lex_state = 2}, + [431] = {.lex_state = 38, .external_lex_state = 2}, + [432] = {.lex_state = 17, .external_lex_state = 2}, + [433] = {.lex_state = 17, .external_lex_state = 2}, + [434] = {.lex_state = 38, .external_lex_state = 2}, + [435] = {.lex_state = 18, .external_lex_state = 9}, + [436] = {.lex_state = 22, .external_lex_state = 9}, + [437] = {.lex_state = 17, .external_lex_state = 2}, + [438] = {.lex_state = 38, .external_lex_state = 2}, + [439] = {.lex_state = 38, .external_lex_state = 2}, + [440] = {.lex_state = 22, .external_lex_state = 9}, + [441] = {.lex_state = 22, .external_lex_state = 9}, + [442] = {.lex_state = 38, .external_lex_state = 2}, + [443] = {.lex_state = 17, .external_lex_state = 2}, + [444] = {.lex_state = 18, .external_lex_state = 9}, + [445] = {.lex_state = 38, .external_lex_state = 2}, + [446] = {.lex_state = 17, .external_lex_state = 2}, + [447] = {.lex_state = 38, .external_lex_state = 2}, + [448] = {.lex_state = 38, .external_lex_state = 2}, + [449] = {.lex_state = 38, .external_lex_state = 2}, + [450] = {.lex_state = 22, .external_lex_state = 9}, + [451] = {.lex_state = 17, .external_lex_state = 2}, + [452] = {.lex_state = 38, .external_lex_state = 2}, + [453] = {.lex_state = 22, .external_lex_state = 9}, + [454] = {.lex_state = 17, .external_lex_state = 2}, + [455] = {.lex_state = 17, .external_lex_state = 2}, + [456] = {.lex_state = 38, .external_lex_state = 2}, + [457] = {.lex_state = 38, .external_lex_state = 2}, + [458] = {.lex_state = 38, .external_lex_state = 2}, + [459] = {.lex_state = 38, .external_lex_state = 2}, + [460] = {.lex_state = 38, .external_lex_state = 2}, + [461] = {.lex_state = 38, .external_lex_state = 2}, + [462] = {.lex_state = 38, .external_lex_state = 2}, + [463] = {.lex_state = 38, .external_lex_state = 2}, + [464] = {.lex_state = 38, .external_lex_state = 2}, + [465] = {.lex_state = 38, .external_lex_state = 2}, + [466] = {.lex_state = 38, .external_lex_state = 2}, + [467] = {.lex_state = 38, .external_lex_state = 2}, + [468] = {.lex_state = 38, .external_lex_state = 2}, + [469] = {.lex_state = 38, .external_lex_state = 3}, + [470] = {.lex_state = 38, .external_lex_state = 2}, + [471] = {.lex_state = 38, .external_lex_state = 2}, + [472] = {.lex_state = 38, .external_lex_state = 2}, + [473] = {.lex_state = 38, .external_lex_state = 2}, + [474] = {.lex_state = 38, .external_lex_state = 2}, + [475] = {.lex_state = 38, .external_lex_state = 2}, + [476] = {.lex_state = 38, .external_lex_state = 2}, + [477] = {.lex_state = 38, .external_lex_state = 2}, + [478] = {.lex_state = 38, .external_lex_state = 2}, + [479] = {.lex_state = 38, .external_lex_state = 2}, + [480] = {.lex_state = 38, .external_lex_state = 2}, + [481] = {.lex_state = 38, .external_lex_state = 2}, + [482] = {.lex_state = 38, .external_lex_state = 2}, + [483] = {.lex_state = 38, .external_lex_state = 2}, + [484] = {.lex_state = 38, .external_lex_state = 2}, + [485] = {.lex_state = 38, .external_lex_state = 2}, + [486] = {.lex_state = 38, .external_lex_state = 2}, + [487] = {.lex_state = 38, .external_lex_state = 2}, + [488] = {.lex_state = 38, .external_lex_state = 2}, + [489] = {.lex_state = 38, .external_lex_state = 2}, + [490] = {.lex_state = 38, .external_lex_state = 2}, + [491] = {.lex_state = 38, .external_lex_state = 2}, + [492] = {.lex_state = 38, .external_lex_state = 2}, + [493] = {.lex_state = 38, .external_lex_state = 2}, + [494] = {.lex_state = 38, .external_lex_state = 2}, + [495] = {.lex_state = 38, .external_lex_state = 2}, + [496] = {.lex_state = 38, .external_lex_state = 2}, + [497] = {.lex_state = 38, .external_lex_state = 2}, + [498] = {.lex_state = 38, .external_lex_state = 2}, + [499] = {.lex_state = 38, .external_lex_state = 2}, + [500] = {.lex_state = 38, .external_lex_state = 2}, + [501] = {.lex_state = 38, .external_lex_state = 2}, + [502] = {.lex_state = 38, .external_lex_state = 2}, + [503] = {.lex_state = 38, .external_lex_state = 2}, + [504] = {.lex_state = 38, .external_lex_state = 2}, + [505] = {.lex_state = 38, .external_lex_state = 2}, + [506] = {.lex_state = 38, .external_lex_state = 2}, + [507] = {.lex_state = 39, .external_lex_state = 2}, + [508] = {.lex_state = 40, .external_lex_state = 2}, + [509] = {.lex_state = 22, .external_lex_state = 9}, + [510] = {.lex_state = 38, .external_lex_state = 2}, + [511] = {.lex_state = 38, .external_lex_state = 2}, + [512] = {.lex_state = 38, .external_lex_state = 2}, + [513] = {.lex_state = 38, .external_lex_state = 2}, + [514] = {.lex_state = 38, .external_lex_state = 2}, + [515] = {.lex_state = 38, .external_lex_state = 2}, + [516] = {.lex_state = 38, .external_lex_state = 2}, + [517] = {.lex_state = 38, .external_lex_state = 2}, + [518] = {.lex_state = 38, .external_lex_state = 2}, + [519] = {.lex_state = 22, .external_lex_state = 9}, + [520] = {.lex_state = 38, .external_lex_state = 2}, + [521] = {.lex_state = 38, .external_lex_state = 2}, + [522] = {.lex_state = 38, .external_lex_state = 2}, + [523] = {.lex_state = 38, .external_lex_state = 2}, + [524] = {.lex_state = 38, .external_lex_state = 2}, + [525] = {.lex_state = 38, .external_lex_state = 2}, + [526] = {.lex_state = 38, .external_lex_state = 2}, + [527] = {.lex_state = 38, .external_lex_state = 2}, + [528] = {.lex_state = 38, .external_lex_state = 2}, + [529] = {.lex_state = 38, .external_lex_state = 2}, + [530] = {.lex_state = 38, .external_lex_state = 2}, + [531] = {.lex_state = 38, .external_lex_state = 2}, + [532] = {.lex_state = 38, .external_lex_state = 2}, + [533] = {.lex_state = 38, .external_lex_state = 2}, + [534] = {.lex_state = 38, .external_lex_state = 2}, + [535] = {.lex_state = 38, .external_lex_state = 2}, + [536] = {.lex_state = 38, .external_lex_state = 2}, + [537] = {.lex_state = 38, .external_lex_state = 2}, + [538] = {.lex_state = 38, .external_lex_state = 2}, + [539] = {.lex_state = 22, .external_lex_state = 9}, + [540] = {.lex_state = 38, .external_lex_state = 2}, + [541] = {.lex_state = 38, .external_lex_state = 3}, + [542] = {.lex_state = 38, .external_lex_state = 2}, + [543] = {.lex_state = 38, .external_lex_state = 2}, + [544] = {.lex_state = 38, .external_lex_state = 2}, + [545] = {.lex_state = 38, .external_lex_state = 2}, + [546] = {.lex_state = 38, .external_lex_state = 2}, + [547] = {.lex_state = 38, .external_lex_state = 2}, + [548] = {.lex_state = 38, .external_lex_state = 2}, + [549] = {.lex_state = 38, .external_lex_state = 2}, + [550] = {.lex_state = 38, .external_lex_state = 2}, + [551] = {.lex_state = 38, .external_lex_state = 2}, + [552] = {.lex_state = 38, .external_lex_state = 2}, + [553] = {.lex_state = 22, .external_lex_state = 9}, + [554] = {.lex_state = 38, .external_lex_state = 2}, + [555] = {.lex_state = 38, .external_lex_state = 2}, + [556] = {.lex_state = 38, .external_lex_state = 2}, + [557] = {.lex_state = 38, .external_lex_state = 2}, + [558] = {.lex_state = 38, .external_lex_state = 2}, + [559] = {.lex_state = 40, .external_lex_state = 3}, + [560] = {.lex_state = 38, .external_lex_state = 2}, + [561] = {.lex_state = 38, .external_lex_state = 2}, + [562] = {.lex_state = 38, .external_lex_state = 2}, + [563] = {.lex_state = 38, .external_lex_state = 2}, + [564] = {.lex_state = 38, .external_lex_state = 2}, + [565] = {.lex_state = 38, .external_lex_state = 2}, + [566] = {.lex_state = 39, .external_lex_state = 3}, + [567] = {.lex_state = 38, .external_lex_state = 2}, + [568] = {.lex_state = 38, .external_lex_state = 2}, + [569] = {.lex_state = 38, .external_lex_state = 2}, + [570] = {.lex_state = 38, .external_lex_state = 2}, + [571] = {.lex_state = 38, .external_lex_state = 2}, + [572] = {.lex_state = 38, .external_lex_state = 2}, + [573] = {.lex_state = 38, .external_lex_state = 2}, + [574] = {.lex_state = 38, .external_lex_state = 2}, + [575] = {.lex_state = 38, .external_lex_state = 2}, + [576] = {.lex_state = 38, .external_lex_state = 2}, + [577] = {.lex_state = 38, .external_lex_state = 2}, + [578] = {.lex_state = 38, .external_lex_state = 2}, + [579] = {.lex_state = 38, .external_lex_state = 2}, + [580] = {.lex_state = 38, .external_lex_state = 2}, + [581] = {.lex_state = 38, .external_lex_state = 2}, + [582] = {.lex_state = 38, .external_lex_state = 2}, + [583] = {.lex_state = 38, .external_lex_state = 3}, + [584] = {.lex_state = 38, .external_lex_state = 2}, + [585] = {.lex_state = 38, .external_lex_state = 2}, + [586] = {.lex_state = 38, .external_lex_state = 2}, + [587] = {.lex_state = 38, .external_lex_state = 2}, + [588] = {.lex_state = 38, .external_lex_state = 2}, + [589] = {.lex_state = 38, .external_lex_state = 2}, + [590] = {.lex_state = 38, .external_lex_state = 2}, + [591] = {.lex_state = 38, .external_lex_state = 2}, + [592] = {.lex_state = 38, .external_lex_state = 2}, + [593] = {.lex_state = 38, .external_lex_state = 2}, + [594] = {.lex_state = 38, .external_lex_state = 3}, + [595] = {.lex_state = 38, .external_lex_state = 2}, + [596] = {.lex_state = 22, .external_lex_state = 10}, + [597] = {.lex_state = 38, .external_lex_state = 3}, + [598] = {.lex_state = 38, .external_lex_state = 3}, + [599] = {.lex_state = 38, .external_lex_state = 2}, + [600] = {.lex_state = 38, .external_lex_state = 3}, + [601] = {.lex_state = 38, .external_lex_state = 3}, + [602] = {.lex_state = 38, .external_lex_state = 2}, + [603] = {.lex_state = 22, .external_lex_state = 10}, + [604] = {.lex_state = 22, .external_lex_state = 10}, + [605] = {.lex_state = 22, .external_lex_state = 10}, + [606] = {.lex_state = 38, .external_lex_state = 3}, + [607] = {.lex_state = 38, .external_lex_state = 3}, + [608] = {.lex_state = 22, .external_lex_state = 10}, + [609] = {.lex_state = 22, .external_lex_state = 10}, + [610] = {.lex_state = 38, .external_lex_state = 2}, + [611] = {.lex_state = 38, .external_lex_state = 2}, + [612] = {.lex_state = 38, .external_lex_state = 2}, + [613] = {.lex_state = 22, .external_lex_state = 10}, + [614] = {.lex_state = 39, .external_lex_state = 3}, + [615] = {.lex_state = 39, .external_lex_state = 3}, + [616] = {.lex_state = 40, .external_lex_state = 3}, + [617] = {.lex_state = 38, .external_lex_state = 3}, + [618] = {.lex_state = 38, .external_lex_state = 3}, + [619] = {.lex_state = 40, .external_lex_state = 3}, + [620] = {.lex_state = 38, .external_lex_state = 3}, + [621] = {.lex_state = 39, .external_lex_state = 2}, + [622] = {.lex_state = 38, .external_lex_state = 3}, + [623] = {.lex_state = 40, .external_lex_state = 3}, + [624] = {.lex_state = 40, .external_lex_state = 2}, + [625] = {.lex_state = 39, .external_lex_state = 2}, + [626] = {.lex_state = 39, .external_lex_state = 3}, + [627] = {.lex_state = 39, .external_lex_state = 3}, + [628] = {.lex_state = 39, .external_lex_state = 2}, + [629] = {.lex_state = 40, .external_lex_state = 3}, + [630] = {.lex_state = 39, .external_lex_state = 3}, + [631] = {.lex_state = 39, .external_lex_state = 3}, + [632] = {.lex_state = 40, .external_lex_state = 2}, + [633] = {.lex_state = 38, .external_lex_state = 2}, + [634] = {.lex_state = 39, .external_lex_state = 2}, + [635] = {.lex_state = 40, .external_lex_state = 2}, + [636] = {.lex_state = 40, .external_lex_state = 2}, + [637] = {.lex_state = 39, .external_lex_state = 2}, + [638] = {.lex_state = 39, .external_lex_state = 2}, + [639] = {.lex_state = 40, .external_lex_state = 2}, + [640] = {.lex_state = 39, .external_lex_state = 2}, + [641] = {.lex_state = 38, .external_lex_state = 2}, + [642] = {.lex_state = 38, .external_lex_state = 3}, + [643] = {.lex_state = 38, .external_lex_state = 3}, + [644] = {.lex_state = 39, .external_lex_state = 3}, + [645] = {.lex_state = 40, .external_lex_state = 3}, + [646] = {.lex_state = 38, .external_lex_state = 2}, + [647] = {.lex_state = 40, .external_lex_state = 3}, + [648] = {.lex_state = 40, .external_lex_state = 3}, + [649] = {.lex_state = 38, .external_lex_state = 3}, + [650] = {.lex_state = 39, .external_lex_state = 3}, + [651] = {.lex_state = 39, .external_lex_state = 2}, + [652] = {.lex_state = 39, .external_lex_state = 2}, + [653] = {.lex_state = 39, .external_lex_state = 2}, + [654] = {.lex_state = 38, .external_lex_state = 2}, + [655] = {.lex_state = 40, .external_lex_state = 3}, + [656] = {.lex_state = 40, .external_lex_state = 3}, + [657] = {.lex_state = 39, .external_lex_state = 2}, + [658] = {.lex_state = 17, .external_lex_state = 6}, + [659] = {.lex_state = 38, .external_lex_state = 2}, + [660] = {.lex_state = 38, .external_lex_state = 2}, + [661] = {.lex_state = 39, .external_lex_state = 3}, + [662] = {.lex_state = 40, .external_lex_state = 2}, + [663] = {.lex_state = 40, .external_lex_state = 2}, + [664] = {.lex_state = 40, .external_lex_state = 2}, + [665] = {.lex_state = 17, .external_lex_state = 6}, + [666] = {.lex_state = 38, .external_lex_state = 3}, + [667] = {.lex_state = 38, .external_lex_state = 2}, + [668] = {.lex_state = 40, .external_lex_state = 2}, + [669] = {.lex_state = 39, .external_lex_state = 3}, + [670] = {.lex_state = 38, .external_lex_state = 3}, + [671] = {.lex_state = 38, .external_lex_state = 2}, + [672] = {.lex_state = 38, .external_lex_state = 2}, + [673] = {.lex_state = 39, .external_lex_state = 3}, + [674] = {.lex_state = 38, .external_lex_state = 3}, + [675] = {.lex_state = 38, .external_lex_state = 3}, + [676] = {.lex_state = 38, .external_lex_state = 2}, + [677] = {.lex_state = 38, .external_lex_state = 2}, + [678] = {.lex_state = 38, .external_lex_state = 3}, + [679] = {.lex_state = 38, .external_lex_state = 2}, + [680] = {.lex_state = 38, .external_lex_state = 2}, + [681] = {.lex_state = 38, .external_lex_state = 2}, + [682] = {.lex_state = 38, .external_lex_state = 2}, + [683] = {.lex_state = 38, .external_lex_state = 3}, + [684] = {.lex_state = 38, .external_lex_state = 3}, + [685] = {.lex_state = 38, .external_lex_state = 2}, + [686] = {.lex_state = 38, .external_lex_state = 3}, + [687] = {.lex_state = 38, .external_lex_state = 2}, + [688] = {.lex_state = 38, .external_lex_state = 2}, + [689] = {.lex_state = 38, .external_lex_state = 3}, + [690] = {.lex_state = 38, .external_lex_state = 3}, + [691] = {.lex_state = 38, .external_lex_state = 3}, + [692] = {.lex_state = 38, .external_lex_state = 3}, + [693] = {.lex_state = 38, .external_lex_state = 2}, + [694] = {.lex_state = 38, .external_lex_state = 2}, + [695] = {.lex_state = 38, .external_lex_state = 3}, + [696] = {.lex_state = 38, .external_lex_state = 2}, + [697] = {.lex_state = 38, .external_lex_state = 3}, + [698] = {.lex_state = 38, .external_lex_state = 7}, + [699] = {.lex_state = 38, .external_lex_state = 2}, + [700] = {.lex_state = 38, .external_lex_state = 3}, + [701] = {.lex_state = 38, .external_lex_state = 3}, + [702] = {.lex_state = 38, .external_lex_state = 2}, + [703] = {.lex_state = 38, .external_lex_state = 3}, + [704] = {.lex_state = 38, .external_lex_state = 3}, + [705] = {.lex_state = 38, .external_lex_state = 3}, + [706] = {.lex_state = 38, .external_lex_state = 3}, + [707] = {.lex_state = 38, .external_lex_state = 3}, + [708] = {.lex_state = 38, .external_lex_state = 3}, + [709] = {.lex_state = 38, .external_lex_state = 3}, + [710] = {.lex_state = 38, .external_lex_state = 3}, + [711] = {.lex_state = 38, .external_lex_state = 3}, + [712] = {.lex_state = 38, .external_lex_state = 3}, + [713] = {.lex_state = 38, .external_lex_state = 3}, + [714] = {.lex_state = 38, .external_lex_state = 7}, + [715] = {.lex_state = 38, .external_lex_state = 3}, + [716] = {.lex_state = 38, .external_lex_state = 2}, + [717] = {.lex_state = 38, .external_lex_state = 3}, + [718] = {.lex_state = 38, .external_lex_state = 3}, + [719] = {.lex_state = 38, .external_lex_state = 3}, + [720] = {.lex_state = 38, .external_lex_state = 3}, + [721] = {.lex_state = 38, .external_lex_state = 3}, + [722] = {.lex_state = 38, .external_lex_state = 3}, + [723] = {.lex_state = 38, .external_lex_state = 3}, + [724] = {.lex_state = 38, .external_lex_state = 2}, + [725] = {.lex_state = 38, .external_lex_state = 3}, + [726] = {.lex_state = 38, .external_lex_state = 3}, + [727] = {.lex_state = 38, .external_lex_state = 2}, + [728] = {.lex_state = 38, .external_lex_state = 2}, + [729] = {.lex_state = 38, .external_lex_state = 2}, + [730] = {.lex_state = 38, .external_lex_state = 3}, + [731] = {.lex_state = 38, .external_lex_state = 2}, + [732] = {.lex_state = 38, .external_lex_state = 2}, + [733] = {.lex_state = 38, .external_lex_state = 3}, + [734] = {.lex_state = 38, .external_lex_state = 2}, + [735] = {.lex_state = 38, .external_lex_state = 2}, + [736] = {.lex_state = 38, .external_lex_state = 2}, + [737] = {.lex_state = 38, .external_lex_state = 2}, + [738] = {.lex_state = 38, .external_lex_state = 2}, + [739] = {.lex_state = 38, .external_lex_state = 2}, + [740] = {.lex_state = 38, .external_lex_state = 2}, + [741] = {.lex_state = 38, .external_lex_state = 2}, + [742] = {.lex_state = 38, .external_lex_state = 2}, + [743] = {.lex_state = 38, .external_lex_state = 2}, + [744] = {.lex_state = 38, .external_lex_state = 3}, + [745] = {.lex_state = 38, .external_lex_state = 2}, + [746] = {.lex_state = 38, .external_lex_state = 2}, + [747] = {.lex_state = 38, .external_lex_state = 2}, + [748] = {.lex_state = 38, .external_lex_state = 3}, + [749] = {.lex_state = 38, .external_lex_state = 3}, + [750] = {.lex_state = 38, .external_lex_state = 3}, + [751] = {.lex_state = 38, .external_lex_state = 2}, + [752] = {.lex_state = 38, .external_lex_state = 3}, + [753] = {.lex_state = 38, .external_lex_state = 2}, + [754] = {.lex_state = 38, .external_lex_state = 2}, + [755] = {.lex_state = 38, .external_lex_state = 3}, + [756] = {.lex_state = 38, .external_lex_state = 2}, + [757] = {.lex_state = 38, .external_lex_state = 3}, + [758] = {.lex_state = 38, .external_lex_state = 2}, + [759] = {.lex_state = 38, .external_lex_state = 2}, + [760] = {.lex_state = 38, .external_lex_state = 3}, + [761] = {.lex_state = 38, .external_lex_state = 2}, + [762] = {.lex_state = 38, .external_lex_state = 2}, + [763] = {.lex_state = 38, .external_lex_state = 2}, + [764] = {.lex_state = 38, .external_lex_state = 3}, + [765] = {.lex_state = 38, .external_lex_state = 2}, + [766] = {.lex_state = 38, .external_lex_state = 2}, + [767] = {.lex_state = 38, .external_lex_state = 2}, + [768] = {.lex_state = 38, .external_lex_state = 3}, + [769] = {.lex_state = 38, .external_lex_state = 2}, + [770] = {.lex_state = 38, .external_lex_state = 2}, + [771] = {.lex_state = 38, .external_lex_state = 2}, + [772] = {.lex_state = 38, .external_lex_state = 2}, + [773] = {.lex_state = 38, .external_lex_state = 3}, + [774] = {.lex_state = 38, .external_lex_state = 2}, + [775] = {.lex_state = 38, .external_lex_state = 2}, + [776] = {.lex_state = 38, .external_lex_state = 2}, + [777] = {.lex_state = 38, .external_lex_state = 2}, + [778] = {.lex_state = 38, .external_lex_state = 2}, + [779] = {.lex_state = 38, .external_lex_state = 2}, + [780] = {.lex_state = 38, .external_lex_state = 2}, + [781] = {.lex_state = 38, .external_lex_state = 2}, + [782] = {.lex_state = 38, .external_lex_state = 2}, + [783] = {.lex_state = 38, .external_lex_state = 2}, + [784] = {.lex_state = 38, .external_lex_state = 2}, + [785] = {.lex_state = 38, .external_lex_state = 3}, + [786] = {.lex_state = 38, .external_lex_state = 3}, + [787] = {.lex_state = 38, .external_lex_state = 2}, + [788] = {.lex_state = 38, .external_lex_state = 2}, + [789] = {.lex_state = 38, .external_lex_state = 2}, + [790] = {.lex_state = 38, .external_lex_state = 3}, + [791] = {.lex_state = 38, .external_lex_state = 3}, + [792] = {.lex_state = 38, .external_lex_state = 3}, + [793] = {.lex_state = 38, .external_lex_state = 3}, + [794] = {.lex_state = 38, .external_lex_state = 3}, + [795] = {.lex_state = 38, .external_lex_state = 3}, + [796] = {.lex_state = 38, .external_lex_state = 2}, + [797] = {.lex_state = 38, .external_lex_state = 3}, + [798] = {.lex_state = 38, .external_lex_state = 2}, + [799] = {.lex_state = 38, .external_lex_state = 3}, + [800] = {.lex_state = 38, .external_lex_state = 2}, + [801] = {.lex_state = 38, .external_lex_state = 2}, + [802] = {.lex_state = 38, .external_lex_state = 3}, + [803] = {.lex_state = 38, .external_lex_state = 2}, + [804] = {.lex_state = 38, .external_lex_state = 2}, + [805] = {.lex_state = 38, .external_lex_state = 2}, + [806] = {.lex_state = 38, .external_lex_state = 3}, + [807] = {.lex_state = 38, .external_lex_state = 2}, + [808] = {.lex_state = 38, .external_lex_state = 2}, + [809] = {.lex_state = 38, .external_lex_state = 2}, + [810] = {.lex_state = 38, .external_lex_state = 3}, + [811] = {.lex_state = 38, .external_lex_state = 2}, + [812] = {.lex_state = 38, .external_lex_state = 3}, + [813] = {.lex_state = 38, .external_lex_state = 7}, + [814] = {.lex_state = 38, .external_lex_state = 3}, + [815] = {.lex_state = 38, .external_lex_state = 3}, + [816] = {.lex_state = 38, .external_lex_state = 2}, + [817] = {.lex_state = 38, .external_lex_state = 3}, + [818] = {.lex_state = 38, .external_lex_state = 3}, + [819] = {.lex_state = 38, .external_lex_state = 2}, + [820] = {.lex_state = 38, .external_lex_state = 3}, + [821] = {.lex_state = 38, .external_lex_state = 8}, + [822] = {.lex_state = 38, .external_lex_state = 3}, + [823] = {.lex_state = 38, .external_lex_state = 2}, + [824] = {.lex_state = 38, .external_lex_state = 2}, + [825] = {.lex_state = 38, .external_lex_state = 3}, + [826] = {.lex_state = 38, .external_lex_state = 2}, + [827] = {.lex_state = 38, .external_lex_state = 3}, + [828] = {.lex_state = 38, .external_lex_state = 2}, + [829] = {.lex_state = 38, .external_lex_state = 2}, + [830] = {.lex_state = 38, .external_lex_state = 2}, + [831] = {.lex_state = 38, .external_lex_state = 7}, + [832] = {.lex_state = 38, .external_lex_state = 3}, + [833] = {.lex_state = 38, .external_lex_state = 3}, + [834] = {.lex_state = 38, .external_lex_state = 2}, + [835] = {.lex_state = 38, .external_lex_state = 3}, + [836] = {.lex_state = 38, .external_lex_state = 3}, + [837] = {.lex_state = 38, .external_lex_state = 2}, + [838] = {.lex_state = 38, .external_lex_state = 2}, + [839] = {.lex_state = 38, .external_lex_state = 2}, + [840] = {.lex_state = 38, .external_lex_state = 3}, + [841] = {.lex_state = 38, .external_lex_state = 8}, + [842] = {.lex_state = 38, .external_lex_state = 3}, + [843] = {.lex_state = 38, .external_lex_state = 2}, + [844] = {.lex_state = 38, .external_lex_state = 2}, + [845] = {.lex_state = 38, .external_lex_state = 2}, + [846] = {.lex_state = 38, .external_lex_state = 2}, + [847] = {.lex_state = 38, .external_lex_state = 3}, + [848] = {.lex_state = 38, .external_lex_state = 3}, + [849] = {.lex_state = 38, .external_lex_state = 3}, + [850] = {.lex_state = 38, .external_lex_state = 3}, + [851] = {.lex_state = 38, .external_lex_state = 3}, + [852] = {.lex_state = 38, .external_lex_state = 2}, + [853] = {.lex_state = 38, .external_lex_state = 2}, + [854] = {.lex_state = 38, .external_lex_state = 2}, + [855] = {.lex_state = 38, .external_lex_state = 2}, + [856] = {.lex_state = 17, .external_lex_state = 2}, + [857] = {.lex_state = 38, .external_lex_state = 7}, + [858] = {.lex_state = 18, .external_lex_state = 9}, + [859] = {.lex_state = 22, .external_lex_state = 11}, + [860] = {.lex_state = 22, .external_lex_state = 6}, + [861] = {.lex_state = 18, .external_lex_state = 4}, + [862] = {.lex_state = 18, .external_lex_state = 4}, + [863] = {.lex_state = 22, .external_lex_state = 6}, + [864] = {.lex_state = 22, .external_lex_state = 11}, + [865] = {.lex_state = 22, .external_lex_state = 6}, + [866] = {.lex_state = 22, .external_lex_state = 6}, + [867] = {.lex_state = 38, .external_lex_state = 2}, + [868] = {.lex_state = 38, .external_lex_state = 2}, + [869] = {.lex_state = 38, .external_lex_state = 2}, + [870] = {.lex_state = 22, .external_lex_state = 6}, + [871] = {.lex_state = 38, .external_lex_state = 2}, + [872] = {.lex_state = 38, .external_lex_state = 2}, + [873] = {.lex_state = 38, .external_lex_state = 2}, + [874] = {.lex_state = 22, .external_lex_state = 6}, + [875] = {.lex_state = 38, .external_lex_state = 2}, + [876] = {.lex_state = 18, .external_lex_state = 4}, + [877] = {.lex_state = 38, .external_lex_state = 2}, + [878] = {.lex_state = 22, .external_lex_state = 11}, + [879] = {.lex_state = 38, .external_lex_state = 2}, + [880] = {.lex_state = 38, .external_lex_state = 2}, + [881] = {.lex_state = 38, .external_lex_state = 2}, + [882] = {.lex_state = 38, .external_lex_state = 2}, + [883] = {.lex_state = 18, .external_lex_state = 9}, + [884] = {.lex_state = 22, .external_lex_state = 11}, + [885] = {.lex_state = 38, .external_lex_state = 2}, + [886] = {.lex_state = 38, .external_lex_state = 2}, + [887] = {.lex_state = 38, .external_lex_state = 2}, + [888] = {.lex_state = 38, .external_lex_state = 2}, + [889] = {.lex_state = 38, .external_lex_state = 2}, + [890] = {.lex_state = 22, .external_lex_state = 2}, + [891] = {.lex_state = 38, .external_lex_state = 2}, + [892] = {.lex_state = 22, .external_lex_state = 11}, + [893] = {.lex_state = 22, .external_lex_state = 11}, + [894] = {.lex_state = 38, .external_lex_state = 2}, + [895] = {.lex_state = 38, .external_lex_state = 2}, + [896] = {.lex_state = 38, .external_lex_state = 2}, + [897] = {.lex_state = 22, .external_lex_state = 11}, + [898] = {.lex_state = 18, .external_lex_state = 9}, + [899] = {.lex_state = 22, .external_lex_state = 11}, + [900] = {.lex_state = 38, .external_lex_state = 2}, + [901] = {.lex_state = 22, .external_lex_state = 11}, + [902] = {.lex_state = 22, .external_lex_state = 11}, + [903] = {.lex_state = 22, .external_lex_state = 11}, + [904] = {.lex_state = 22, .external_lex_state = 11}, + [905] = {.lex_state = 22, .external_lex_state = 11}, + [906] = {.lex_state = 38, .external_lex_state = 2}, + [907] = {.lex_state = 22, .external_lex_state = 11}, + [908] = {.lex_state = 38, .external_lex_state = 2}, + [909] = {.lex_state = 38, .external_lex_state = 2}, + [910] = {.lex_state = 38, .external_lex_state = 2}, + [911] = {.lex_state = 38, .external_lex_state = 2}, + [912] = {.lex_state = 38, .external_lex_state = 2}, + [913] = {.lex_state = 38, .external_lex_state = 2}, + [914] = {.lex_state = 38, .external_lex_state = 2}, + [915] = {.lex_state = 38, .external_lex_state = 2}, + [916] = {.lex_state = 38, .external_lex_state = 2}, + [917] = {.lex_state = 38, .external_lex_state = 2}, + [918] = {.lex_state = 38, .external_lex_state = 2}, + [919] = {.lex_state = 38, .external_lex_state = 2}, + [920] = {.lex_state = 38, .external_lex_state = 2}, + [921] = {.lex_state = 38, .external_lex_state = 2}, + [922] = {.lex_state = 38, .external_lex_state = 2}, + [923] = {.lex_state = 38, .external_lex_state = 2}, + [924] = {.lex_state = 38, .external_lex_state = 2}, + [925] = {.lex_state = 38, .external_lex_state = 2}, + [926] = {.lex_state = 38, .external_lex_state = 2}, + [927] = {.lex_state = 38, .external_lex_state = 2}, + [928] = {.lex_state = 38, .external_lex_state = 2}, + [929] = {.lex_state = 38, .external_lex_state = 2}, + [930] = {.lex_state = 38, .external_lex_state = 2}, + [931] = {.lex_state = 38, .external_lex_state = 2}, + [932] = {.lex_state = 18, .external_lex_state = 12}, + [933] = {.lex_state = 18, .external_lex_state = 8}, + [934] = {.lex_state = 38, .external_lex_state = 2}, + [935] = {.lex_state = 22, .external_lex_state = 11}, + [936] = {.lex_state = 38, .external_lex_state = 2}, + [937] = {.lex_state = 22, .external_lex_state = 11}, + [938] = {.lex_state = 38, .external_lex_state = 2}, + [939] = {.lex_state = 38, .external_lex_state = 2}, + [940] = {.lex_state = 38, .external_lex_state = 2}, + [941] = {.lex_state = 18, .external_lex_state = 7}, + [942] = {.lex_state = 38, .external_lex_state = 2}, + [943] = {.lex_state = 22, .external_lex_state = 11}, + [944] = {.lex_state = 18, .external_lex_state = 9}, + [945] = {.lex_state = 22, .external_lex_state = 11}, + [946] = {.lex_state = 18, .external_lex_state = 7}, + [947] = {.lex_state = 22, .external_lex_state = 11}, + [948] = {.lex_state = 22, .external_lex_state = 11}, + [949] = {.lex_state = 38, .external_lex_state = 2}, + [950] = {.lex_state = 38, .external_lex_state = 2}, + [951] = {.lex_state = 18, .external_lex_state = 9}, + [952] = {.lex_state = 22, .external_lex_state = 11}, + [953] = {.lex_state = 38, .external_lex_state = 2}, + [954] = {.lex_state = 18, .external_lex_state = 9}, + [955] = {.lex_state = 38, .external_lex_state = 2}, + [956] = {.lex_state = 22, .external_lex_state = 2}, + [957] = {.lex_state = 22, .external_lex_state = 11}, + [958] = {.lex_state = 18, .external_lex_state = 9}, + [959] = {.lex_state = 22, .external_lex_state = 10}, + [960] = {.lex_state = 38, .external_lex_state = 2}, + [961] = {.lex_state = 22, .external_lex_state = 2}, + [962] = {.lex_state = 22, .external_lex_state = 11}, + [963] = {.lex_state = 22, .external_lex_state = 11}, + [964] = {.lex_state = 38, .external_lex_state = 2}, + [965] = {.lex_state = 38, .external_lex_state = 2}, + [966] = {.lex_state = 38, .external_lex_state = 2}, + [967] = {.lex_state = 38, .external_lex_state = 2}, + [968] = {.lex_state = 38, .external_lex_state = 2}, + [969] = {.lex_state = 38, .external_lex_state = 2}, + [970] = {.lex_state = 38, .external_lex_state = 2}, + [971] = {.lex_state = 38, .external_lex_state = 2}, + [972] = {.lex_state = 38, .external_lex_state = 2}, + [973] = {.lex_state = 38, .external_lex_state = 2}, + [974] = {.lex_state = 38, .external_lex_state = 2}, + [975] = {.lex_state = 18, .external_lex_state = 9}, + [976] = {.lex_state = 18, .external_lex_state = 7}, + [977] = {.lex_state = 18, .external_lex_state = 9}, + [978] = {.lex_state = 38, .external_lex_state = 2}, + [979] = {.lex_state = 18, .external_lex_state = 9}, + [980] = {.lex_state = 22, .external_lex_state = 11}, + [981] = {.lex_state = 18, .external_lex_state = 13}, + [982] = {.lex_state = 22, .external_lex_state = 11}, + [983] = {.lex_state = 38, .external_lex_state = 2}, + [984] = {.lex_state = 22, .external_lex_state = 11}, + [985] = {.lex_state = 38, .external_lex_state = 2}, + [986] = {.lex_state = 18, .external_lex_state = 8}, + [987] = {.lex_state = 38, .external_lex_state = 2}, + [988] = {.lex_state = 18, .external_lex_state = 9}, + [989] = {.lex_state = 22, .external_lex_state = 11}, + [990] = {.lex_state = 22, .external_lex_state = 11}, + [991] = {.lex_state = 22, .external_lex_state = 11}, + [992] = {.lex_state = 22, .external_lex_state = 11}, + [993] = {.lex_state = 22, .external_lex_state = 11}, + [994] = {.lex_state = 22, .external_lex_state = 11}, + [995] = {.lex_state = 38, .external_lex_state = 2}, + [996] = {.lex_state = 18, .external_lex_state = 9}, + [997] = {.lex_state = 38, .external_lex_state = 2}, + [998] = {.lex_state = 38, .external_lex_state = 2}, + [999] = {.lex_state = 38, .external_lex_state = 2}, + [1000] = {.lex_state = 38, .external_lex_state = 2}, + [1001] = {.lex_state = 38, .external_lex_state = 2}, + [1002] = {.lex_state = 38, .external_lex_state = 2}, + [1003] = {.lex_state = 38, .external_lex_state = 2}, + [1004] = {.lex_state = 38, .external_lex_state = 2}, + [1005] = {.lex_state = 38, .external_lex_state = 2}, + [1006] = {.lex_state = 38, .external_lex_state = 2}, + [1007] = {.lex_state = 38, .external_lex_state = 2}, + [1008] = {.lex_state = 38, .external_lex_state = 2}, + [1009] = {.lex_state = 38, .external_lex_state = 2}, + [1010] = {.lex_state = 18, .external_lex_state = 8}, + [1011] = {.lex_state = 38, .external_lex_state = 2}, + [1012] = {.lex_state = 38, .external_lex_state = 2}, + [1013] = {.lex_state = 38, .external_lex_state = 2}, + [1014] = {.lex_state = 38, .external_lex_state = 2}, + [1015] = {.lex_state = 38, .external_lex_state = 2}, + [1016] = {.lex_state = 38, .external_lex_state = 2}, + [1017] = {.lex_state = 38, .external_lex_state = 2}, + [1018] = {.lex_state = 38, .external_lex_state = 2}, + [1019] = {.lex_state = 38, .external_lex_state = 2}, + [1020] = {.lex_state = 18, .external_lex_state = 9}, + [1021] = {.lex_state = 38, .external_lex_state = 2}, + [1022] = {.lex_state = 38, .external_lex_state = 2}, + [1023] = {.lex_state = 38, .external_lex_state = 2}, + [1024] = {.lex_state = 38, .external_lex_state = 2}, + [1025] = {.lex_state = 38, .external_lex_state = 2}, + [1026] = {.lex_state = 38, .external_lex_state = 2}, + [1027] = {.lex_state = 22, .external_lex_state = 8}, + [1028] = {.lex_state = 18, .external_lex_state = 13}, + [1029] = {.lex_state = 22, .external_lex_state = 6}, + [1030] = {.lex_state = 22, .external_lex_state = 10}, + [1031] = {.lex_state = 22, .external_lex_state = 10}, + [1032] = {.lex_state = 22, .external_lex_state = 10}, + [1033] = {.lex_state = 22, .external_lex_state = 10}, + [1034] = {.lex_state = 18, .external_lex_state = 12}, + [1035] = {.lex_state = 18, .external_lex_state = 13}, + [1036] = {.lex_state = 18, .external_lex_state = 12}, + [1037] = {.lex_state = 18, .external_lex_state = 12}, + [1038] = {.lex_state = 18, .external_lex_state = 7}, + [1039] = {.lex_state = 18, .external_lex_state = 12}, + [1040] = {.lex_state = 18, .external_lex_state = 12}, + [1041] = {.lex_state = 18, .external_lex_state = 12}, + [1042] = {.lex_state = 22, .external_lex_state = 6}, + [1043] = {.lex_state = 18, .external_lex_state = 7}, + [1044] = {.lex_state = 18, .external_lex_state = 13}, + [1045] = {.lex_state = 18, .external_lex_state = 13}, + [1046] = {.lex_state = 18, .external_lex_state = 12}, + [1047] = {.lex_state = 22, .external_lex_state = 8}, + [1048] = {.lex_state = 18, .external_lex_state = 12}, + [1049] = {.lex_state = 18, .external_lex_state = 12}, + [1050] = {.lex_state = 18, .external_lex_state = 11}, + [1051] = {.lex_state = 18, .external_lex_state = 11}, + [1052] = {.lex_state = 18, .external_lex_state = 12}, + [1053] = {.lex_state = 18, .external_lex_state = 12}, + [1054] = {.lex_state = 18, .external_lex_state = 12}, + [1055] = {.lex_state = 18, .external_lex_state = 4}, + [1056] = {.lex_state = 18, .external_lex_state = 9}, + [1057] = {.lex_state = 22, .external_lex_state = 12}, + [1058] = {.lex_state = 18, .external_lex_state = 9}, + [1059] = {.lex_state = 18, .external_lex_state = 4}, + [1060] = {.lex_state = 18, .external_lex_state = 13}, + [1061] = {.lex_state = 18, .external_lex_state = 11}, + [1062] = {.lex_state = 18, .external_lex_state = 11}, + [1063] = {.lex_state = 18, .external_lex_state = 11}, + [1064] = {.lex_state = 18, .external_lex_state = 13}, + [1065] = {.lex_state = 22, .external_lex_state = 10}, + [1066] = {.lex_state = 22, .external_lex_state = 6}, + [1067] = {.lex_state = 18, .external_lex_state = 13}, + [1068] = {.lex_state = 18, .external_lex_state = 13}, + [1069] = {.lex_state = 18, .external_lex_state = 13}, + [1070] = {.lex_state = 18, .external_lex_state = 13}, + [1071] = {.lex_state = 18, .external_lex_state = 13}, + [1072] = {.lex_state = 18, .external_lex_state = 13}, + [1073] = {.lex_state = 18, .external_lex_state = 13}, + [1074] = {.lex_state = 18, .external_lex_state = 13}, + [1075] = {.lex_state = 18, .external_lex_state = 13}, + [1076] = {.lex_state = 22, .external_lex_state = 10}, + [1077] = {.lex_state = 18, .external_lex_state = 11}, + [1078] = {.lex_state = 22, .external_lex_state = 10}, + [1079] = {.lex_state = 22, .external_lex_state = 8}, + [1080] = {.lex_state = 22, .external_lex_state = 10}, + [1081] = {.lex_state = 22, .external_lex_state = 10}, + [1082] = {.lex_state = 22, .external_lex_state = 10}, + [1083] = {.lex_state = 22, .external_lex_state = 10}, + [1084] = {.lex_state = 22, .external_lex_state = 10}, + [1085] = {.lex_state = 22, .external_lex_state = 6}, + [1086] = {.lex_state = 18, .external_lex_state = 7}, + [1087] = {.lex_state = 18, .external_lex_state = 9}, + [1088] = {.lex_state = 22, .external_lex_state = 11}, + [1089] = {.lex_state = 22, .external_lex_state = 11}, + [1090] = {.lex_state = 18, .external_lex_state = 9}, + [1091] = {.lex_state = 18, .external_lex_state = 13}, + [1092] = {.lex_state = 18, .external_lex_state = 13}, + [1093] = {.lex_state = 18, .external_lex_state = 9}, + [1094] = {.lex_state = 22, .external_lex_state = 11}, + [1095] = {.lex_state = 18, .external_lex_state = 9}, + [1096] = {.lex_state = 22, .external_lex_state = 11}, + [1097] = {.lex_state = 18, .external_lex_state = 9}, + [1098] = {.lex_state = 22, .external_lex_state = 11}, + [1099] = {.lex_state = 22, .external_lex_state = 11}, + [1100] = {.lex_state = 22, .external_lex_state = 11}, + [1101] = {.lex_state = 22, .external_lex_state = 11}, + [1102] = {.lex_state = 18, .external_lex_state = 9}, + [1103] = {.lex_state = 22, .external_lex_state = 13}, + [1104] = {.lex_state = 18, .external_lex_state = 9}, + [1105] = {.lex_state = 22, .external_lex_state = 13}, + [1106] = {.lex_state = 22, .external_lex_state = 11}, + [1107] = {.lex_state = 18, .external_lex_state = 9}, + [1108] = {.lex_state = 22, .external_lex_state = 11}, + [1109] = {.lex_state = 22, .external_lex_state = 11}, + [1110] = {.lex_state = 18, .external_lex_state = 9}, + [1111] = {.lex_state = 22, .external_lex_state = 11}, + [1112] = {.lex_state = 22, .external_lex_state = 11}, + [1113] = {.lex_state = 22, .external_lex_state = 11}, + [1114] = {.lex_state = 22, .external_lex_state = 11}, + [1115] = {.lex_state = 22, .external_lex_state = 11}, + [1116] = {.lex_state = 22, .external_lex_state = 11}, + [1117] = {.lex_state = 22, .external_lex_state = 11}, + [1118] = {.lex_state = 18, .external_lex_state = 13}, + [1119] = {.lex_state = 18, .external_lex_state = 13}, + [1120] = {.lex_state = 18, .external_lex_state = 9}, + [1121] = {.lex_state = 22, .external_lex_state = 11}, + [1122] = {.lex_state = 18, .external_lex_state = 13}, + [1123] = {.lex_state = 18, .external_lex_state = 13}, + [1124] = {.lex_state = 18, .external_lex_state = 13}, + [1125] = {.lex_state = 22, .external_lex_state = 11}, + [1126] = {.lex_state = 18, .external_lex_state = 13}, + [1127] = {.lex_state = 18, .external_lex_state = 13}, + [1128] = {.lex_state = 18, .external_lex_state = 13}, + [1129] = {.lex_state = 22, .external_lex_state = 13}, + [1130] = {.lex_state = 18, .external_lex_state = 13}, + [1131] = {.lex_state = 18, .external_lex_state = 13}, + [1132] = {.lex_state = 22, .external_lex_state = 13}, + [1133] = {.lex_state = 22, .external_lex_state = 13}, + [1134] = {.lex_state = 22, .external_lex_state = 11}, + [1135] = {.lex_state = 22, .external_lex_state = 11}, + [1136] = {.lex_state = 18, .external_lex_state = 13}, + [1137] = {.lex_state = 22, .external_lex_state = 11}, + [1138] = {.lex_state = 22, .external_lex_state = 11}, + [1139] = {.lex_state = 22, .external_lex_state = 11}, + [1140] = {.lex_state = 18, .external_lex_state = 13}, + [1141] = {.lex_state = 22, .external_lex_state = 11}, + [1142] = {.lex_state = 18, .external_lex_state = 9}, + [1143] = {.lex_state = 22, .external_lex_state = 11}, + [1144] = {.lex_state = 22, .external_lex_state = 13}, + [1145] = {.lex_state = 18, .external_lex_state = 13}, + [1146] = {.lex_state = 18, .external_lex_state = 13}, + [1147] = {.lex_state = 22, .external_lex_state = 11}, + [1148] = {.lex_state = 22, .external_lex_state = 12}, + [1149] = {.lex_state = 22, .external_lex_state = 12}, + [1150] = {.lex_state = 22, .external_lex_state = 11}, + [1151] = {.lex_state = 22, .external_lex_state = 11}, + [1152] = {.lex_state = 18, .external_lex_state = 7}, + [1153] = {.lex_state = 22, .external_lex_state = 11}, + [1154] = {.lex_state = 18, .external_lex_state = 8}, + [1155] = {.lex_state = 18, .external_lex_state = 12}, + [1156] = {.lex_state = 18, .external_lex_state = 9}, + [1157] = {.lex_state = 18, .external_lex_state = 12}, + [1158] = {.lex_state = 18, .external_lex_state = 9}, + [1159] = {.lex_state = 18, .external_lex_state = 12}, + [1160] = {.lex_state = 22, .external_lex_state = 11}, + [1161] = {.lex_state = 18, .external_lex_state = 10}, + [1162] = {.lex_state = 18, .external_lex_state = 9}, + [1163] = {.lex_state = 18, .external_lex_state = 10}, + [1164] = {.lex_state = 22, .external_lex_state = 11}, + [1165] = {.lex_state = 22, .external_lex_state = 11}, + [1166] = {.lex_state = 22, .external_lex_state = 12}, + [1167] = {.lex_state = 22, .external_lex_state = 12}, + [1168] = {.lex_state = 22, .external_lex_state = 12}, + [1169] = {.lex_state = 18, .external_lex_state = 9}, + [1170] = {.lex_state = 22, .external_lex_state = 12}, + [1171] = {.lex_state = 18, .external_lex_state = 12}, + [1172] = {.lex_state = 22, .external_lex_state = 12}, + [1173] = {.lex_state = 22, .external_lex_state = 11}, + [1174] = {.lex_state = 22, .external_lex_state = 11}, + [1175] = {.lex_state = 22, .external_lex_state = 2}, + [1176] = {.lex_state = 22, .external_lex_state = 11}, + [1177] = {.lex_state = 22, .external_lex_state = 12}, + [1178] = {.lex_state = 18, .external_lex_state = 7}, + [1179] = {.lex_state = 22, .external_lex_state = 11}, + [1180] = {.lex_state = 22, .external_lex_state = 11}, + [1181] = {.lex_state = 22, .external_lex_state = 12}, + [1182] = {.lex_state = 22, .external_lex_state = 11}, + [1183] = {.lex_state = 22, .external_lex_state = 11}, + [1184] = {.lex_state = 22, .external_lex_state = 12}, + [1185] = {.lex_state = 22, .external_lex_state = 13}, + [1186] = {.lex_state = 22, .external_lex_state = 11}, + [1187] = {.lex_state = 18, .external_lex_state = 9}, + [1188] = {.lex_state = 18, .external_lex_state = 9}, + [1189] = {.lex_state = 18, .external_lex_state = 9}, + [1190] = {.lex_state = 18, .external_lex_state = 9}, + [1191] = {.lex_state = 18, .external_lex_state = 8}, + [1192] = {.lex_state = 22, .external_lex_state = 11}, + [1193] = {.lex_state = 22, .external_lex_state = 11}, + [1194] = {.lex_state = 22, .external_lex_state = 11}, + [1195] = {.lex_state = 22, .external_lex_state = 11}, + [1196] = {.lex_state = 22, .external_lex_state = 11}, + [1197] = {.lex_state = 18, .external_lex_state = 9}, + [1198] = {.lex_state = 22, .external_lex_state = 11}, + [1199] = {.lex_state = 18, .external_lex_state = 9}, + [1200] = {.lex_state = 18, .external_lex_state = 9}, + [1201] = {.lex_state = 22, .external_lex_state = 2}, + [1202] = {.lex_state = 22, .external_lex_state = 12}, + [1203] = {.lex_state = 22, .external_lex_state = 12}, + [1204] = {.lex_state = 22, .external_lex_state = 11}, + [1205] = {.lex_state = 22, .external_lex_state = 11}, + [1206] = {.lex_state = 22, .external_lex_state = 11}, + [1207] = {.lex_state = 22, .external_lex_state = 11}, + [1208] = {.lex_state = 22, .external_lex_state = 11}, + [1209] = {.lex_state = 18, .external_lex_state = 9}, + [1210] = {.lex_state = 18, .external_lex_state = 9}, + [1211] = {.lex_state = 22, .external_lex_state = 11}, + [1212] = {.lex_state = 22, .external_lex_state = 11}, + [1213] = {.lex_state = 22, .external_lex_state = 11}, + [1214] = {.lex_state = 22, .external_lex_state = 11}, + [1215] = {.lex_state = 22, .external_lex_state = 11}, + [1216] = {.lex_state = 22, .external_lex_state = 10}, + [1217] = {.lex_state = 18, .external_lex_state = 7}, + [1218] = {.lex_state = 22, .external_lex_state = 10}, + [1219] = {.lex_state = 18, .external_lex_state = 13}, + [1220] = {.lex_state = 18, .external_lex_state = 13}, + [1221] = {.lex_state = 18, .external_lex_state = 13}, + [1222] = {.lex_state = 18, .external_lex_state = 13}, + [1223] = {.lex_state = 18, .external_lex_state = 13}, + [1224] = {.lex_state = 18, .external_lex_state = 13}, + [1225] = {.lex_state = 18, .external_lex_state = 13}, + [1226] = {.lex_state = 18, .external_lex_state = 13}, + [1227] = {.lex_state = 18, .external_lex_state = 13}, + [1228] = {.lex_state = 18, .external_lex_state = 13}, + [1229] = {.lex_state = 18, .external_lex_state = 13}, + [1230] = {.lex_state = 22, .external_lex_state = 10}, + [1231] = {.lex_state = 18, .external_lex_state = 12}, + [1232] = {.lex_state = 22, .external_lex_state = 10}, + [1233] = {.lex_state = 18, .external_lex_state = 12}, + [1234] = {.lex_state = 22, .external_lex_state = 10}, + [1235] = {.lex_state = 18, .external_lex_state = 12}, + [1236] = {.lex_state = 18, .external_lex_state = 12}, + [1237] = {.lex_state = 18, .external_lex_state = 12}, + [1238] = {.lex_state = 18, .external_lex_state = 12}, + [1239] = {.lex_state = 22, .external_lex_state = 10}, + [1240] = {.lex_state = 22, .external_lex_state = 10}, + [1241] = {.lex_state = 22, .external_lex_state = 10}, + [1242] = {.lex_state = 18, .external_lex_state = 12}, + [1243] = {.lex_state = 18, .external_lex_state = 12}, + [1244] = {.lex_state = 18, .external_lex_state = 12}, + [1245] = {.lex_state = 18, .external_lex_state = 12}, + [1246] = {.lex_state = 18, .external_lex_state = 13}, + [1247] = {.lex_state = 18, .external_lex_state = 13}, + [1248] = {.lex_state = 18, .external_lex_state = 13}, + [1249] = {.lex_state = 18, .external_lex_state = 13}, + [1250] = {.lex_state = 18, .external_lex_state = 13}, + [1251] = {.lex_state = 18, .external_lex_state = 13}, + [1252] = {.lex_state = 18, .external_lex_state = 13}, + [1253] = {.lex_state = 18, .external_lex_state = 12}, + [1254] = {.lex_state = 18, .external_lex_state = 12}, + [1255] = {.lex_state = 22, .external_lex_state = 10}, + [1256] = {.lex_state = 22, .external_lex_state = 10}, + [1257] = {.lex_state = 18, .external_lex_state = 12}, + [1258] = {.lex_state = 18, .external_lex_state = 13}, + [1259] = {.lex_state = 18, .external_lex_state = 12}, + [1260] = {.lex_state = 22, .external_lex_state = 10}, + [1261] = {.lex_state = 18, .external_lex_state = 12}, + [1262] = {.lex_state = 18, .external_lex_state = 12}, + [1263] = {.lex_state = 18, .external_lex_state = 12}, + [1264] = {.lex_state = 18, .external_lex_state = 13}, + [1265] = {.lex_state = 18, .external_lex_state = 13}, + [1266] = {.lex_state = 22, .external_lex_state = 8}, + [1267] = {.lex_state = 18, .external_lex_state = 12}, + [1268] = {.lex_state = 22, .external_lex_state = 8}, + [1269] = {.lex_state = 18, .external_lex_state = 13}, + [1270] = {.lex_state = 18, .external_lex_state = 13}, + [1271] = {.lex_state = 18, .external_lex_state = 13}, + [1272] = {.lex_state = 18, .external_lex_state = 13}, + [1273] = {.lex_state = 18, .external_lex_state = 13}, + [1274] = {.lex_state = 18, .external_lex_state = 12}, + [1275] = {.lex_state = 18, .external_lex_state = 13}, + [1276] = {.lex_state = 18, .external_lex_state = 12}, + [1277] = {.lex_state = 18, .external_lex_state = 12}, + [1278] = {.lex_state = 18, .external_lex_state = 12}, + [1279] = {.lex_state = 18, .external_lex_state = 12}, + [1280] = {.lex_state = 18, .external_lex_state = 12}, + [1281] = {.lex_state = 22, .external_lex_state = 10}, + [1282] = {.lex_state = 22, .external_lex_state = 10}, + [1283] = {.lex_state = 22, .external_lex_state = 10}, + [1284] = {.lex_state = 22, .external_lex_state = 10}, + [1285] = {.lex_state = 18, .external_lex_state = 12}, + [1286] = {.lex_state = 18, .external_lex_state = 12}, + [1287] = {.lex_state = 18, .external_lex_state = 12}, + [1288] = {.lex_state = 18, .external_lex_state = 12}, + [1289] = {.lex_state = 22, .external_lex_state = 10}, + [1290] = {.lex_state = 22, .external_lex_state = 10}, + [1291] = {.lex_state = 18, .external_lex_state = 12}, + [1292] = {.lex_state = 18, .external_lex_state = 13}, + [1293] = {.lex_state = 18, .external_lex_state = 13}, + [1294] = {.lex_state = 18, .external_lex_state = 12}, + [1295] = {.lex_state = 18, .external_lex_state = 12}, + [1296] = {.lex_state = 18, .external_lex_state = 12}, + [1297] = {.lex_state = 18, .external_lex_state = 12}, + [1298] = {.lex_state = 18, .external_lex_state = 12}, + [1299] = {.lex_state = 18, .external_lex_state = 13}, + [1300] = {.lex_state = 18, .external_lex_state = 12}, + [1301] = {.lex_state = 18, .external_lex_state = 13}, + [1302] = {.lex_state = 18, .external_lex_state = 12}, + [1303] = {.lex_state = 22, .external_lex_state = 10}, + [1304] = {.lex_state = 22, .external_lex_state = 10}, + [1305] = {.lex_state = 22, .external_lex_state = 10}, + [1306] = {.lex_state = 18, .external_lex_state = 7}, + [1307] = {.lex_state = 22, .external_lex_state = 10}, + [1308] = {.lex_state = 22, .external_lex_state = 10}, + [1309] = {.lex_state = 22, .external_lex_state = 10}, + [1310] = {.lex_state = 22, .external_lex_state = 10}, + [1311] = {.lex_state = 18, .external_lex_state = 13}, + [1312] = {.lex_state = 22, .external_lex_state = 12}, + [1313] = {.lex_state = 22, .external_lex_state = 12}, + [1314] = {.lex_state = 22, .external_lex_state = 12}, + [1315] = {.lex_state = 22, .external_lex_state = 12}, + [1316] = {.lex_state = 22, .external_lex_state = 12}, + [1317] = {.lex_state = 22, .external_lex_state = 12}, + [1318] = {.lex_state = 22, .external_lex_state = 12}, + [1319] = {.lex_state = 22, .external_lex_state = 12}, + [1320] = {.lex_state = 17, .external_lex_state = 2}, + [1321] = {.lex_state = 22, .external_lex_state = 12}, + [1322] = {.lex_state = 22, .external_lex_state = 10}, + [1323] = {.lex_state = 22, .external_lex_state = 10}, + [1324] = {.lex_state = 18, .external_lex_state = 13}, + [1325] = {.lex_state = 18, .external_lex_state = 13}, + [1326] = {.lex_state = 22, .external_lex_state = 12}, + [1327] = {.lex_state = 22, .external_lex_state = 12}, + [1328] = {.lex_state = 18, .external_lex_state = 13}, + [1329] = {.lex_state = 18, .external_lex_state = 13}, + [1330] = {.lex_state = 18, .external_lex_state = 13}, + [1331] = {.lex_state = 18, .external_lex_state = 13}, + [1332] = {.lex_state = 18, .external_lex_state = 13}, + [1333] = {.lex_state = 22, .external_lex_state = 12}, + [1334] = {.lex_state = 18, .external_lex_state = 13}, + [1335] = {.lex_state = 18, .external_lex_state = 13}, + [1336] = {.lex_state = 18, .external_lex_state = 13}, + [1337] = {.lex_state = 18, .external_lex_state = 13}, + [1338] = {.lex_state = 18, .external_lex_state = 13}, + [1339] = {.lex_state = 17, .external_lex_state = 2}, + [1340] = {.lex_state = 22, .external_lex_state = 10}, + [1341] = {.lex_state = 17, .external_lex_state = 2}, + [1342] = {.lex_state = 18, .external_lex_state = 13}, + [1343] = {.lex_state = 18, .external_lex_state = 13}, + [1344] = {.lex_state = 18, .external_lex_state = 13}, + [1345] = {.lex_state = 17, .external_lex_state = 2}, + [1346] = {.lex_state = 18, .external_lex_state = 13}, + [1347] = {.lex_state = 18, .external_lex_state = 13}, + [1348] = {.lex_state = 22, .external_lex_state = 12}, + [1349] = {.lex_state = 18, .external_lex_state = 13}, + [1350] = {.lex_state = 18, .external_lex_state = 13}, + [1351] = {.lex_state = 18, .external_lex_state = 13}, + [1352] = {.lex_state = 18, .external_lex_state = 13}, + [1353] = {.lex_state = 22, .external_lex_state = 12}, + [1354] = {.lex_state = 18, .external_lex_state = 13}, + [1355] = {.lex_state = 18, .external_lex_state = 13}, + [1356] = {.lex_state = 17, .external_lex_state = 2}, + [1357] = {.lex_state = 17, .external_lex_state = 2}, + [1358] = {.lex_state = 22, .external_lex_state = 12}, + [1359] = {.lex_state = 22, .external_lex_state = 12}, + [1360] = {.lex_state = 18, .external_lex_state = 12}, + [1361] = {.lex_state = 22, .external_lex_state = 12}, + [1362] = {.lex_state = 18, .external_lex_state = 13}, + [1363] = {.lex_state = 18, .external_lex_state = 12}, + [1364] = {.lex_state = 18, .external_lex_state = 13}, + [1365] = {.lex_state = 18, .external_lex_state = 13}, + [1366] = {.lex_state = 22, .external_lex_state = 12}, + [1367] = {.lex_state = 22, .external_lex_state = 12}, + [1368] = {.lex_state = 22, .external_lex_state = 12}, + [1369] = {.lex_state = 22, .external_lex_state = 12}, + [1370] = {.lex_state = 18, .external_lex_state = 13}, + [1371] = {.lex_state = 22, .external_lex_state = 12}, + [1372] = {.lex_state = 22, .external_lex_state = 12}, + [1373] = {.lex_state = 22, .external_lex_state = 10}, + [1374] = {.lex_state = 22, .external_lex_state = 10}, + [1375] = {.lex_state = 22, .external_lex_state = 12}, + [1376] = {.lex_state = 22, .external_lex_state = 12}, + [1377] = {.lex_state = 18, .external_lex_state = 13}, + [1378] = {.lex_state = 22, .external_lex_state = 12}, + [1379] = {.lex_state = 22, .external_lex_state = 10}, + [1380] = {.lex_state = 18, .external_lex_state = 13}, + [1381] = {.lex_state = 22, .external_lex_state = 12}, + [1382] = {.lex_state = 17, .external_lex_state = 2}, + [1383] = {.lex_state = 22, .external_lex_state = 12}, + [1384] = {.lex_state = 18, .external_lex_state = 13}, + [1385] = {.lex_state = 22, .external_lex_state = 12}, + [1386] = {.lex_state = 18, .external_lex_state = 13}, + [1387] = {.lex_state = 22, .external_lex_state = 12}, + [1388] = {.lex_state = 22, .external_lex_state = 12}, + [1389] = {.lex_state = 18, .external_lex_state = 13}, + [1390] = {.lex_state = 18, .external_lex_state = 13}, + [1391] = {.lex_state = 18, .external_lex_state = 12}, + [1392] = {.lex_state = 17, .external_lex_state = 2}, + [1393] = {.lex_state = 17, .external_lex_state = 2}, + [1394] = {.lex_state = 38, .external_lex_state = 7}, + [1395] = {.lex_state = 38, .external_lex_state = 7}, + [1396] = {.lex_state = 38, .external_lex_state = 8}, + [1397] = {.lex_state = 38, .external_lex_state = 7}, + [1398] = {.lex_state = 38, .external_lex_state = 7}, + [1399] = {.lex_state = 38, .external_lex_state = 8}, + [1400] = {.lex_state = 38, .external_lex_state = 8}, + [1401] = {.lex_state = 38, .external_lex_state = 8}, + [1402] = {.lex_state = 38, .external_lex_state = 7}, + [1403] = {.lex_state = 38, .external_lex_state = 7}, + [1404] = {.lex_state = 38, .external_lex_state = 7}, + [1405] = {.lex_state = 38, .external_lex_state = 8}, + [1406] = {.lex_state = 38, .external_lex_state = 7}, + [1407] = {.lex_state = 38, .external_lex_state = 7}, + [1408] = {.lex_state = 38, .external_lex_state = 2}, + [1409] = {.lex_state = 38, .external_lex_state = 2}, + [1410] = {.lex_state = 38, .external_lex_state = 7}, + [1411] = {.lex_state = 38, .external_lex_state = 8}, + [1412] = {.lex_state = 38, .external_lex_state = 7}, + [1413] = {.lex_state = 38, .external_lex_state = 2}, + [1414] = {.lex_state = 38, .external_lex_state = 2}, + [1415] = {.lex_state = 38, .external_lex_state = 2}, + [1416] = {.lex_state = 38, .external_lex_state = 2}, + [1417] = {.lex_state = 38, .external_lex_state = 2}, + [1418] = {.lex_state = 38, .external_lex_state = 2}, + [1419] = {.lex_state = 38, .external_lex_state = 2}, + [1420] = {.lex_state = 38, .external_lex_state = 2}, + [1421] = {.lex_state = 38, .external_lex_state = 2}, + [1422] = {.lex_state = 38, .external_lex_state = 2}, + [1423] = {.lex_state = 38, .external_lex_state = 2}, + [1424] = {.lex_state = 22, .external_lex_state = 11}, + [1425] = {.lex_state = 22, .external_lex_state = 11}, + [1426] = {.lex_state = 22, .external_lex_state = 11}, + [1427] = {.lex_state = 22, .external_lex_state = 11}, + [1428] = {.lex_state = 22, .external_lex_state = 11}, + [1429] = {.lex_state = 22, .external_lex_state = 11}, + [1430] = {.lex_state = 17, .external_lex_state = 11}, + [1431] = {.lex_state = 17, .external_lex_state = 11}, + [1432] = {.lex_state = 38, .external_lex_state = 9}, + [1433] = {.lex_state = 17, .external_lex_state = 11}, + [1434] = {.lex_state = 38, .external_lex_state = 9}, + [1435] = {.lex_state = 17, .external_lex_state = 11}, + [1436] = {.lex_state = 38, .external_lex_state = 12}, + [1437] = {.lex_state = 38, .external_lex_state = 6}, + [1438] = {.lex_state = 22, .external_lex_state = 13}, + [1439] = {.lex_state = 38, .external_lex_state = 6}, + [1440] = {.lex_state = 22, .external_lex_state = 13}, + [1441] = {.lex_state = 38, .external_lex_state = 13}, + [1442] = {.lex_state = 38, .external_lex_state = 12}, + [1443] = {.lex_state = 22, .external_lex_state = 13}, + [1444] = {.lex_state = 22, .external_lex_state = 13}, + [1445] = {.lex_state = 38, .external_lex_state = 13}, + [1446] = {.lex_state = 38, .external_lex_state = 6}, + [1447] = {.lex_state = 17, .external_lex_state = 10}, + [1448] = {.lex_state = 38, .external_lex_state = 6}, + [1449] = {.lex_state = 17, .external_lex_state = 10}, + [1450] = {.lex_state = 18, .external_lex_state = 12}, + [1451] = {.lex_state = 22, .external_lex_state = 10}, + [1452] = {.lex_state = 18, .external_lex_state = 10}, + [1453] = {.lex_state = 38, .external_lex_state = 13}, + [1454] = {.lex_state = 17, .external_lex_state = 10}, + [1455] = {.lex_state = 17, .external_lex_state = 10}, + [1456] = {.lex_state = 18, .external_lex_state = 10}, + [1457] = {.lex_state = 17, .external_lex_state = 12}, + [1458] = {.lex_state = 18, .external_lex_state = 13}, + [1459] = {.lex_state = 18, .external_lex_state = 12}, + [1460] = {.lex_state = 18, .external_lex_state = 12}, + [1461] = {.lex_state = 18, .external_lex_state = 13}, + [1462] = {.lex_state = 18, .external_lex_state = 13}, + [1463] = {.lex_state = 18, .external_lex_state = 12}, + [1464] = {.lex_state = 17, .external_lex_state = 12}, + [1465] = {.lex_state = 18, .external_lex_state = 12}, + [1466] = {.lex_state = 18, .external_lex_state = 10}, + [1467] = {.lex_state = 18, .external_lex_state = 12}, + [1468] = {.lex_state = 18, .external_lex_state = 10}, + [1469] = {.lex_state = 18, .external_lex_state = 13}, + [1470] = {.lex_state = 38, .external_lex_state = 13}, + [1471] = {.lex_state = 22, .external_lex_state = 10}, + [1472] = {.lex_state = 17, .external_lex_state = 10}, + [1473] = {.lex_state = 17, .external_lex_state = 10}, + [1474] = {.lex_state = 17, .external_lex_state = 10}, + [1475] = {.lex_state = 17, .external_lex_state = 10}, + [1476] = {.lex_state = 17, .external_lex_state = 10}, + [1477] = {.lex_state = 17, .external_lex_state = 10}, + [1478] = {.lex_state = 17, .external_lex_state = 10}, + [1479] = {.lex_state = 17, .external_lex_state = 10}, + [1480] = {.lex_state = 38, .external_lex_state = 6}, + [1481] = {.lex_state = 17, .external_lex_state = 10}, + [1482] = {.lex_state = 17, .external_lex_state = 10}, + [1483] = {.lex_state = 38, .external_lex_state = 6}, + [1484] = {.lex_state = 17, .external_lex_state = 10}, + [1485] = {.lex_state = 17, .external_lex_state = 10}, + [1486] = {.lex_state = 17, .external_lex_state = 10}, + [1487] = {.lex_state = 17, .external_lex_state = 10}, + [1488] = {.lex_state = 17, .external_lex_state = 10}, + [1489] = {.lex_state = 17, .external_lex_state = 10}, + [1490] = {.lex_state = 38, .external_lex_state = 13}, + [1491] = {.lex_state = 38, .external_lex_state = 13}, + [1492] = {.lex_state = 17, .external_lex_state = 10}, + [1493] = {.lex_state = 17, .external_lex_state = 10}, + [1494] = {.lex_state = 38, .external_lex_state = 2}, + [1495] = {.lex_state = 38, .external_lex_state = 13}, + [1496] = {.lex_state = 17, .external_lex_state = 10}, + [1497] = {.lex_state = 38, .external_lex_state = 10}, + [1498] = {.lex_state = 38, .external_lex_state = 10}, + [1499] = {.lex_state = 17, .external_lex_state = 11}, + [1500] = {.lex_state = 17, .external_lex_state = 11}, + [1501] = {.lex_state = 17, .external_lex_state = 11}, + [1502] = {.lex_state = 17, .external_lex_state = 11}, + [1503] = {.lex_state = 17, .external_lex_state = 11}, + [1504] = {.lex_state = 17, .external_lex_state = 11}, + [1505] = {.lex_state = 17, .external_lex_state = 11}, + [1506] = {.lex_state = 17, .external_lex_state = 11}, + [1507] = {.lex_state = 38, .external_lex_state = 13}, + [1508] = {.lex_state = 38, .external_lex_state = 13}, + [1509] = {.lex_state = 38, .external_lex_state = 13}, + [1510] = {.lex_state = 38, .external_lex_state = 13}, + [1511] = {.lex_state = 38, .external_lex_state = 12}, + [1512] = {.lex_state = 38, .external_lex_state = 13}, + [1513] = {.lex_state = 38, .external_lex_state = 12}, + [1514] = {.lex_state = 38, .external_lex_state = 13}, + [1515] = {.lex_state = 38, .external_lex_state = 12}, + [1516] = {.lex_state = 38, .external_lex_state = 13}, + [1517] = {.lex_state = 38, .external_lex_state = 12}, + [1518] = {.lex_state = 38, .external_lex_state = 13}, + [1519] = {.lex_state = 38, .external_lex_state = 13}, + [1520] = {.lex_state = 38, .external_lex_state = 13}, + [1521] = {.lex_state = 38, .external_lex_state = 13}, + [1522] = {.lex_state = 38, .external_lex_state = 13}, + [1523] = {.lex_state = 38, .external_lex_state = 12}, + [1524] = {.lex_state = 38, .external_lex_state = 12}, + [1525] = {.lex_state = 38, .external_lex_state = 13}, + [1526] = {.lex_state = 38, .external_lex_state = 12}, + [1527] = {.lex_state = 38, .external_lex_state = 12}, + [1528] = {.lex_state = 38, .external_lex_state = 13}, + [1529] = {.lex_state = 38, .external_lex_state = 13}, + [1530] = {.lex_state = 38, .external_lex_state = 13}, + [1531] = {.lex_state = 38, .external_lex_state = 13}, + [1532] = {.lex_state = 19, .external_lex_state = 14}, + [1533] = {.lex_state = 17, .external_lex_state = 11}, + [1534] = {.lex_state = 19, .external_lex_state = 14}, + [1535] = {.lex_state = 19, .external_lex_state = 14}, + [1536] = {.lex_state = 19, .external_lex_state = 14}, + [1537] = {.lex_state = 19, .external_lex_state = 14}, + [1538] = {.lex_state = 19, .external_lex_state = 14}, + [1539] = {.lex_state = 19, .external_lex_state = 14}, + [1540] = {.lex_state = 17, .external_lex_state = 11}, + [1541] = {.lex_state = 19, .external_lex_state = 14}, + [1542] = {.lex_state = 19, .external_lex_state = 14}, + [1543] = {.lex_state = 19, .external_lex_state = 14}, + [1544] = {.lex_state = 19, .external_lex_state = 14}, + [1545] = {.lex_state = 19, .external_lex_state = 14}, + [1546] = {.lex_state = 19, .external_lex_state = 14}, + [1547] = {.lex_state = 19, .external_lex_state = 14}, + [1548] = {.lex_state = 19, .external_lex_state = 14}, + [1549] = {.lex_state = 19, .external_lex_state = 14}, + [1550] = {.lex_state = 19, .external_lex_state = 14}, + [1551] = {.lex_state = 19, .external_lex_state = 14}, + [1552] = {.lex_state = 19, .external_lex_state = 14}, + [1553] = {.lex_state = 17, .external_lex_state = 11}, + [1554] = {.lex_state = 22, .external_lex_state = 10}, + [1555] = {.lex_state = 17, .external_lex_state = 11}, + [1556] = {.lex_state = 17, .external_lex_state = 11}, + [1557] = {.lex_state = 38, .external_lex_state = 9}, + [1558] = {.lex_state = 38, .external_lex_state = 9}, + [1559] = {.lex_state = 17, .external_lex_state = 11}, + [1560] = {.lex_state = 38, .external_lex_state = 9}, + [1561] = {.lex_state = 17, .external_lex_state = 11}, + [1562] = {.lex_state = 17, .external_lex_state = 11}, + [1563] = {.lex_state = 17, .external_lex_state = 11}, + [1564] = {.lex_state = 17, .external_lex_state = 11}, + [1565] = {.lex_state = 17, .external_lex_state = 11}, + [1566] = {.lex_state = 17, .external_lex_state = 11}, + [1567] = {.lex_state = 17, .external_lex_state = 11}, + [1568] = {.lex_state = 17, .external_lex_state = 11}, + [1569] = {.lex_state = 17, .external_lex_state = 11}, + [1570] = {.lex_state = 17, .external_lex_state = 11}, + [1571] = {.lex_state = 38, .external_lex_state = 9}, + [1572] = {.lex_state = 38, .external_lex_state = 9}, + [1573] = {.lex_state = 17, .external_lex_state = 11}, + [1574] = {.lex_state = 17, .external_lex_state = 11}, + [1575] = {.lex_state = 17, .external_lex_state = 11}, + [1576] = {.lex_state = 38, .external_lex_state = 9}, + [1577] = {.lex_state = 17, .external_lex_state = 11}, + [1578] = {.lex_state = 38, .external_lex_state = 9}, + [1579] = {.lex_state = 22, .external_lex_state = 10}, + [1580] = {.lex_state = 17, .external_lex_state = 11}, + [1581] = {.lex_state = 38, .external_lex_state = 9}, + [1582] = {.lex_state = 38, .external_lex_state = 9}, + [1583] = {.lex_state = 17, .external_lex_state = 11}, + [1584] = {.lex_state = 38, .external_lex_state = 9}, + [1585] = {.lex_state = 22, .external_lex_state = 10}, + [1586] = {.lex_state = 17, .external_lex_state = 10}, + [1587] = {.lex_state = 18, .external_lex_state = 11}, + [1588] = {.lex_state = 38, .external_lex_state = 12}, + [1589] = {.lex_state = 38, .external_lex_state = 9}, + [1590] = {.lex_state = 38, .external_lex_state = 12}, + [1591] = {.lex_state = 18, .external_lex_state = 11}, + [1592] = {.lex_state = 18, .external_lex_state = 11}, + [1593] = {.lex_state = 17, .external_lex_state = 12}, + [1594] = {.lex_state = 38, .external_lex_state = 12}, + [1595] = {.lex_state = 17, .external_lex_state = 10}, + [1596] = {.lex_state = 38, .external_lex_state = 11}, + [1597] = {.lex_state = 38, .external_lex_state = 9}, + [1598] = {.lex_state = 38, .external_lex_state = 11}, + [1599] = {.lex_state = 17, .external_lex_state = 10}, + [1600] = {.lex_state = 38, .external_lex_state = 13}, + [1601] = {.lex_state = 17, .external_lex_state = 10}, + [1602] = {.lex_state = 17, .external_lex_state = 10}, + [1603] = {.lex_state = 38, .external_lex_state = 12}, + [1604] = {.lex_state = 17, .external_lex_state = 12}, + [1605] = {.lex_state = 38, .external_lex_state = 11}, + [1606] = {.lex_state = 38, .external_lex_state = 13}, + [1607] = {.lex_state = 38, .external_lex_state = 13}, + [1608] = {.lex_state = 18, .external_lex_state = 13}, + [1609] = {.lex_state = 38, .external_lex_state = 12}, + [1610] = {.lex_state = 17, .external_lex_state = 12}, + [1611] = {.lex_state = 38, .external_lex_state = 12}, + [1612] = {.lex_state = 38, .external_lex_state = 13}, + [1613] = {.lex_state = 21, .external_lex_state = 10}, + [1614] = {.lex_state = 38, .external_lex_state = 11}, + [1615] = {.lex_state = 21, .external_lex_state = 10}, + [1616] = {.lex_state = 38, .external_lex_state = 10}, + [1617] = {.lex_state = 38, .external_lex_state = 12}, + [1618] = {.lex_state = 17, .external_lex_state = 12}, + [1619] = {.lex_state = 17, .external_lex_state = 10}, + [1620] = {.lex_state = 38, .external_lex_state = 13}, + [1621] = {.lex_state = 38, .external_lex_state = 12}, + [1622] = {.lex_state = 21, .external_lex_state = 10}, + [1623] = {.lex_state = 21, .external_lex_state = 10}, + [1624] = {.lex_state = 38, .external_lex_state = 6}, + [1625] = {.lex_state = 38, .external_lex_state = 13}, + [1626] = {.lex_state = 22, .external_lex_state = 10}, + [1627] = {.lex_state = 38, .external_lex_state = 9}, + [1628] = {.lex_state = 38, .external_lex_state = 9}, + [1629] = {.lex_state = 38, .external_lex_state = 13}, + [1630] = {.lex_state = 17, .external_lex_state = 12}, + [1631] = {.lex_state = 17, .external_lex_state = 12}, + [1632] = {.lex_state = 38, .external_lex_state = 12}, + [1633] = {.lex_state = 17, .external_lex_state = 10}, + [1634] = {.lex_state = 38, .external_lex_state = 9}, + [1635] = {.lex_state = 38, .external_lex_state = 10}, + [1636] = {.lex_state = 38, .external_lex_state = 9}, + [1637] = {.lex_state = 38, .external_lex_state = 9}, + [1638] = {.lex_state = 38, .external_lex_state = 12}, + [1639] = {.lex_state = 38, .external_lex_state = 13}, + [1640] = {.lex_state = 38, .external_lex_state = 12}, + [1641] = {.lex_state = 38, .external_lex_state = 13}, + [1642] = {.lex_state = 38, .external_lex_state = 12}, + [1643] = {.lex_state = 38, .external_lex_state = 13}, + [1644] = {.lex_state = 17, .external_lex_state = 12}, + [1645] = {.lex_state = 17, .external_lex_state = 10}, + [1646] = {.lex_state = 17, .external_lex_state = 12}, + [1647] = {.lex_state = 38, .external_lex_state = 13}, + [1648] = {.lex_state = 17, .external_lex_state = 2}, + [1649] = {.lex_state = 17, .external_lex_state = 10}, + [1650] = {.lex_state = 38, .external_lex_state = 9}, + [1651] = {.lex_state = 38, .external_lex_state = 13}, + [1652] = {.lex_state = 38, .external_lex_state = 12}, + [1653] = {.lex_state = 38, .external_lex_state = 12}, + [1654] = {.lex_state = 38, .external_lex_state = 11}, + [1655] = {.lex_state = 17, .external_lex_state = 10}, + [1656] = {.lex_state = 17, .external_lex_state = 10}, + [1657] = {.lex_state = 17, .external_lex_state = 12}, + [1658] = {.lex_state = 38, .external_lex_state = 13}, + [1659] = {.lex_state = 38, .external_lex_state = 11}, + [1660] = {.lex_state = 38, .external_lex_state = 11}, + [1661] = {.lex_state = 38, .external_lex_state = 11}, + [1662] = {.lex_state = 38, .external_lex_state = 11}, + [1663] = {.lex_state = 38, .external_lex_state = 11}, + [1664] = {.lex_state = 18, .external_lex_state = 13}, + [1665] = {.lex_state = 38, .external_lex_state = 9}, + [1666] = {.lex_state = 38, .external_lex_state = 11}, + [1667] = {.lex_state = 38, .external_lex_state = 9}, + [1668] = {.lex_state = 38, .external_lex_state = 11}, + [1669] = {.lex_state = 38, .external_lex_state = 11}, + [1670] = {.lex_state = 17, .external_lex_state = 12}, + [1671] = {.lex_state = 17, .external_lex_state = 12}, + [1672] = {.lex_state = 17, .external_lex_state = 12}, + [1673] = {.lex_state = 17, .external_lex_state = 12}, + [1674] = {.lex_state = 38, .external_lex_state = 12}, + [1675] = {.lex_state = 17, .external_lex_state = 12}, + [1676] = {.lex_state = 17, .external_lex_state = 12}, + [1677] = {.lex_state = 38, .external_lex_state = 11}, + [1678] = {.lex_state = 38, .external_lex_state = 8}, + [1679] = {.lex_state = 18, .external_lex_state = 10}, + [1680] = {.lex_state = 38, .external_lex_state = 11}, + [1681] = {.lex_state = 17, .external_lex_state = 10}, + [1682] = {.lex_state = 17, .external_lex_state = 12}, + [1683] = {.lex_state = 38, .external_lex_state = 9}, + [1684] = {.lex_state = 38, .external_lex_state = 9}, + [1685] = {.lex_state = 17, .external_lex_state = 12}, + [1686] = {.lex_state = 19, .external_lex_state = 14}, + [1687] = {.lex_state = 38, .external_lex_state = 13}, + [1688] = {.lex_state = 38, .external_lex_state = 13}, + [1689] = {.lex_state = 17, .external_lex_state = 12}, + [1690] = {.lex_state = 18, .external_lex_state = 12}, + [1691] = {.lex_state = 18, .external_lex_state = 13}, + [1692] = {.lex_state = 18, .external_lex_state = 12}, + [1693] = {.lex_state = 17, .external_lex_state = 12}, + [1694] = {.lex_state = 38, .external_lex_state = 9}, + [1695] = {.lex_state = 19, .external_lex_state = 14}, + [1696] = {.lex_state = 17, .external_lex_state = 10}, + [1697] = {.lex_state = 17, .external_lex_state = 12}, + [1698] = {.lex_state = 18, .external_lex_state = 12}, + [1699] = {.lex_state = 38, .external_lex_state = 13}, + [1700] = {.lex_state = 38, .external_lex_state = 13}, + [1701] = {.lex_state = 17, .external_lex_state = 10}, + [1702] = {.lex_state = 17, .external_lex_state = 10}, + [1703] = {.lex_state = 17, .external_lex_state = 10}, + [1704] = {.lex_state = 17, .external_lex_state = 10}, + [1705] = {.lex_state = 38, .external_lex_state = 13}, + [1706] = {.lex_state = 38, .external_lex_state = 7}, + [1707] = {.lex_state = 18, .external_lex_state = 13}, + [1708] = {.lex_state = 38, .external_lex_state = 11}, + [1709] = {.lex_state = 38, .external_lex_state = 13}, + [1710] = {.lex_state = 38, .external_lex_state = 12}, + [1711] = {.lex_state = 38, .external_lex_state = 13}, + [1712] = {.lex_state = 38, .external_lex_state = 13}, + [1713] = {.lex_state = 17, .external_lex_state = 10}, + [1714] = {.lex_state = 38, .external_lex_state = 11}, + [1715] = {.lex_state = 38, .external_lex_state = 13}, + [1716] = {.lex_state = 38, .external_lex_state = 11}, + [1717] = {.lex_state = 38, .external_lex_state = 13}, + [1718] = {.lex_state = 38, .external_lex_state = 13}, + [1719] = {.lex_state = 18, .external_lex_state = 11}, + [1720] = {.lex_state = 17, .external_lex_state = 10}, + [1721] = {.lex_state = 38, .external_lex_state = 13}, + [1722] = {.lex_state = 38, .external_lex_state = 11}, + [1723] = {.lex_state = 38, .external_lex_state = 13}, + [1724] = {.lex_state = 38, .external_lex_state = 13}, + [1725] = {.lex_state = 38, .external_lex_state = 10}, + [1726] = {.lex_state = 38, .external_lex_state = 13}, + [1727] = {.lex_state = 38, .external_lex_state = 12}, + [1728] = {.lex_state = 38, .external_lex_state = 11}, + [1729] = {.lex_state = 19, .external_lex_state = 14}, + [1730] = {.lex_state = 38, .external_lex_state = 12}, + [1731] = {.lex_state = 17, .external_lex_state = 10}, + [1732] = {.lex_state = 38, .external_lex_state = 9}, + [1733] = {.lex_state = 38, .external_lex_state = 12}, + [1734] = {.lex_state = 38, .external_lex_state = 13}, + [1735] = {.lex_state = 17, .external_lex_state = 10}, + [1736] = {.lex_state = 38, .external_lex_state = 11}, + [1737] = {.lex_state = 18, .external_lex_state = 9}, + [1738] = {.lex_state = 38, .external_lex_state = 13}, + [1739] = {.lex_state = 38, .external_lex_state = 13}, + [1740] = {.lex_state = 19, .external_lex_state = 14}, + [1741] = {.lex_state = 38, .external_lex_state = 12}, + [1742] = {.lex_state = 17, .external_lex_state = 10}, + [1743] = {.lex_state = 38, .external_lex_state = 11}, + [1744] = {.lex_state = 38, .external_lex_state = 13}, + [1745] = {.lex_state = 17, .external_lex_state = 11}, + [1746] = {.lex_state = 19, .external_lex_state = 14}, + [1747] = {.lex_state = 19, .external_lex_state = 14}, + [1748] = {.lex_state = 38, .external_lex_state = 11}, + [1749] = {.lex_state = 17, .external_lex_state = 11}, + [1750] = {.lex_state = 38, .external_lex_state = 13}, + [1751] = {.lex_state = 38, .external_lex_state = 13}, + [1752] = {.lex_state = 19, .external_lex_state = 14}, + [1753] = {.lex_state = 17, .external_lex_state = 10}, + [1754] = {.lex_state = 38, .external_lex_state = 12}, + [1755] = {.lex_state = 38, .external_lex_state = 12}, + [1756] = {.lex_state = 19, .external_lex_state = 14}, + [1757] = {.lex_state = 17, .external_lex_state = 10}, + [1758] = {.lex_state = 38, .external_lex_state = 13}, + [1759] = {.lex_state = 38, .external_lex_state = 12}, + [1760] = {.lex_state = 38, .external_lex_state = 11}, + [1761] = {.lex_state = 38, .external_lex_state = 11}, + [1762] = {.lex_state = 38, .external_lex_state = 13}, + [1763] = {.lex_state = 38, .external_lex_state = 12}, + [1764] = {.lex_state = 38, .external_lex_state = 9}, + [1765] = {.lex_state = 17, .external_lex_state = 11}, + [1766] = {.lex_state = 38, .external_lex_state = 13}, + [1767] = {.lex_state = 38, .external_lex_state = 13}, + [1768] = {.lex_state = 17, .external_lex_state = 10}, + [1769] = {.lex_state = 38, .external_lex_state = 11}, + [1770] = {.lex_state = 38, .external_lex_state = 13}, + [1771] = {.lex_state = 17, .external_lex_state = 10}, + [1772] = {.lex_state = 18, .external_lex_state = 12}, + [1773] = {.lex_state = 17, .external_lex_state = 10}, + [1774] = {.lex_state = 38, .external_lex_state = 13}, + [1775] = {.lex_state = 17, .external_lex_state = 10}, + [1776] = {.lex_state = 38, .external_lex_state = 13}, + [1777] = {.lex_state = 38, .external_lex_state = 11}, + [1778] = {.lex_state = 18, .external_lex_state = 13}, + [1779] = {.lex_state = 38, .external_lex_state = 11}, + [1780] = {.lex_state = 19, .external_lex_state = 14}, + [1781] = {.lex_state = 38, .external_lex_state = 11}, + [1782] = {.lex_state = 38, .external_lex_state = 12}, + [1783] = {.lex_state = 17, .external_lex_state = 11}, + [1784] = {.lex_state = 38, .external_lex_state = 12}, + [1785] = {.lex_state = 38, .external_lex_state = 13}, + [1786] = {.lex_state = 38, .external_lex_state = 12}, + [1787] = {.lex_state = 17, .external_lex_state = 10}, + [1788] = {.lex_state = 38, .external_lex_state = 11}, + [1789] = {.lex_state = 38, .external_lex_state = 12}, + [1790] = {.lex_state = 38, .external_lex_state = 11}, + [1791] = {.lex_state = 38, .external_lex_state = 10}, + [1792] = {.lex_state = 38, .external_lex_state = 12}, + [1793] = {.lex_state = 19, .external_lex_state = 14}, + [1794] = {.lex_state = 38, .external_lex_state = 13}, + [1795] = {.lex_state = 38, .external_lex_state = 12}, + [1796] = {.lex_state = 38, .external_lex_state = 13}, + [1797] = {.lex_state = 38, .external_lex_state = 12}, + [1798] = {.lex_state = 17, .external_lex_state = 10}, + [1799] = {.lex_state = 38, .external_lex_state = 13}, + [1800] = {.lex_state = 38, .external_lex_state = 13}, + [1801] = {.lex_state = 38, .external_lex_state = 12}, + [1802] = {.lex_state = 18, .external_lex_state = 9}, + [1803] = {.lex_state = 38, .external_lex_state = 9}, + [1804] = {.lex_state = 18, .external_lex_state = 9}, + [1805] = {.lex_state = 17, .external_lex_state = 10}, + [1806] = {.lex_state = 38, .external_lex_state = 13}, + [1807] = {.lex_state = 19, .external_lex_state = 14}, + [1808] = {.lex_state = 19, .external_lex_state = 14}, + [1809] = {.lex_state = 38, .external_lex_state = 11}, + [1810] = {.lex_state = 17, .external_lex_state = 10}, + [1811] = {.lex_state = 3, .external_lex_state = 11}, + [1812] = {.lex_state = 38, .external_lex_state = 11}, + [1813] = {.lex_state = 17, .external_lex_state = 10}, + [1814] = {.lex_state = 38, .external_lex_state = 11}, + [1815] = {.lex_state = 38, .external_lex_state = 10}, + [1816] = {.lex_state = 17, .external_lex_state = 10}, + [1817] = {.lex_state = 17, .external_lex_state = 10}, + [1818] = {.lex_state = 17, .external_lex_state = 10}, + [1819] = {.lex_state = 38, .external_lex_state = 11}, + [1820] = {.lex_state = 38, .external_lex_state = 12}, + [1821] = {.lex_state = 17, .external_lex_state = 10}, + [1822] = {.lex_state = 38, .external_lex_state = 9}, + [1823] = {.lex_state = 38, .external_lex_state = 11}, + [1824] = {.lex_state = 38, .external_lex_state = 11}, + [1825] = {.lex_state = 17, .external_lex_state = 11}, + [1826] = {.lex_state = 38, .external_lex_state = 10}, + [1827] = {.lex_state = 3, .external_lex_state = 11}, + [1828] = {.lex_state = 17, .external_lex_state = 10}, + [1829] = {.lex_state = 17, .external_lex_state = 10}, + [1830] = {.lex_state = 38, .external_lex_state = 11}, + [1831] = {.lex_state = 17, .external_lex_state = 11}, + [1832] = {.lex_state = 38, .external_lex_state = 9}, + [1833] = {.lex_state = 38, .external_lex_state = 13}, + [1834] = {.lex_state = 17, .external_lex_state = 11}, + [1835] = {.lex_state = 17, .external_lex_state = 10}, + [1836] = {.lex_state = 38, .external_lex_state = 9}, + [1837] = {.lex_state = 17, .external_lex_state = 10}, + [1838] = {.lex_state = 38, .external_lex_state = 12}, + [1839] = {.lex_state = 38, .external_lex_state = 13}, + [1840] = {.lex_state = 38, .external_lex_state = 13}, + [1841] = {.lex_state = 17, .external_lex_state = 10}, + [1842] = {.lex_state = 17, .external_lex_state = 11}, + [1843] = {.lex_state = 38, .external_lex_state = 12}, + [1844] = {.lex_state = 17, .external_lex_state = 10}, + [1845] = {.lex_state = 17, .external_lex_state = 10}, + [1846] = {.lex_state = 38, .external_lex_state = 10}, + [1847] = {.lex_state = 18, .external_lex_state = 9}, + [1848] = {.lex_state = 17, .external_lex_state = 10}, + [1849] = {.lex_state = 17, .external_lex_state = 10}, + [1850] = {.lex_state = 38, .external_lex_state = 9}, + [1851] = {.lex_state = 38, .external_lex_state = 13}, + [1852] = {.lex_state = 17, .external_lex_state = 10}, + [1853] = {.lex_state = 3, .external_lex_state = 11}, + [1854] = {.lex_state = 17, .external_lex_state = 10}, + [1855] = {.lex_state = 38, .external_lex_state = 11}, + [1856] = {.lex_state = 17, .external_lex_state = 10}, + [1857] = {.lex_state = 17, .external_lex_state = 10}, + [1858] = {.lex_state = 38, .external_lex_state = 12}, + [1859] = {.lex_state = 17, .external_lex_state = 11}, + [1860] = {.lex_state = 38, .external_lex_state = 12}, + [1861] = {.lex_state = 38, .external_lex_state = 13}, + [1862] = {.lex_state = 17, .external_lex_state = 10}, + [1863] = {.lex_state = 38, .external_lex_state = 11}, + [1864] = {.lex_state = 17, .external_lex_state = 11}, + [1865] = {.lex_state = 38, .external_lex_state = 9}, + [1866] = {.lex_state = 17, .external_lex_state = 11}, + [1867] = {.lex_state = 38, .external_lex_state = 13}, + [1868] = {.lex_state = 38, .external_lex_state = 11}, + [1869] = {.lex_state = 38, .external_lex_state = 11}, + [1870] = {.lex_state = 38, .external_lex_state = 11}, + [1871] = {.lex_state = 38, .external_lex_state = 13}, + [1872] = {.lex_state = 17, .external_lex_state = 10}, + [1873] = {.lex_state = 17, .external_lex_state = 10}, + [1874] = {.lex_state = 38, .external_lex_state = 12}, + [1875] = {.lex_state = 38, .external_lex_state = 10}, + [1876] = {.lex_state = 38, .external_lex_state = 10}, + [1877] = {.lex_state = 38, .external_lex_state = 9}, + [1878] = {.lex_state = 17, .external_lex_state = 10}, + [1879] = {.lex_state = 17, .external_lex_state = 10}, + [1880] = {.lex_state = 38, .external_lex_state = 10}, + [1881] = {.lex_state = 17, .external_lex_state = 10}, + [1882] = {.lex_state = 17, .external_lex_state = 10}, + [1883] = {.lex_state = 38, .external_lex_state = 12}, + [1884] = {.lex_state = 38, .external_lex_state = 11}, + [1885] = {.lex_state = 38, .external_lex_state = 11}, + [1886] = {.lex_state = 17, .external_lex_state = 10}, + [1887] = {.lex_state = 38, .external_lex_state = 11}, + [1888] = {.lex_state = 38, .external_lex_state = 11}, + [1889] = {.lex_state = 17, .external_lex_state = 10}, + [1890] = {.lex_state = 38, .external_lex_state = 10}, + [1891] = {.lex_state = 17, .external_lex_state = 10}, + [1892] = {.lex_state = 38, .external_lex_state = 11}, + [1893] = {.lex_state = 38, .external_lex_state = 11}, + [1894] = {.lex_state = 17, .external_lex_state = 10}, + [1895] = {.lex_state = 17, .external_lex_state = 10}, + [1896] = {.lex_state = 17, .external_lex_state = 10}, + [1897] = {.lex_state = 38, .external_lex_state = 10}, + [1898] = {.lex_state = 38, .external_lex_state = 11}, + [1899] = {.lex_state = 17, .external_lex_state = 10}, + [1900] = {.lex_state = 38, .external_lex_state = 9}, + [1901] = {.lex_state = 17, .external_lex_state = 10}, + [1902] = {.lex_state = 17, .external_lex_state = 10}, + [1903] = {.lex_state = 17, .external_lex_state = 10}, + [1904] = {.lex_state = 38, .external_lex_state = 10}, + [1905] = {.lex_state = 17, .external_lex_state = 10}, + [1906] = {.lex_state = 38, .external_lex_state = 11}, + [1907] = {.lex_state = 38, .external_lex_state = 11}, + [1908] = {.lex_state = 38, .external_lex_state = 9}, + [1909] = {.lex_state = 17, .external_lex_state = 13}, + [1910] = {.lex_state = 38, .external_lex_state = 12}, + [1911] = {.lex_state = 38, .external_lex_state = 12}, + [1912] = {.lex_state = 38, .external_lex_state = 10}, + [1913] = {.lex_state = 38, .external_lex_state = 13}, + [1914] = {.lex_state = 38, .external_lex_state = 13}, + [1915] = {.lex_state = 38, .external_lex_state = 13}, + [1916] = {.lex_state = 38, .external_lex_state = 13}, + [1917] = {.lex_state = 38, .external_lex_state = 12}, + [1918] = {.lex_state = 38, .external_lex_state = 13}, + [1919] = {.lex_state = 38, .external_lex_state = 13}, + [1920] = {.lex_state = 38, .external_lex_state = 13}, + [1921] = {.lex_state = 38, .external_lex_state = 9}, + [1922] = {.lex_state = 38, .external_lex_state = 13}, + [1923] = {.lex_state = 38, .external_lex_state = 11}, + [1924] = {.lex_state = 38, .external_lex_state = 11}, + [1925] = {.lex_state = 38, .external_lex_state = 11}, + [1926] = {.lex_state = 38, .external_lex_state = 12}, + [1927] = {.lex_state = 38, .external_lex_state = 12}, + [1928] = {.lex_state = 18, .external_lex_state = 10}, + [1929] = {.lex_state = 38, .external_lex_state = 13}, + [1930] = {.lex_state = 38, .external_lex_state = 12}, + [1931] = {.lex_state = 38, .external_lex_state = 9}, + [1932] = {.lex_state = 38, .external_lex_state = 9}, + [1933] = {.lex_state = 38, .external_lex_state = 13}, + [1934] = {.lex_state = 38, .external_lex_state = 12}, + [1935] = {.lex_state = 38, .external_lex_state = 13}, + [1936] = {.lex_state = 38, .external_lex_state = 9}, + [1937] = {.lex_state = 17, .external_lex_state = 10}, + [1938] = {.lex_state = 38, .external_lex_state = 10}, + [1939] = {.lex_state = 38, .external_lex_state = 13}, + [1940] = {.lex_state = 38, .external_lex_state = 12}, + [1941] = {.lex_state = 38, .external_lex_state = 13}, + [1942] = {.lex_state = 38, .external_lex_state = 12}, + [1943] = {.lex_state = 38, .external_lex_state = 9}, + [1944] = {.lex_state = 17, .external_lex_state = 10}, + [1945] = {.lex_state = 17, .external_lex_state = 11}, + [1946] = {.lex_state = 38, .external_lex_state = 12}, + [1947] = {.lex_state = 38, .external_lex_state = 12}, + [1948] = {.lex_state = 38, .external_lex_state = 10}, + [1949] = {.lex_state = 38, .external_lex_state = 13}, + [1950] = {.lex_state = 38, .external_lex_state = 9}, + [1951] = {.lex_state = 38, .external_lex_state = 13}, + [1952] = {.lex_state = 38, .external_lex_state = 13}, + [1953] = {.lex_state = 38, .external_lex_state = 12}, + [1954] = {.lex_state = 38, .external_lex_state = 13}, + [1955] = {.lex_state = 38, .external_lex_state = 9}, + [1956] = {.lex_state = 17, .external_lex_state = 11}, + [1957] = {.lex_state = 17, .external_lex_state = 10}, + [1958] = {.lex_state = 38, .external_lex_state = 9}, + [1959] = {.lex_state = 38, .external_lex_state = 9}, + [1960] = {.lex_state = 38, .external_lex_state = 9}, + [1961] = {.lex_state = 18, .external_lex_state = 10}, + [1962] = {.lex_state = 38, .external_lex_state = 12}, + [1963] = {.lex_state = 38, .external_lex_state = 9}, + [1964] = {.lex_state = 38, .external_lex_state = 9}, + [1965] = {.lex_state = 38, .external_lex_state = 9}, + [1966] = {.lex_state = 38, .external_lex_state = 13}, + [1967] = {.lex_state = 38, .external_lex_state = 10}, + [1968] = {.lex_state = 38, .external_lex_state = 13}, + [1969] = {.lex_state = 38, .external_lex_state = 10}, + [1970] = {.lex_state = 38, .external_lex_state = 13}, + [1971] = {.lex_state = 38, .external_lex_state = 13}, + [1972] = {.lex_state = 38, .external_lex_state = 9}, + [1973] = {.lex_state = 38, .external_lex_state = 9}, + [1974] = {.lex_state = 17, .external_lex_state = 10}, + [1975] = {.lex_state = 38, .external_lex_state = 13}, + [1976] = {.lex_state = 38, .external_lex_state = 12}, + [1977] = {.lex_state = 38, .external_lex_state = 9}, + [1978] = {.lex_state = 38, .external_lex_state = 9}, + [1979] = {.lex_state = 38, .external_lex_state = 12}, + [1980] = {.lex_state = 38, .external_lex_state = 10}, + [1981] = {.lex_state = 38, .external_lex_state = 13}, + [1982] = {.lex_state = 38, .external_lex_state = 13}, + [1983] = {.lex_state = 38, .external_lex_state = 9}, + [1984] = {.lex_state = 17, .external_lex_state = 10}, + [1985] = {.lex_state = 38, .external_lex_state = 9}, + [1986] = {.lex_state = 38, .external_lex_state = 10}, + [1987] = {.lex_state = 38, .external_lex_state = 12}, + [1988] = {.lex_state = 38, .external_lex_state = 10}, + [1989] = {.lex_state = 38, .external_lex_state = 9}, + [1990] = {.lex_state = 38, .external_lex_state = 11}, + [1991] = {.lex_state = 38, .external_lex_state = 11}, + [1992] = {.lex_state = 38, .external_lex_state = 13}, + [1993] = {.lex_state = 38, .external_lex_state = 11}, + [1994] = {.lex_state = 38, .external_lex_state = 10}, + [1995] = {.lex_state = 38, .external_lex_state = 10}, + [1996] = {.lex_state = 38, .external_lex_state = 9}, + [1997] = {.lex_state = 38, .external_lex_state = 11}, + [1998] = {.lex_state = 38, .external_lex_state = 13}, + [1999] = {.lex_state = 17, .external_lex_state = 10}, + [2000] = {.lex_state = 17, .external_lex_state = 10}, + [2001] = {.lex_state = 38, .external_lex_state = 12}, + [2002] = {.lex_state = 21, .external_lex_state = 10}, + [2003] = {.lex_state = 38, .external_lex_state = 13}, + [2004] = {.lex_state = 38, .external_lex_state = 11}, + [2005] = {.lex_state = 17, .external_lex_state = 10}, + [2006] = {.lex_state = 38, .external_lex_state = 12}, + [2007] = {.lex_state = 17, .external_lex_state = 10}, + [2008] = {.lex_state = 38, .external_lex_state = 13}, + [2009] = {.lex_state = 38, .external_lex_state = 9}, + [2010] = {.lex_state = 38, .external_lex_state = 13}, + [2011] = {.lex_state = 38, .external_lex_state = 11}, + [2012] = {.lex_state = 17, .external_lex_state = 10}, + [2013] = {.lex_state = 3, .external_lex_state = 11}, + [2014] = {.lex_state = 38, .external_lex_state = 9}, + [2015] = {.lex_state = 38, .external_lex_state = 10}, + [2016] = {.lex_state = 38, .external_lex_state = 10}, + [2017] = {.lex_state = 3, .external_lex_state = 11}, + [2018] = {.lex_state = 3, .external_lex_state = 11}, + [2019] = {.lex_state = 38, .external_lex_state = 10}, + [2020] = {.lex_state = 38, .external_lex_state = 13}, + [2021] = {.lex_state = 3, .external_lex_state = 11}, + [2022] = {.lex_state = 38, .external_lex_state = 13}, + [2023] = {.lex_state = 38, .external_lex_state = 13}, + [2024] = {.lex_state = 38, .external_lex_state = 9}, + [2025] = {.lex_state = 38, .external_lex_state = 12}, + [2026] = {.lex_state = 38, .external_lex_state = 12}, + [2027] = {.lex_state = 38, .external_lex_state = 10}, + [2028] = {.lex_state = 3, .external_lex_state = 11}, + [2029] = {.lex_state = 3, .external_lex_state = 11}, + [2030] = {.lex_state = 3, .external_lex_state = 11}, + [2031] = {.lex_state = 21, .external_lex_state = 10}, + [2032] = {.lex_state = 38, .external_lex_state = 13}, + [2033] = {.lex_state = 38, .external_lex_state = 10}, + [2034] = {.lex_state = 17, .external_lex_state = 11}, + [2035] = {.lex_state = 38, .external_lex_state = 9}, + [2036] = {.lex_state = 38, .external_lex_state = 12}, + [2037] = {.lex_state = 38, .external_lex_state = 12}, + [2038] = {.lex_state = 38, .external_lex_state = 10}, + [2039] = {.lex_state = 38, .external_lex_state = 9}, + [2040] = {.lex_state = 38, .external_lex_state = 13}, + [2041] = {.lex_state = 38, .external_lex_state = 13}, + [2042] = {.lex_state = 17, .external_lex_state = 10}, + [2043] = {.lex_state = 17, .external_lex_state = 11}, + [2044] = {.lex_state = 38, .external_lex_state = 10}, + [2045] = {.lex_state = 38, .external_lex_state = 13}, + [2046] = {.lex_state = 38, .external_lex_state = 13}, + [2047] = {.lex_state = 38, .external_lex_state = 13}, + [2048] = {.lex_state = 38, .external_lex_state = 12}, + [2049] = {.lex_state = 38, .external_lex_state = 12}, + [2050] = {.lex_state = 38, .external_lex_state = 12}, + [2051] = {.lex_state = 3, .external_lex_state = 11}, + [2052] = {.lex_state = 17, .external_lex_state = 11}, + [2053] = {.lex_state = 38, .external_lex_state = 13}, + [2054] = {.lex_state = 38, .external_lex_state = 13}, + [2055] = {.lex_state = 38, .external_lex_state = 13}, + [2056] = {.lex_state = 38, .external_lex_state = 11}, + [2057] = {.lex_state = 38, .external_lex_state = 13}, + [2058] = {.lex_state = 17, .external_lex_state = 11}, + [2059] = {.lex_state = 38, .external_lex_state = 12}, + [2060] = {.lex_state = 38, .external_lex_state = 13}, + [2061] = {.lex_state = 38, .external_lex_state = 13}, + [2062] = {.lex_state = 17, .external_lex_state = 10}, + [2063] = {.lex_state = 38, .external_lex_state = 13}, + [2064] = {.lex_state = 38, .external_lex_state = 12}, + [2065] = {.lex_state = 38, .external_lex_state = 13}, + [2066] = {.lex_state = 38, .external_lex_state = 10}, + [2067] = {.lex_state = 38, .external_lex_state = 13}, + [2068] = {.lex_state = 38, .external_lex_state = 13}, + [2069] = {.lex_state = 38, .external_lex_state = 9}, + [2070] = {.lex_state = 38, .external_lex_state = 12}, + [2071] = {.lex_state = 38, .external_lex_state = 12}, + [2072] = {.lex_state = 38, .external_lex_state = 13}, + [2073] = {.lex_state = 3, .external_lex_state = 11}, + [2074] = {.lex_state = 38, .external_lex_state = 13}, + [2075] = {.lex_state = 38, .external_lex_state = 13}, + [2076] = {.lex_state = 38, .external_lex_state = 11}, + [2077] = {.lex_state = 38, .external_lex_state = 9}, + [2078] = {.lex_state = 38, .external_lex_state = 13}, + [2079] = {.lex_state = 38, .external_lex_state = 11}, + [2080] = {.lex_state = 38, .external_lex_state = 12}, + [2081] = {.lex_state = 17, .external_lex_state = 10}, + [2082] = {.lex_state = 21, .external_lex_state = 10}, + [2083] = {.lex_state = 38, .external_lex_state = 11}, + [2084] = {.lex_state = 38, .external_lex_state = 10}, + [2085] = {.lex_state = 38, .external_lex_state = 13}, + [2086] = {.lex_state = 38, .external_lex_state = 13}, + [2087] = {.lex_state = 38, .external_lex_state = 13}, + [2088] = {.lex_state = 38, .external_lex_state = 9}, + [2089] = {.lex_state = 38, .external_lex_state = 11}, + [2090] = {.lex_state = 38, .external_lex_state = 9}, + [2091] = {.lex_state = 17, .external_lex_state = 10}, + [2092] = {.lex_state = 38, .external_lex_state = 11}, + [2093] = {.lex_state = 38, .external_lex_state = 13}, + [2094] = {.lex_state = 38, .external_lex_state = 13}, + [2095] = {.lex_state = 38, .external_lex_state = 13}, + [2096] = {.lex_state = 38, .external_lex_state = 12}, + [2097] = {.lex_state = 38, .external_lex_state = 12}, + [2098] = {.lex_state = 38, .external_lex_state = 11}, + [2099] = {.lex_state = 38, .external_lex_state = 9}, + [2100] = {.lex_state = 38, .external_lex_state = 13}, + [2101] = {.lex_state = 17, .external_lex_state = 10}, + [2102] = {.lex_state = 38, .external_lex_state = 13}, + [2103] = {.lex_state = 21, .external_lex_state = 10}, + [2104] = {.lex_state = 38, .external_lex_state = 13}, + [2105] = {.lex_state = 38, .external_lex_state = 13}, + [2106] = {.lex_state = 17, .external_lex_state = 13}, + [2107] = {.lex_state = 38, .external_lex_state = 13}, + [2108] = {.lex_state = 38, .external_lex_state = 12}, + [2109] = {.lex_state = 17, .external_lex_state = 10}, + [2110] = {.lex_state = 38, .external_lex_state = 13}, + [2111] = {.lex_state = 38, .external_lex_state = 10}, + [2112] = {.lex_state = 38, .external_lex_state = 12}, + [2113] = {.lex_state = 38, .external_lex_state = 13}, + [2114] = {.lex_state = 38, .external_lex_state = 12}, + [2115] = {.lex_state = 38, .external_lex_state = 13}, + [2116] = {.lex_state = 38, .external_lex_state = 13}, + [2117] = {.lex_state = 38, .external_lex_state = 12}, + [2118] = {.lex_state = 38, .external_lex_state = 12}, + [2119] = {.lex_state = 38, .external_lex_state = 13}, + [2120] = {.lex_state = 17, .external_lex_state = 10}, + [2121] = {.lex_state = 38, .external_lex_state = 13}, + [2122] = {.lex_state = 38, .external_lex_state = 12}, + [2123] = {.lex_state = 38, .external_lex_state = 13}, + [2124] = {.lex_state = 38, .external_lex_state = 9}, + [2125] = {.lex_state = 38, .external_lex_state = 13}, + [2126] = {.lex_state = 38, .external_lex_state = 11}, + [2127] = {.lex_state = 38, .external_lex_state = 10}, + [2128] = {.lex_state = 38, .external_lex_state = 12}, + [2129] = {.lex_state = 38, .external_lex_state = 13}, + [2130] = {.lex_state = 38, .external_lex_state = 11}, + [2131] = {.lex_state = 38, .external_lex_state = 9}, + [2132] = {.lex_state = 38, .external_lex_state = 9}, + [2133] = {.lex_state = 17, .external_lex_state = 10}, + [2134] = {.lex_state = 38, .external_lex_state = 11}, + [2135] = {.lex_state = 38, .external_lex_state = 11}, + [2136] = {.lex_state = 38, .external_lex_state = 13}, + [2137] = {.lex_state = 38, .external_lex_state = 13}, + [2138] = {.lex_state = 38, .external_lex_state = 13}, + [2139] = {.lex_state = 38, .external_lex_state = 9}, + [2140] = {.lex_state = 38, .external_lex_state = 11}, + [2141] = {.lex_state = 38, .external_lex_state = 13}, + [2142] = {.lex_state = 38, .external_lex_state = 12}, + [2143] = {.lex_state = 38, .external_lex_state = 11}, + [2144] = {.lex_state = 38, .external_lex_state = 12}, + [2145] = {.lex_state = 38, .external_lex_state = 13}, + [2146] = {.lex_state = 17, .external_lex_state = 10}, + [2147] = {.lex_state = 38, .external_lex_state = 13}, + [2148] = {.lex_state = 17, .external_lex_state = 10}, + [2149] = {.lex_state = 38, .external_lex_state = 12}, + [2150] = {.lex_state = 38, .external_lex_state = 13}, + [2151] = {.lex_state = 38, .external_lex_state = 13}, + [2152] = {.lex_state = 38, .external_lex_state = 13}, + [2153] = {.lex_state = 38, .external_lex_state = 11}, + [2154] = {.lex_state = 17, .external_lex_state = 10}, + [2155] = {.lex_state = 38, .external_lex_state = 13}, + [2156] = {.lex_state = 38, .external_lex_state = 13}, + [2157] = {.lex_state = 38, .external_lex_state = 9}, + [2158] = {.lex_state = 38, .external_lex_state = 11}, + [2159] = {.lex_state = 17, .external_lex_state = 10}, + [2160] = {.lex_state = 38, .external_lex_state = 9}, + [2161] = {.lex_state = 38, .external_lex_state = 11}, + [2162] = {.lex_state = 38, .external_lex_state = 9}, + [2163] = {.lex_state = 38, .external_lex_state = 12}, + [2164] = {.lex_state = 38, .external_lex_state = 13}, + [2165] = {.lex_state = 38, .external_lex_state = 13}, + [2166] = {.lex_state = 38, .external_lex_state = 12}, + [2167] = {.lex_state = 38, .external_lex_state = 9}, + [2168] = {.lex_state = 17, .external_lex_state = 10}, + [2169] = {.lex_state = 17, .external_lex_state = 10}, + [2170] = {.lex_state = 17, .external_lex_state = 10}, + [2171] = {.lex_state = 17, .external_lex_state = 10}, + [2172] = {.lex_state = 38, .external_lex_state = 12}, + [2173] = {.lex_state = 38, .external_lex_state = 11}, + [2174] = {.lex_state = 38, .external_lex_state = 12}, + [2175] = {.lex_state = 38, .external_lex_state = 13}, + [2176] = {.lex_state = 38, .external_lex_state = 13}, + [2177] = {.lex_state = 17, .external_lex_state = 10}, + [2178] = {.lex_state = 38, .external_lex_state = 9}, + [2179] = {.lex_state = 38, .external_lex_state = 13}, + [2180] = {.lex_state = 21, .external_lex_state = 10}, + [2181] = {.lex_state = 38, .external_lex_state = 13}, + [2182] = {.lex_state = 38, .external_lex_state = 12}, + [2183] = {.lex_state = 38, .external_lex_state = 13}, + [2184] = {.lex_state = 38, .external_lex_state = 13}, + [2185] = {.lex_state = 38, .external_lex_state = 11}, + [2186] = {.lex_state = 38, .external_lex_state = 11}, + [2187] = {.lex_state = 38, .external_lex_state = 12}, + [2188] = {.lex_state = 38, .external_lex_state = 9}, + [2189] = {.lex_state = 38, .external_lex_state = 11}, + [2190] = {.lex_state = 38, .external_lex_state = 9}, + [2191] = {.lex_state = 38, .external_lex_state = 12}, + [2192] = {.lex_state = 38, .external_lex_state = 13}, + [2193] = {.lex_state = 38, .external_lex_state = 13}, + [2194] = {.lex_state = 38, .external_lex_state = 13}, + [2195] = {.lex_state = 38, .external_lex_state = 9}, + [2196] = {.lex_state = 38, .external_lex_state = 12}, + [2197] = {.lex_state = 38, .external_lex_state = 13}, + [2198] = {.lex_state = 38, .external_lex_state = 13}, + [2199] = {.lex_state = 38, .external_lex_state = 13}, + [2200] = {.lex_state = 38, .external_lex_state = 13}, + [2201] = {.lex_state = 38, .external_lex_state = 13}, + [2202] = {.lex_state = 38, .external_lex_state = 12}, + [2203] = {.lex_state = 38, .external_lex_state = 13}, + [2204] = {.lex_state = 38, .external_lex_state = 11}, + [2205] = {.lex_state = 38, .external_lex_state = 12}, + [2206] = {.lex_state = 38, .external_lex_state = 12}, + [2207] = {.lex_state = 38, .external_lex_state = 11}, + [2208] = {.lex_state = 38, .external_lex_state = 13}, + [2209] = {.lex_state = 17, .external_lex_state = 10}, + [2210] = {.lex_state = 38, .external_lex_state = 13}, + [2211] = {.lex_state = 38, .external_lex_state = 13}, + [2212] = {.lex_state = 38, .external_lex_state = 13}, + [2213] = {.lex_state = 38, .external_lex_state = 9}, + [2214] = {.lex_state = 38, .external_lex_state = 13}, + [2215] = {.lex_state = 38, .external_lex_state = 13}, + [2216] = {.lex_state = 38, .external_lex_state = 12}, + [2217] = {.lex_state = 38, .external_lex_state = 9}, + [2218] = {.lex_state = 38, .external_lex_state = 9}, + [2219] = {.lex_state = 38, .external_lex_state = 10}, + [2220] = {.lex_state = 38, .external_lex_state = 9}, + [2221] = {.lex_state = 21, .external_lex_state = 10}, + [2222] = {.lex_state = 38, .external_lex_state = 9}, + [2223] = {.lex_state = 38, .external_lex_state = 9}, + [2224] = {.lex_state = 38, .external_lex_state = 12}, + [2225] = {.lex_state = 38, .external_lex_state = 13}, + [2226] = {.lex_state = 38, .external_lex_state = 12}, + [2227] = {.lex_state = 38, .external_lex_state = 11}, + [2228] = {.lex_state = 38, .external_lex_state = 11}, + [2229] = {.lex_state = 38, .external_lex_state = 10}, + [2230] = {.lex_state = 38, .external_lex_state = 11}, + [2231] = {.lex_state = 38, .external_lex_state = 10}, + [2232] = {.lex_state = 38, .external_lex_state = 13}, + [2233] = {.lex_state = 38, .external_lex_state = 13}, + [2234] = {.lex_state = 38, .external_lex_state = 12}, + [2235] = {.lex_state = 38, .external_lex_state = 12}, + [2236] = {.lex_state = 38, .external_lex_state = 9}, + [2237] = {.lex_state = 38, .external_lex_state = 13}, + [2238] = {.lex_state = 21, .external_lex_state = 10}, + [2239] = {.lex_state = 38, .external_lex_state = 11}, + [2240] = {.lex_state = 38, .external_lex_state = 11}, + [2241] = {.lex_state = 38, .external_lex_state = 11}, + [2242] = {.lex_state = 38, .external_lex_state = 11}, + [2243] = {.lex_state = 21, .external_lex_state = 10}, + [2244] = {.lex_state = 38, .external_lex_state = 12}, + [2245] = {.lex_state = 38, .external_lex_state = 13}, + [2246] = {.lex_state = 38, .external_lex_state = 13}, + [2247] = {.lex_state = 38, .external_lex_state = 13}, + [2248] = {.lex_state = 38, .external_lex_state = 11}, + [2249] = {.lex_state = 38, .external_lex_state = 11}, + [2250] = {.lex_state = 38, .external_lex_state = 12}, + [2251] = {.lex_state = 38, .external_lex_state = 9}, + [2252] = {.lex_state = 38, .external_lex_state = 13}, + [2253] = {.lex_state = 38, .external_lex_state = 12}, + [2254] = {.lex_state = 38, .external_lex_state = 13}, + [2255] = {.lex_state = 38, .external_lex_state = 12}, + [2256] = {.lex_state = 38, .external_lex_state = 13}, + [2257] = {.lex_state = 38, .external_lex_state = 13}, + [2258] = {.lex_state = 38, .external_lex_state = 10}, + [2259] = {.lex_state = 38, .external_lex_state = 13}, + [2260] = {.lex_state = 38, .external_lex_state = 12}, + [2261] = {.lex_state = 38, .external_lex_state = 13}, + [2262] = {.lex_state = 38, .external_lex_state = 13}, + [2263] = {.lex_state = 38, .external_lex_state = 9}, + [2264] = {.lex_state = 38, .external_lex_state = 13}, + [2265] = {.lex_state = 38, .external_lex_state = 9}, + [2266] = {.lex_state = 38, .external_lex_state = 11}, + [2267] = {.lex_state = 38, .external_lex_state = 9}, + [2268] = {.lex_state = 38, .external_lex_state = 10}, + [2269] = {.lex_state = 38, .external_lex_state = 9}, + [2270] = {.lex_state = 38, .external_lex_state = 11}, + [2271] = {.lex_state = 38, .external_lex_state = 13}, + [2272] = {.lex_state = 17, .external_lex_state = 10}, + [2273] = {.lex_state = 17, .external_lex_state = 10}, + [2274] = {.lex_state = 38, .external_lex_state = 13}, + [2275] = {.lex_state = 38, .external_lex_state = 13}, + [2276] = {.lex_state = 38, .external_lex_state = 13}, + [2277] = {.lex_state = 21, .external_lex_state = 10}, + [2278] = {.lex_state = 38, .external_lex_state = 13}, + [2279] = {.lex_state = 21, .external_lex_state = 10}, + [2280] = {.lex_state = 38, .external_lex_state = 13}, + [2281] = {.lex_state = 38, .external_lex_state = 9}, + [2282] = {.lex_state = 38, .external_lex_state = 9}, + [2283] = {.lex_state = 38, .external_lex_state = 12}, + [2284] = {.lex_state = 38, .external_lex_state = 12}, + [2285] = {.lex_state = 38, .external_lex_state = 10}, + [2286] = {.lex_state = 38, .external_lex_state = 12}, + [2287] = {.lex_state = 38, .external_lex_state = 13}, + [2288] = {.lex_state = 38, .external_lex_state = 13}, + [2289] = {.lex_state = 38, .external_lex_state = 9}, + [2290] = {.lex_state = 38, .external_lex_state = 13}, + [2291] = {.lex_state = 38, .external_lex_state = 9}, + [2292] = {.lex_state = 38, .external_lex_state = 13}, + [2293] = {.lex_state = 38, .external_lex_state = 9}, + [2294] = {.lex_state = 38, .external_lex_state = 13}, + [2295] = {.lex_state = 38, .external_lex_state = 12}, + [2296] = {.lex_state = 38, .external_lex_state = 13}, + [2297] = {.lex_state = 17, .external_lex_state = 10}, + [2298] = {.lex_state = 38, .external_lex_state = 13}, + [2299] = {.lex_state = 38, .external_lex_state = 10}, + [2300] = {.lex_state = 38, .external_lex_state = 10}, + [2301] = {.lex_state = 38, .external_lex_state = 10}, + [2302] = {.lex_state = 38, .external_lex_state = 13}, + [2303] = {.lex_state = 38, .external_lex_state = 13}, + [2304] = {.lex_state = 38, .external_lex_state = 10}, + [2305] = {.lex_state = 38, .external_lex_state = 10}, + [2306] = {.lex_state = 17, .external_lex_state = 10}, + [2307] = {.lex_state = 38, .external_lex_state = 13}, + [2308] = {.lex_state = 38, .external_lex_state = 11}, + [2309] = {.lex_state = 38, .external_lex_state = 10}, + [2310] = {.lex_state = 38, .external_lex_state = 11}, + [2311] = {.lex_state = 38, .external_lex_state = 9}, + [2312] = {.lex_state = 38, .external_lex_state = 13}, + [2313] = {.lex_state = 38, .external_lex_state = 13}, + [2314] = {.lex_state = 38, .external_lex_state = 13}, + [2315] = {.lex_state = 17, .external_lex_state = 10}, + [2316] = {.lex_state = 38, .external_lex_state = 13}, + [2317] = {.lex_state = 21, .external_lex_state = 10}, + [2318] = {.lex_state = 17, .external_lex_state = 10}, + [2319] = {.lex_state = 17, .external_lex_state = 10}, + [2320] = {.lex_state = 38, .external_lex_state = 10}, + [2321] = {.lex_state = 38, .external_lex_state = 13}, + [2322] = {.lex_state = 38, .external_lex_state = 13}, + [2323] = {.lex_state = 38, .external_lex_state = 10}, + [2324] = {.lex_state = 38, .external_lex_state = 11}, + [2325] = {.lex_state = 38, .external_lex_state = 11}, + [2326] = {.lex_state = 38, .external_lex_state = 13}, + [2327] = {.lex_state = 38, .external_lex_state = 13}, + [2328] = {.lex_state = 38, .external_lex_state = 12}, + [2329] = {.lex_state = 17, .external_lex_state = 10}, + [2330] = {.lex_state = 38, .external_lex_state = 10}, + [2331] = {.lex_state = 38, .external_lex_state = 13}, + [2332] = {.lex_state = 17, .external_lex_state = 10}, + [2333] = {.lex_state = 17, .external_lex_state = 10}, + [2334] = {.lex_state = 38, .external_lex_state = 12}, + [2335] = {.lex_state = 38, .external_lex_state = 13}, + [2336] = {.lex_state = 38, .external_lex_state = 11}, + [2337] = {.lex_state = 38, .external_lex_state = 11}, + [2338] = {.lex_state = 17, .external_lex_state = 10}, + [2339] = {.lex_state = 38, .external_lex_state = 11}, + [2340] = {.lex_state = 17, .external_lex_state = 10}, + [2341] = {.lex_state = 38, .external_lex_state = 13}, + [2342] = {.lex_state = 38, .external_lex_state = 11}, + [2343] = {.lex_state = 38, .external_lex_state = 12}, + [2344] = {.lex_state = 38, .external_lex_state = 10}, + [2345] = {.lex_state = 38, .external_lex_state = 12}, + [2346] = {.lex_state = 38, .external_lex_state = 11}, + [2347] = {.lex_state = 38, .external_lex_state = 10}, + [2348] = {.lex_state = 38, .external_lex_state = 13}, + [2349] = {.lex_state = 38, .external_lex_state = 10}, + [2350] = {.lex_state = 17, .external_lex_state = 10}, + [2351] = {.lex_state = 38, .external_lex_state = 13}, + [2352] = {.lex_state = 38, .external_lex_state = 12}, + [2353] = {.lex_state = 38, .external_lex_state = 10}, + [2354] = {.lex_state = 38, .external_lex_state = 12}, + [2355] = {.lex_state = 38, .external_lex_state = 11}, + [2356] = {.lex_state = 38, .external_lex_state = 11}, + [2357] = {.lex_state = 38, .external_lex_state = 13}, + [2358] = {.lex_state = 38, .external_lex_state = 11}, + [2359] = {.lex_state = 17, .external_lex_state = 10}, + [2360] = {.lex_state = 38, .external_lex_state = 10}, + [2361] = {.lex_state = 38, .external_lex_state = 12}, + [2362] = {.lex_state = 38, .external_lex_state = 10}, + [2363] = {.lex_state = 38, .external_lex_state = 13}, + [2364] = {.lex_state = 38, .external_lex_state = 10}, + [2365] = {.lex_state = 38, .external_lex_state = 13}, + [2366] = {.lex_state = 38, .external_lex_state = 12}, + [2367] = {.lex_state = 38, .external_lex_state = 13}, + [2368] = {.lex_state = 17, .external_lex_state = 10}, + [2369] = {.lex_state = 38, .external_lex_state = 11}, + [2370] = {.lex_state = 38, .external_lex_state = 11}, + [2371] = {.lex_state = 38, .external_lex_state = 11}, + [2372] = {.lex_state = 17, .external_lex_state = 10}, + [2373] = {.lex_state = 38, .external_lex_state = 13}, + [2374] = {.lex_state = 38, .external_lex_state = 12}, + [2375] = {.lex_state = 38, .external_lex_state = 10}, + [2376] = {.lex_state = 38, .external_lex_state = 10}, + [2377] = {.lex_state = 38, .external_lex_state = 11}, + [2378] = {.lex_state = 38, .external_lex_state = 13}, + [2379] = {.lex_state = 38, .external_lex_state = 12}, + [2380] = {.lex_state = 38, .external_lex_state = 11}, + [2381] = {.lex_state = 17, .external_lex_state = 10}, + [2382] = {.lex_state = 38, .external_lex_state = 11}, + [2383] = {.lex_state = 17, .external_lex_state = 10}, + [2384] = {.lex_state = 38, .external_lex_state = 11}, + [2385] = {.lex_state = 38, .external_lex_state = 11}, + [2386] = {.lex_state = 38, .external_lex_state = 13}, + [2387] = {.lex_state = 38, .external_lex_state = 10}, + [2388] = {.lex_state = 38, .external_lex_state = 10}, + [2389] = {.lex_state = 38, .external_lex_state = 10}, + [2390] = {.lex_state = 38, .external_lex_state = 10}, + [2391] = {.lex_state = 38, .external_lex_state = 10}, + [2392] = {.lex_state = 38, .external_lex_state = 13}, + [2393] = {.lex_state = 38, .external_lex_state = 13}, + [2394] = {.lex_state = 38, .external_lex_state = 13}, + [2395] = {.lex_state = 17, .external_lex_state = 10}, + [2396] = {.lex_state = 38, .external_lex_state = 11}, + [2397] = {.lex_state = 38, .external_lex_state = 11}, + [2398] = {.lex_state = 38, .external_lex_state = 10}, + [2399] = {.lex_state = 17, .external_lex_state = 10}, + [2400] = {.lex_state = 38, .external_lex_state = 10}, + [2401] = {.lex_state = 38, .external_lex_state = 12}, + [2402] = {.lex_state = 38, .external_lex_state = 13}, + [2403] = {.lex_state = 38, .external_lex_state = 10}, + [2404] = {.lex_state = 38, .external_lex_state = 12}, + [2405] = {.lex_state = 38, .external_lex_state = 12}, + [2406] = {.lex_state = 38, .external_lex_state = 11}, + [2407] = {.lex_state = 38, .external_lex_state = 13}, + [2408] = {.lex_state = 38, .external_lex_state = 10}, + [2409] = {.lex_state = 38, .external_lex_state = 11}, + [2410] = {.lex_state = 17, .external_lex_state = 10}, + [2411] = {.lex_state = 38, .external_lex_state = 10}, + [2412] = {.lex_state = 38, .external_lex_state = 10}, + [2413] = {.lex_state = 38, .external_lex_state = 10}, + [2414] = {.lex_state = 38, .external_lex_state = 13}, + [2415] = {.lex_state = 38, .external_lex_state = 12}, + [2416] = {.lex_state = 38, .external_lex_state = 10}, + [2417] = {.lex_state = 38, .external_lex_state = 10}, + [2418] = {.lex_state = 38, .external_lex_state = 11}, + [2419] = {.lex_state = 38, .external_lex_state = 11}, + [2420] = {.lex_state = 38, .external_lex_state = 10}, + [2421] = {.lex_state = 38, .external_lex_state = 13}, + [2422] = {.lex_state = 38, .external_lex_state = 10}, + [2423] = {.lex_state = 17, .external_lex_state = 10}, + [2424] = {.lex_state = 38, .external_lex_state = 11}, + [2425] = {.lex_state = 38, .external_lex_state = 12}, + [2426] = {.lex_state = 38, .external_lex_state = 11}, + [2427] = {.lex_state = 38, .external_lex_state = 13}, + [2428] = {.lex_state = 38, .external_lex_state = 12}, + [2429] = {.lex_state = 38, .external_lex_state = 12}, + [2430] = {.lex_state = 38, .external_lex_state = 13}, + [2431] = {.lex_state = 38, .external_lex_state = 13}, + [2432] = {.lex_state = 38, .external_lex_state = 13}, + [2433] = {.lex_state = 38, .external_lex_state = 13}, + [2434] = {.lex_state = 38, .external_lex_state = 11}, + [2435] = {.lex_state = 38, .external_lex_state = 10}, + [2436] = {.lex_state = 38, .external_lex_state = 10}, + [2437] = {.lex_state = 38, .external_lex_state = 13}, + [2438] = {.lex_state = 38, .external_lex_state = 11}, + [2439] = {.lex_state = 38, .external_lex_state = 12}, + [2440] = {.lex_state = 17, .external_lex_state = 10}, + [2441] = {.lex_state = 17, .external_lex_state = 10}, + [2442] = {.lex_state = 17, .external_lex_state = 10}, + [2443] = {.lex_state = 38, .external_lex_state = 11}, + [2444] = {.lex_state = 38, .external_lex_state = 10}, + [2445] = {.lex_state = 38, .external_lex_state = 11}, + [2446] = {.lex_state = 38, .external_lex_state = 13}, + [2447] = {.lex_state = 17, .external_lex_state = 10}, + [2448] = {.lex_state = 38, .external_lex_state = 13}, + [2449] = {.lex_state = 38, .external_lex_state = 11}, + [2450] = {.lex_state = 38, .external_lex_state = 11}, + [2451] = {.lex_state = 38, .external_lex_state = 13}, + [2452] = {.lex_state = 38, .external_lex_state = 13}, + [2453] = {.lex_state = 17, .external_lex_state = 10}, + [2454] = {.lex_state = 38, .external_lex_state = 10}, + [2455] = {.lex_state = 38, .external_lex_state = 11}, + [2456] = {.lex_state = 17, .external_lex_state = 10}, + [2457] = {.lex_state = 17, .external_lex_state = 10}, + [2458] = {.lex_state = 38, .external_lex_state = 10}, + [2459] = {.lex_state = 38, .external_lex_state = 10}, + [2460] = {.lex_state = 17, .external_lex_state = 10}, + [2461] = {.lex_state = 38, .external_lex_state = 10}, + [2462] = {.lex_state = 38, .external_lex_state = 10}, + [2463] = {.lex_state = 17, .external_lex_state = 10}, + [2464] = {.lex_state = 38, .external_lex_state = 10}, + [2465] = {.lex_state = 38, .external_lex_state = 10}, + [2466] = {.lex_state = 17, .external_lex_state = 10}, + [2467] = {.lex_state = 38, .external_lex_state = 11}, + [2468] = {.lex_state = 38, .external_lex_state = 13}, + [2469] = {.lex_state = 17, .external_lex_state = 10}, + [2470] = {.lex_state = 38, .external_lex_state = 11}, + [2471] = {.lex_state = 38, .external_lex_state = 13}, + [2472] = {.lex_state = 38, .external_lex_state = 11}, + [2473] = {.lex_state = 17, .external_lex_state = 10}, + [2474] = {.lex_state = 38, .external_lex_state = 11}, + [2475] = {.lex_state = 38, .external_lex_state = 12}, + [2476] = {.lex_state = 17, .external_lex_state = 10}, + [2477] = {.lex_state = 17, .external_lex_state = 10}, + [2478] = {.lex_state = 38, .external_lex_state = 13}, + [2479] = {.lex_state = 38, .external_lex_state = 10}, + [2480] = {.lex_state = 17, .external_lex_state = 10}, + [2481] = {.lex_state = 17, .external_lex_state = 10}, + [2482] = {.lex_state = 17, .external_lex_state = 10}, + [2483] = {.lex_state = 38, .external_lex_state = 11}, + [2484] = {.lex_state = 17, .external_lex_state = 10}, + [2485] = {.lex_state = 38, .external_lex_state = 11}, + [2486] = {.lex_state = 17, .external_lex_state = 10}, + [2487] = {.lex_state = 38, .external_lex_state = 11}, + [2488] = {.lex_state = 17, .external_lex_state = 10}, + [2489] = {.lex_state = 17, .external_lex_state = 10}, + [2490] = {.lex_state = 38, .external_lex_state = 11}, + [2491] = {.lex_state = 38, .external_lex_state = 12}, + [2492] = {.lex_state = 38, .external_lex_state = 13}, + [2493] = {.lex_state = 38, .external_lex_state = 10}, + [2494] = {.lex_state = 38, .external_lex_state = 10}, + [2495] = {.lex_state = 38, .external_lex_state = 10}, + [2496] = {.lex_state = 38, .external_lex_state = 10}, + [2497] = {.lex_state = 38, .external_lex_state = 10}, + [2498] = {.lex_state = 38, .external_lex_state = 10}, + [2499] = {.lex_state = 38, .external_lex_state = 10}, + [2500] = {.lex_state = 17, .external_lex_state = 10}, + [2501] = {.lex_state = 38, .external_lex_state = 10}, + [2502] = {.lex_state = 38, .external_lex_state = 11}, + [2503] = {.lex_state = 17, .external_lex_state = 10}, + [2504] = {.lex_state = 38, .external_lex_state = 10}, + [2505] = {.lex_state = 17, .external_lex_state = 10}, + [2506] = {.lex_state = 38, .external_lex_state = 11}, + [2507] = {.lex_state = 17, .external_lex_state = 10}, + [2508] = {.lex_state = 38, .external_lex_state = 10}, + [2509] = {.lex_state = 38, .external_lex_state = 11}, + [2510] = {.lex_state = 17, .external_lex_state = 10}, + [2511] = {.lex_state = 38, .external_lex_state = 12}, + [2512] = {.lex_state = 38, .external_lex_state = 13}, + [2513] = {.lex_state = 17, .external_lex_state = 10}, + [2514] = {.lex_state = 38, .external_lex_state = 13}, + [2515] = {.lex_state = 38, .external_lex_state = 13}, + [2516] = {.lex_state = 17, .external_lex_state = 10}, + [2517] = {.lex_state = 17, .external_lex_state = 10}, + [2518] = {.lex_state = 38, .external_lex_state = 10}, + [2519] = {.lex_state = 17, .external_lex_state = 10}, + [2520] = {.lex_state = 38, .external_lex_state = 10}, + [2521] = {.lex_state = 38, .external_lex_state = 13}, + [2522] = {.lex_state = 17, .external_lex_state = 10}, + [2523] = {.lex_state = 38, .external_lex_state = 13}, + [2524] = {.lex_state = 17, .external_lex_state = 10}, + [2525] = {.lex_state = 38, .external_lex_state = 12}, + [2526] = {.lex_state = 38, .external_lex_state = 10}, + [2527] = {.lex_state = 38, .external_lex_state = 10}, + [2528] = {.lex_state = 38, .external_lex_state = 11}, + [2529] = {.lex_state = 38, .external_lex_state = 10}, + [2530] = {.lex_state = 38, .external_lex_state = 11}, + [2531] = {.lex_state = 38, .external_lex_state = 10}, + [2532] = {.lex_state = 38, .external_lex_state = 10}, + [2533] = {.lex_state = 38, .external_lex_state = 12}, + [2534] = {.lex_state = 38, .external_lex_state = 13}, + [2535] = {.lex_state = 38, .external_lex_state = 10}, + [2536] = {.lex_state = 38, .external_lex_state = 10}, + [2537] = {.lex_state = 38, .external_lex_state = 10}, + [2538] = {.lex_state = 38, .external_lex_state = 10}, + [2539] = {.lex_state = 17, .external_lex_state = 10}, + [2540] = {.lex_state = 38, .external_lex_state = 13}, + [2541] = {.lex_state = 38, .external_lex_state = 10}, + [2542] = {.lex_state = 38, .external_lex_state = 13}, + [2543] = {.lex_state = 38, .external_lex_state = 10}, + [2544] = {.lex_state = 38, .external_lex_state = 10}, + [2545] = {.lex_state = 38, .external_lex_state = 12}, + [2546] = {.lex_state = 38, .external_lex_state = 10}, + [2547] = {.lex_state = 38, .external_lex_state = 10}, + [2548] = {.lex_state = 38, .external_lex_state = 10}, + [2549] = {.lex_state = 38, .external_lex_state = 13}, + [2550] = {.lex_state = 38, .external_lex_state = 10}, + [2551] = {.lex_state = 38, .external_lex_state = 10}, + [2552] = {.lex_state = 38, .external_lex_state = 11}, + [2553] = {.lex_state = 38, .external_lex_state = 11}, +}; + +enum { + ts_external_token__newline = 0, + ts_external_token__indent = 1, + ts_external_token__dedent = 2, + ts_external_token_string_start = 3, + ts_external_token__string_content = 4, + ts_external_token_string_end = 5, + ts_external_token_comment = 6, + ts_external_token_RBRACK = 7, + ts_external_token_RPAREN = 8, + ts_external_token_RBRACE = 9, +}; + +static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = { + [ts_external_token__newline] = sym__newline, + [ts_external_token__indent] = sym__indent, + [ts_external_token__dedent] = sym__dedent, + [ts_external_token_string_start] = sym_string_start, + [ts_external_token__string_content] = sym__string_content, + [ts_external_token_string_end] = sym_string_end, + [ts_external_token_comment] = sym_comment, + [ts_external_token_RBRACK] = anon_sym_RBRACK, + [ts_external_token_RPAREN] = anon_sym_RPAREN, + [ts_external_token_RBRACE] = anon_sym_RBRACE, +}; + +static const bool ts_external_scanner_states[15][EXTERNAL_TOKEN_COUNT] = { + [1] = { + [ts_external_token__newline] = true, + [ts_external_token__indent] = true, + [ts_external_token__dedent] = true, + [ts_external_token_string_start] = true, + [ts_external_token__string_content] = true, + [ts_external_token_string_end] = true, + [ts_external_token_comment] = true, + [ts_external_token_RBRACK] = true, + [ts_external_token_RPAREN] = true, + [ts_external_token_RBRACE] = true, + }, + [2] = { + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + }, + [3] = { + [ts_external_token__dedent] = true, + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + }, + [4] = { + [ts_external_token__newline] = true, + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + }, + [5] = { + [ts_external_token__newline] = true, + [ts_external_token__indent] = true, + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + }, + [6] = { + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + [ts_external_token_RBRACE] = true, + }, + [7] = { + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + [ts_external_token_RPAREN] = true, + }, + [8] = { + [ts_external_token_string_start] = true, + [ts_external_token_comment] = true, + [ts_external_token_RBRACK] = true, + }, + [9] = { + [ts_external_token__newline] = true, + [ts_external_token_comment] = true, + }, + [10] = { + [ts_external_token_comment] = true, + }, + [11] = { + [ts_external_token_comment] = true, + [ts_external_token_RBRACE] = true, + }, + [12] = { + [ts_external_token_comment] = true, + [ts_external_token_RBRACK] = true, + }, + [13] = { + [ts_external_token_comment] = true, + [ts_external_token_RPAREN] = true, + }, + [14] = { + [ts_external_token__string_content] = true, + [ts_external_token_string_end] = true, + [ts_external_token_comment] = true, + }, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [sym_identifier] = ACTIONS(1), + [anon_sym_SEMI] = ACTIONS(1), + [anon_sym_import] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [anon_sym_from] = ACTIONS(1), + [anon_sym___future__] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_as] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_print] = ACTIONS(1), + [anon_sym_GT_GT] = ACTIONS(1), + [anon_sym_assert] = ACTIONS(1), + [anon_sym_COLON_EQ] = ACTIONS(1), + [anon_sym_return] = ACTIONS(1), + [anon_sym_del] = ACTIONS(1), + [anon_sym_raise] = ACTIONS(1), + [anon_sym_pass] = ACTIONS(1), + [anon_sym_break] = ACTIONS(1), + [anon_sym_continue] = ACTIONS(1), + [anon_sym_if] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [anon_sym_elif] = ACTIONS(1), + [anon_sym_else] = ACTIONS(1), + [anon_sym_match] = ACTIONS(1), + [anon_sym_case] = ACTIONS(1), + [anon_sym_async] = ACTIONS(1), + [anon_sym_for] = ACTIONS(1), + [anon_sym_in] = ACTIONS(1), + [anon_sym_while] = ACTIONS(1), + [anon_sym_try] = ACTIONS(1), + [anon_sym_except] = ACTIONS(1), + [anon_sym_except_STAR] = ACTIONS(1), + [anon_sym_finally] = ACTIONS(1), + [anon_sym_with] = ACTIONS(1), + [anon_sym_def] = ACTIONS(1), + [anon_sym_DASH_GT] = ACTIONS(1), + [anon_sym_STAR_STAR] = ACTIONS(1), + [anon_sym_global] = ACTIONS(1), + [anon_sym_nonlocal] = ACTIONS(1), + [anon_sym_exec] = ACTIONS(1), + [anon_sym_class] = ACTIONS(1), + [anon_sym_AT] = ACTIONS(1), + [anon_sym_PIPE] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [sym_case_wildcard_pattern] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [anon_sym_not] = ACTIONS(1), + [anon_sym_and] = ACTIONS(1), + [anon_sym_or] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_PERCENT] = ACTIONS(1), + [anon_sym_SLASH_SLASH] = ACTIONS(1), + [anon_sym_AMP] = ACTIONS(1), + [anon_sym_CARET] = ACTIONS(1), + [anon_sym_LT_LT] = ACTIONS(1), + [anon_sym_TILDE] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_LT_EQ] = ACTIONS(1), + [anon_sym_EQ_EQ] = ACTIONS(1), + [anon_sym_BANG_EQ] = ACTIONS(1), + [anon_sym_GT_EQ] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_LT_GT] = ACTIONS(1), + [anon_sym_is] = ACTIONS(1), + [anon_sym_lambda] = ACTIONS(1), + [anon_sym_PLUS_EQ] = ACTIONS(1), + [anon_sym_DASH_EQ] = ACTIONS(1), + [anon_sym_STAR_EQ] = ACTIONS(1), + [anon_sym_SLASH_EQ] = ACTIONS(1), + [anon_sym_AT_EQ] = ACTIONS(1), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(1), + [anon_sym_PERCENT_EQ] = ACTIONS(1), + [anon_sym_STAR_STAR_EQ] = ACTIONS(1), + [anon_sym_GT_GT_EQ] = ACTIONS(1), + [anon_sym_LT_LT_EQ] = ACTIONS(1), + [anon_sym_AMP_EQ] = ACTIONS(1), + [anon_sym_CARET_EQ] = ACTIONS(1), + [anon_sym_PIPE_EQ] = ACTIONS(1), + [anon_sym_yield] = ACTIONS(1), + [sym_ellipsis] = ACTIONS(1), + [sym_escape_sequence] = ACTIONS(1), + [sym__not_escape_sequence] = ACTIONS(1), + [sym_type_conversion] = ACTIONS(1), + [sym_integer] = ACTIONS(1), + [sym_float] = ACTIONS(1), + [anon_sym_await] = ACTIONS(1), + [sym_true] = ACTIONS(1), + [sym_false] = ACTIONS(1), + [sym_none] = ACTIONS(1), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(5), + [sym__newline] = ACTIONS(1), + [sym__indent] = ACTIONS(1), + [sym__dedent] = ACTIONS(1), + [sym_string_start] = ACTIONS(1), + [sym__string_content] = ACTIONS(1), + [sym_string_end] = ACTIONS(1), + }, + [1] = { + [sym_module] = STATE(2532), + [sym__statement] = STATE(71), + [sym__simple_statements] = STATE(71), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_if_statement] = STATE(71), + [sym_match_statement] = STATE(71), + [sym_for_statement] = STATE(71), + [sym_while_statement] = STATE(71), + [sym_try_statement] = STATE(71), + [sym_with_statement] = STATE(71), + [sym_function_definition] = STATE(71), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_class_definition] = STATE(71), + [sym_decorated_definition] = STATE(71), + [sym_decorator] = STATE(1635), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(71), + [aux_sym_decorated_definition_repeat1] = STATE(1635), + [ts_builtin_sym_end] = ACTIONS(7), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(35), + [anon_sym_match] = ACTIONS(37), + [anon_sym_async] = ACTIONS(39), + [anon_sym_for] = ACTIONS(41), + [anon_sym_while] = ACTIONS(43), + [anon_sym_try] = ACTIONS(45), + [anon_sym_with] = ACTIONS(47), + [anon_sym_def] = ACTIONS(49), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(57), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(79), + }, + [2] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(706), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [3] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(795), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [4] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(729), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [5] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(815), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [6] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(818), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [7] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(731), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [8] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(796), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [9] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(840), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [10] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(843), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [11] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(851), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [12] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(833), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [13] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(829), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [14] = { + [sym__statement] = STATE(69), + [sym__simple_statements] = STATE(69), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(69), + [sym_match_statement] = STATE(69), + [sym_for_statement] = STATE(69), + [sym_while_statement] = STATE(69), + [sym_try_statement] = STATE(69), + [sym_with_statement] = STATE(69), + [sym_function_definition] = STATE(69), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(69), + [sym_decorated_definition] = STATE(69), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(635), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(69), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(103), + [sym_string_start] = ACTIONS(79), + }, + [15] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(676), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [16] = { + [sym__statement] = STATE(70), + [sym__simple_statements] = STATE(70), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(70), + [sym_match_statement] = STATE(70), + [sym_for_statement] = STATE(70), + [sym_while_statement] = STATE(70), + [sym_try_statement] = STATE(70), + [sym_with_statement] = STATE(70), + [sym_function_definition] = STATE(70), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(70), + [sym_decorated_definition] = STATE(70), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(634), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(70), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(105), + [sym_string_start] = ACTIONS(79), + }, + [17] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(799), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [18] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(689), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [19] = { + [sym__statement] = STATE(76), + [sym__simple_statements] = STATE(76), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(76), + [sym_match_statement] = STATE(76), + [sym_for_statement] = STATE(76), + [sym_while_statement] = STATE(76), + [sym_try_statement] = STATE(76), + [sym_with_statement] = STATE(76), + [sym_function_definition] = STATE(76), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(76), + [sym_decorated_definition] = STATE(76), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(631), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(76), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(107), + [sym_string_start] = ACTIONS(79), + }, + [20] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(782), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [21] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(783), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [22] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(791), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [23] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(468), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [24] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(764), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [25] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(760), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [26] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(690), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [27] = { + [sym__statement] = STATE(76), + [sym__simple_statements] = STATE(76), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(76), + [sym_match_statement] = STATE(76), + [sym_for_statement] = STATE(76), + [sym_while_statement] = STATE(76), + [sym_try_statement] = STATE(76), + [sym_with_statement] = STATE(76), + [sym_function_definition] = STATE(76), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(76), + [sym_decorated_definition] = STATE(76), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(650), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(76), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(107), + [sym_string_start] = ACTIONS(79), + }, + [28] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(583), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [29] = { + [sym__statement] = STATE(73), + [sym__simple_statements] = STATE(73), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(73), + [sym_match_statement] = STATE(73), + [sym_for_statement] = STATE(73), + [sym_while_statement] = STATE(73), + [sym_try_statement] = STATE(73), + [sym_with_statement] = STATE(73), + [sym_function_definition] = STATE(73), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(73), + [sym_decorated_definition] = STATE(73), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(648), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(73), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym_string_start] = ACTIONS(79), + }, + [30] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(846), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [31] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(695), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [32] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(744), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [33] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(726), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [34] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(722), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [35] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(717), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [36] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(836), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [37] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(711), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [38] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(710), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [39] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(707), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [40] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(692), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [41] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(735), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [42] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(740), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [43] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(703), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [44] = { + [sym__statement] = STATE(76), + [sym__simple_statements] = STATE(76), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(76), + [sym_match_statement] = STATE(76), + [sym_for_statement] = STATE(76), + [sym_while_statement] = STATE(76), + [sym_try_statement] = STATE(76), + [sym_with_statement] = STATE(76), + [sym_function_definition] = STATE(76), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(76), + [sym_decorated_definition] = STATE(76), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(615), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(76), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(107), + [sym_string_start] = ACTIONS(79), + }, + [45] = { + [sym__statement] = STATE(70), + [sym__simple_statements] = STATE(70), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(70), + [sym_match_statement] = STATE(70), + [sym_for_statement] = STATE(70), + [sym_while_statement] = STATE(70), + [sym_try_statement] = STATE(70), + [sym_with_statement] = STATE(70), + [sym_function_definition] = STATE(70), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(70), + [sym_decorated_definition] = STATE(70), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(657), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(70), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(105), + [sym_string_start] = ACTIONS(79), + }, + [46] = { + [sym__statement] = STATE(73), + [sym__simple_statements] = STATE(73), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(73), + [sym_match_statement] = STATE(73), + [sym_for_statement] = STATE(73), + [sym_while_statement] = STATE(73), + [sym_try_statement] = STATE(73), + [sym_with_statement] = STATE(73), + [sym_function_definition] = STATE(73), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(73), + [sym_decorated_definition] = STATE(73), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(656), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(73), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym_string_start] = ACTIONS(79), + }, + [47] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(701), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [48] = { + [sym__statement] = STATE(68), + [sym__simple_statements] = STATE(68), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(68), + [sym_match_statement] = STATE(68), + [sym_for_statement] = STATE(68), + [sym_while_statement] = STATE(68), + [sym_try_statement] = STATE(68), + [sym_with_statement] = STATE(68), + [sym_function_definition] = STATE(68), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(68), + [sym_decorated_definition] = STATE(68), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(700), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(68), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(99), + [sym_string_start] = ACTIONS(79), + }, + [49] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(742), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [50] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(839), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [51] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(746), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [52] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(716), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [53] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(727), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [54] = { + [sym__statement] = STATE(74), + [sym__simple_statements] = STATE(74), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(74), + [sym_match_statement] = STATE(74), + [sym_for_statement] = STATE(74), + [sym_while_statement] = STATE(74), + [sym_try_statement] = STATE(74), + [sym_with_statement] = STATE(74), + [sym_function_definition] = STATE(74), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(74), + [sym_decorated_definition] = STATE(74), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(1615), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(74), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(111), + [sym_string_start] = ACTIONS(79), + }, + [55] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(687), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [56] = { + [sym__statement] = STATE(70), + [sym__simple_statements] = STATE(70), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(70), + [sym_match_statement] = STATE(70), + [sym_for_statement] = STATE(70), + [sym_while_statement] = STATE(70), + [sym_try_statement] = STATE(70), + [sym_with_statement] = STATE(70), + [sym_function_definition] = STATE(70), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(70), + [sym_decorated_definition] = STATE(70), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(625), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(70), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(105), + [sym_string_start] = ACTIONS(79), + }, + [57] = { + [sym__statement] = STATE(69), + [sym__simple_statements] = STATE(69), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(69), + [sym_match_statement] = STATE(69), + [sym_for_statement] = STATE(69), + [sym_while_statement] = STATE(69), + [sym_try_statement] = STATE(69), + [sym_with_statement] = STATE(69), + [sym_function_definition] = STATE(69), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(69), + [sym_decorated_definition] = STATE(69), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(624), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(69), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(103), + [sym_string_start] = ACTIONS(79), + }, + [58] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(787), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [59] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(747), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [60] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(693), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [61] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(767), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [62] = { + [sym__statement] = STATE(74), + [sym__simple_statements] = STATE(74), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(74), + [sym_match_statement] = STATE(74), + [sym_for_statement] = STATE(74), + [sym_while_statement] = STATE(74), + [sym_try_statement] = STATE(74), + [sym_with_statement] = STATE(74), + [sym_function_definition] = STATE(74), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(74), + [sym_decorated_definition] = STATE(74), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(1623), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(74), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(111), + [sym_string_start] = ACTIONS(79), + }, + [63] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(789), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [64] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(765), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [65] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(682), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [66] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(762), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [67] = { + [sym__statement] = STATE(75), + [sym__simple_statements] = STATE(75), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(75), + [sym_match_statement] = STATE(75), + [sym_for_statement] = STATE(75), + [sym_while_statement] = STATE(75), + [sym_try_statement] = STATE(75), + [sym_with_statement] = STATE(75), + [sym_function_definition] = STATE(75), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(75), + [sym_decorated_definition] = STATE(75), + [sym_decorator] = STATE(1616), + [sym_block] = STATE(754), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(75), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(101), + [sym_string_start] = ACTIONS(79), + }, + [68] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(113), + [sym_string_start] = ACTIONS(79), + }, + [69] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(115), + [sym_string_start] = ACTIONS(79), + }, + [70] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(117), + [sym_string_start] = ACTIONS(79), + }, + [71] = { + [sym__statement] = STATE(72), + [sym__simple_statements] = STATE(72), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_if_statement] = STATE(72), + [sym_match_statement] = STATE(72), + [sym_for_statement] = STATE(72), + [sym_while_statement] = STATE(72), + [sym_try_statement] = STATE(72), + [sym_with_statement] = STATE(72), + [sym_function_definition] = STATE(72), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_class_definition] = STATE(72), + [sym_decorated_definition] = STATE(72), + [sym_decorator] = STATE(1635), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(72), + [aux_sym_decorated_definition_repeat1] = STATE(1635), + [ts_builtin_sym_end] = ACTIONS(119), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(35), + [anon_sym_match] = ACTIONS(37), + [anon_sym_async] = ACTIONS(39), + [anon_sym_for] = ACTIONS(41), + [anon_sym_while] = ACTIONS(43), + [anon_sym_try] = ACTIONS(45), + [anon_sym_with] = ACTIONS(47), + [anon_sym_def] = ACTIONS(49), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(57), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(79), + }, + [72] = { + [sym__statement] = STATE(72), + [sym__simple_statements] = STATE(72), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_if_statement] = STATE(72), + [sym_match_statement] = STATE(72), + [sym_for_statement] = STATE(72), + [sym_while_statement] = STATE(72), + [sym_try_statement] = STATE(72), + [sym_with_statement] = STATE(72), + [sym_function_definition] = STATE(72), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_class_definition] = STATE(72), + [sym_decorated_definition] = STATE(72), + [sym_decorator] = STATE(1635), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(72), + [aux_sym_decorated_definition_repeat1] = STATE(1635), + [ts_builtin_sym_end] = ACTIONS(121), + [sym_identifier] = ACTIONS(123), + [anon_sym_import] = ACTIONS(126), + [anon_sym_from] = ACTIONS(129), + [anon_sym_LPAREN] = ACTIONS(132), + [anon_sym_STAR] = ACTIONS(135), + [anon_sym_print] = ACTIONS(138), + [anon_sym_assert] = ACTIONS(141), + [anon_sym_return] = ACTIONS(144), + [anon_sym_del] = ACTIONS(147), + [anon_sym_raise] = ACTIONS(150), + [anon_sym_pass] = ACTIONS(153), + [anon_sym_break] = ACTIONS(156), + [anon_sym_continue] = ACTIONS(159), + [anon_sym_if] = ACTIONS(162), + [anon_sym_match] = ACTIONS(165), + [anon_sym_async] = ACTIONS(168), + [anon_sym_for] = ACTIONS(171), + [anon_sym_while] = ACTIONS(174), + [anon_sym_try] = ACTIONS(177), + [anon_sym_with] = ACTIONS(180), + [anon_sym_def] = ACTIONS(183), + [anon_sym_global] = ACTIONS(186), + [anon_sym_nonlocal] = ACTIONS(189), + [anon_sym_exec] = ACTIONS(192), + [anon_sym_class] = ACTIONS(195), + [anon_sym_AT] = ACTIONS(198), + [anon_sym_PLUS] = ACTIONS(201), + [anon_sym_DASH] = ACTIONS(201), + [anon_sym_LBRACK] = ACTIONS(204), + [anon_sym_LBRACE] = ACTIONS(207), + [anon_sym_not] = ACTIONS(210), + [anon_sym_TILDE] = ACTIONS(201), + [anon_sym_lambda] = ACTIONS(213), + [anon_sym_yield] = ACTIONS(216), + [sym_ellipsis] = ACTIONS(219), + [sym_integer] = ACTIONS(222), + [sym_float] = ACTIONS(219), + [anon_sym_await] = ACTIONS(225), + [sym_true] = ACTIONS(222), + [sym_false] = ACTIONS(222), + [sym_none] = ACTIONS(222), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(228), + }, + [73] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(231), + [sym_string_start] = ACTIONS(79), + }, + [74] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(233), + [sym_string_start] = ACTIONS(79), + }, + [75] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(235), + [sym_string_start] = ACTIONS(79), + }, + [76] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(81), + [anon_sym_match] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_def] = ACTIONS(95), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_class] = ACTIONS(97), + [anon_sym_AT] = ACTIONS(59), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(237), + [sym_string_start] = ACTIONS(79), + }, + [77] = { + [sym__statement] = STATE(77), + [sym__simple_statements] = STATE(77), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_if_statement] = STATE(77), + [sym_match_statement] = STATE(77), + [sym_for_statement] = STATE(77), + [sym_while_statement] = STATE(77), + [sym_try_statement] = STATE(77), + [sym_with_statement] = STATE(77), + [sym_function_definition] = STATE(77), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_class_definition] = STATE(77), + [sym_decorated_definition] = STATE(77), + [sym_decorator] = STATE(1616), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [aux_sym_module_repeat1] = STATE(77), + [aux_sym_decorated_definition_repeat1] = STATE(1616), + [sym_identifier] = ACTIONS(123), + [anon_sym_import] = ACTIONS(126), + [anon_sym_from] = ACTIONS(129), + [anon_sym_LPAREN] = ACTIONS(132), + [anon_sym_STAR] = ACTIONS(135), + [anon_sym_print] = ACTIONS(138), + [anon_sym_assert] = ACTIONS(141), + [anon_sym_return] = ACTIONS(144), + [anon_sym_del] = ACTIONS(147), + [anon_sym_raise] = ACTIONS(150), + [anon_sym_pass] = ACTIONS(153), + [anon_sym_break] = ACTIONS(156), + [anon_sym_continue] = ACTIONS(159), + [anon_sym_if] = ACTIONS(239), + [anon_sym_match] = ACTIONS(242), + [anon_sym_async] = ACTIONS(245), + [anon_sym_for] = ACTIONS(248), + [anon_sym_while] = ACTIONS(251), + [anon_sym_try] = ACTIONS(254), + [anon_sym_with] = ACTIONS(257), + [anon_sym_def] = ACTIONS(260), + [anon_sym_global] = ACTIONS(186), + [anon_sym_nonlocal] = ACTIONS(189), + [anon_sym_exec] = ACTIONS(192), + [anon_sym_class] = ACTIONS(263), + [anon_sym_AT] = ACTIONS(198), + [anon_sym_PLUS] = ACTIONS(201), + [anon_sym_DASH] = ACTIONS(201), + [anon_sym_LBRACK] = ACTIONS(204), + [anon_sym_LBRACE] = ACTIONS(207), + [anon_sym_not] = ACTIONS(210), + [anon_sym_TILDE] = ACTIONS(201), + [anon_sym_lambda] = ACTIONS(213), + [anon_sym_yield] = ACTIONS(216), + [sym_ellipsis] = ACTIONS(219), + [sym_integer] = ACTIONS(222), + [sym_float] = ACTIONS(219), + [anon_sym_await] = ACTIONS(225), + [sym_true] = ACTIONS(222), + [sym_false] = ACTIONS(222), + [sym_none] = ACTIONS(222), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__dedent] = ACTIONS(121), + [sym_string_start] = ACTIONS(228), + }, + [78] = { + [sym_chevron] = STATE(1955), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1627), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_attribute] = STATE(1110), + [sym_subscript] = STATE(1110), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(266), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(272), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(278), + [anon_sym_GT_GT] = ACTIONS(280), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(284), + [anon_sym_match] = ACTIONS(278), + [anon_sym_async] = ACTIONS(278), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(278), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(286), + [anon_sym_DASH] = ACTIONS(286), + [anon_sym_LBRACK] = ACTIONS(289), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_EQ] = ACTIONS(284), + [anon_sym_not] = ACTIONS(292), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_PLUS_EQ] = ACTIONS(295), + [anon_sym_DASH_EQ] = ACTIONS(295), + [anon_sym_STAR_EQ] = ACTIONS(295), + [anon_sym_SLASH_EQ] = ACTIONS(295), + [anon_sym_AT_EQ] = ACTIONS(295), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(295), + [anon_sym_PERCENT_EQ] = ACTIONS(295), + [anon_sym_STAR_STAR_EQ] = ACTIONS(295), + [anon_sym_GT_GT_EQ] = ACTIONS(295), + [anon_sym_LT_LT_EQ] = ACTIONS(295), + [anon_sym_AMP_EQ] = ACTIONS(295), + [anon_sym_CARET_EQ] = ACTIONS(295), + [anon_sym_PIPE_EQ] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(297), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(79), + }, + [79] = { + [sym_named_expression] = STATE(1649), + [sym__named_expression_lhs] = STATE(2435), + [sym_as_pattern] = STATE(1649), + [sym_expression] = STATE(1701), + [sym_primary_expression] = STATE(959), + [sym_not_operator] = STATE(1649), + [sym_boolean_operator] = STATE(1649), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_comparison_operator] = STATE(1649), + [sym_lambda] = STATE(1649), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_conditional_expression] = STATE(1649), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(299), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(303), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(284), + [anon_sym_match] = ACTIONS(303), + [anon_sym_async] = ACTIONS(303), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(303), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(305), + [anon_sym_DASH] = ACTIONS(305), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(284), + [anon_sym_not] = ACTIONS(311), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [anon_sym_lambda] = ACTIONS(315), + [anon_sym_PLUS_EQ] = ACTIONS(295), + [anon_sym_DASH_EQ] = ACTIONS(295), + [anon_sym_STAR_EQ] = ACTIONS(295), + [anon_sym_SLASH_EQ] = ACTIONS(295), + [anon_sym_AT_EQ] = ACTIONS(295), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(295), + [anon_sym_PERCENT_EQ] = ACTIONS(295), + [anon_sym_STAR_STAR_EQ] = ACTIONS(295), + [anon_sym_GT_GT_EQ] = ACTIONS(295), + [anon_sym_LT_LT_EQ] = ACTIONS(295), + [anon_sym_AMP_EQ] = ACTIONS(295), + [anon_sym_CARET_EQ] = ACTIONS(295), + [anon_sym_PIPE_EQ] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(321), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(323), + }, + [80] = { + [sym_named_expression] = STATE(1649), + [sym__named_expression_lhs] = STATE(2435), + [sym_as_pattern] = STATE(1649), + [sym_expression] = STATE(1713), + [sym_primary_expression] = STATE(959), + [sym_not_operator] = STATE(1649), + [sym_boolean_operator] = STATE(1649), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_comparison_operator] = STATE(1649), + [sym_lambda] = STATE(1649), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_conditional_expression] = STATE(1649), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(299), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(303), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(284), + [anon_sym_match] = ACTIONS(303), + [anon_sym_async] = ACTIONS(303), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(303), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(305), + [anon_sym_DASH] = ACTIONS(305), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(284), + [anon_sym_not] = ACTIONS(311), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [anon_sym_lambda] = ACTIONS(315), + [anon_sym_PLUS_EQ] = ACTIONS(295), + [anon_sym_DASH_EQ] = ACTIONS(295), + [anon_sym_STAR_EQ] = ACTIONS(295), + [anon_sym_SLASH_EQ] = ACTIONS(295), + [anon_sym_AT_EQ] = ACTIONS(295), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(295), + [anon_sym_PERCENT_EQ] = ACTIONS(295), + [anon_sym_STAR_STAR_EQ] = ACTIONS(295), + [anon_sym_GT_GT_EQ] = ACTIONS(295), + [anon_sym_LT_LT_EQ] = ACTIONS(295), + [anon_sym_AMP_EQ] = ACTIONS(295), + [anon_sym_CARET_EQ] = ACTIONS(295), + [anon_sym_PIPE_EQ] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(321), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(323), + }, + [81] = { + [sym__simple_statements] = STATE(793), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(327), + [sym__indent] = ACTIONS(329), + [sym_string_start] = ACTIONS(79), + }, + [82] = { + [sym__simple_statements] = STATE(751), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(331), + [sym__indent] = ACTIONS(333), + [sym_string_start] = ACTIONS(79), + }, + [83] = { + [sym__simple_statements] = STATE(541), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(335), + [sym__indent] = ACTIONS(337), + [sym_string_start] = ACTIONS(79), + }, + [84] = { + [sym__simple_statements] = STATE(675), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(339), + [sym__indent] = ACTIONS(341), + [sym_string_start] = ACTIONS(79), + }, + [85] = { + [sym__simple_statements] = STATE(724), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(343), + [sym__indent] = ACTIONS(345), + [sym_string_start] = ACTIONS(79), + }, + [86] = { + [sym__simple_statements] = STATE(728), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(347), + [sym__indent] = ACTIONS(349), + [sym_string_start] = ACTIONS(79), + }, + [87] = { + [sym__simple_statements] = STATE(814), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(351), + [sym__indent] = ACTIONS(353), + [sym_string_start] = ACTIONS(79), + }, + [88] = { + [sym__simple_statements] = STATE(820), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(355), + [sym__indent] = ACTIONS(357), + [sym_string_start] = ACTIONS(79), + }, + [89] = { + [sym__simple_statements] = STATE(743), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(359), + [sym__indent] = ACTIONS(361), + [sym_string_start] = ACTIONS(79), + }, + [90] = { + [sym__simple_statements] = STATE(770), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(363), + [sym__indent] = ACTIONS(365), + [sym_string_start] = ACTIONS(79), + }, + [91] = { + [sym__simple_statements] = STATE(734), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(367), + [sym__indent] = ACTIONS(369), + [sym_string_start] = ACTIONS(79), + }, + [92] = { + [sym__simple_statements] = STATE(785), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(371), + [sym__indent] = ACTIONS(373), + [sym_string_start] = ACTIONS(79), + }, + [93] = { + [sym__simple_statements] = STATE(741), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(375), + [sym__indent] = ACTIONS(377), + [sym_string_start] = ACTIONS(79), + }, + [94] = { + [sym__simple_statements] = STATE(681), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(379), + [sym__indent] = ACTIONS(381), + [sym_string_start] = ACTIONS(79), + }, + [95] = { + [sym__simple_statements] = STATE(798), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(383), + [sym__indent] = ACTIONS(385), + [sym_string_start] = ACTIONS(79), + }, + [96] = { + [sym__simple_statements] = STATE(540), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(387), + [sym__indent] = ACTIONS(389), + [sym_string_start] = ACTIONS(79), + }, + [97] = { + [sym__simple_statements] = STATE(718), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(391), + [sym__indent] = ACTIONS(393), + [sym_string_start] = ACTIONS(79), + }, + [98] = { + [sym__simple_statements] = STATE(720), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(395), + [sym__indent] = ACTIONS(397), + [sym_string_start] = ACTIONS(79), + }, + [99] = { + [sym__simple_statements] = STATE(817), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(399), + [sym__indent] = ACTIONS(401), + [sym_string_start] = ACTIONS(79), + }, + [100] = { + [sym__simple_statements] = STATE(736), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(403), + [sym__indent] = ACTIONS(405), + [sym_string_start] = ACTIONS(79), + }, + [101] = { + [sym__simple_statements] = STATE(723), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(407), + [sym__indent] = ACTIONS(409), + [sym_string_start] = ACTIONS(79), + }, + [102] = { + [sym__simple_statements] = STATE(685), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(411), + [sym__indent] = ACTIONS(413), + [sym_string_start] = ACTIONS(79), + }, + [103] = { + [sym__simple_statements] = STATE(733), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(415), + [sym__indent] = ACTIONS(417), + [sym_string_start] = ACTIONS(79), + }, + [104] = { + [sym__simple_statements] = STATE(697), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(419), + [sym__indent] = ACTIONS(421), + [sym_string_start] = ACTIONS(79), + }, + [105] = { + [sym__simple_statements] = STATE(614), + [sym_import_statement] = STATE(2167), + [sym_future_import_statement] = STATE(2167), + [sym_import_from_statement] = STATE(2167), + [sym_print_statement] = STATE(2167), + [sym_assert_statement] = STATE(2167), + [sym_expression_statement] = STATE(2167), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2167), + [sym_delete_statement] = STATE(2167), + [sym_raise_statement] = STATE(2167), + [sym_pass_statement] = STATE(2167), + [sym_break_statement] = STATE(2167), + [sym_continue_statement] = STATE(2167), + [sym_global_statement] = STATE(2167), + [sym_nonlocal_statement] = STATE(2167), + [sym_exec_statement] = STATE(2167), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(423), + [sym__indent] = ACTIONS(425), + [sym_string_start] = ACTIONS(79), + }, + [106] = { + [sym__simple_statements] = STATE(768), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(427), + [sym__indent] = ACTIONS(429), + [sym_string_start] = ACTIONS(79), + }, + [107] = { + [sym__simple_statements] = STATE(1613), + [sym_import_statement] = STATE(1989), + [sym_future_import_statement] = STATE(1989), + [sym_import_from_statement] = STATE(1989), + [sym_print_statement] = STATE(1989), + [sym_assert_statement] = STATE(1989), + [sym_expression_statement] = STATE(1989), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1989), + [sym_delete_statement] = STATE(1989), + [sym_raise_statement] = STATE(1989), + [sym_pass_statement] = STATE(1989), + [sym_break_statement] = STATE(1989), + [sym_continue_statement] = STATE(1989), + [sym_global_statement] = STATE(1989), + [sym_nonlocal_statement] = STATE(1989), + [sym_exec_statement] = STATE(1989), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(431), + [sym__indent] = ACTIONS(433), + [sym_string_start] = ACTIONS(79), + }, + [108] = { + [sym__simple_statements] = STATE(766), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(435), + [sym__indent] = ACTIONS(437), + [sym_string_start] = ACTIONS(79), + }, + [109] = { + [sym__simple_statements] = STATE(628), + [sym_import_statement] = STATE(2160), + [sym_future_import_statement] = STATE(2160), + [sym_import_from_statement] = STATE(2160), + [sym_print_statement] = STATE(2160), + [sym_assert_statement] = STATE(2160), + [sym_expression_statement] = STATE(2160), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2160), + [sym_delete_statement] = STATE(2160), + [sym_raise_statement] = STATE(2160), + [sym_pass_statement] = STATE(2160), + [sym_break_statement] = STATE(2160), + [sym_continue_statement] = STATE(2160), + [sym_global_statement] = STATE(2160), + [sym_nonlocal_statement] = STATE(2160), + [sym_exec_statement] = STATE(2160), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(439), + [sym__indent] = ACTIONS(441), + [sym_string_start] = ACTIONS(79), + }, + [110] = { + [sym__simple_statements] = STATE(842), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(443), + [sym__indent] = ACTIONS(445), + [sym_string_start] = ACTIONS(79), + }, + [111] = { + [sym__simple_statements] = STATE(708), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(447), + [sym__indent] = ACTIONS(449), + [sym_string_start] = ACTIONS(79), + }, + [112] = { + [sym__simple_statements] = STATE(678), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(451), + [sym__indent] = ACTIONS(453), + [sym_string_start] = ACTIONS(79), + }, + [113] = { + [sym__simple_statements] = STATE(748), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(455), + [sym__indent] = ACTIONS(457), + [sym_string_start] = ACTIONS(79), + }, + [114] = { + [sym__simple_statements] = STATE(752), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(459), + [sym__indent] = ACTIONS(461), + [sym_string_start] = ACTIONS(79), + }, + [115] = { + [sym__simple_statements] = STATE(673), + [sym_import_statement] = STATE(2167), + [sym_future_import_statement] = STATE(2167), + [sym_import_from_statement] = STATE(2167), + [sym_print_statement] = STATE(2167), + [sym_assert_statement] = STATE(2167), + [sym_expression_statement] = STATE(2167), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2167), + [sym_delete_statement] = STATE(2167), + [sym_raise_statement] = STATE(2167), + [sym_pass_statement] = STATE(2167), + [sym_break_statement] = STATE(2167), + [sym_continue_statement] = STATE(2167), + [sym_global_statement] = STATE(2167), + [sym_nonlocal_statement] = STATE(2167), + [sym_exec_statement] = STATE(2167), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(463), + [sym__indent] = ACTIONS(465), + [sym_string_start] = ACTIONS(79), + }, + [116] = { + [sym__simple_statements] = STATE(823), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(467), + [sym__indent] = ACTIONS(469), + [sym_string_start] = ACTIONS(79), + }, + [117] = { + [sym__simple_statements] = STATE(844), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(471), + [sym__indent] = ACTIONS(473), + [sym_string_start] = ACTIONS(79), + }, + [118] = { + [sym__simple_statements] = STATE(757), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(475), + [sym__indent] = ACTIONS(477), + [sym_string_start] = ACTIONS(79), + }, + [119] = { + [sym__simple_statements] = STATE(680), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(479), + [sym__indent] = ACTIONS(481), + [sym_string_start] = ACTIONS(79), + }, + [120] = { + [sym__simple_statements] = STATE(848), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(483), + [sym__indent] = ACTIONS(485), + [sym_string_start] = ACTIONS(79), + }, + [121] = { + [sym__simple_statements] = STATE(809), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(487), + [sym__indent] = ACTIONS(489), + [sym_string_start] = ACTIONS(79), + }, + [122] = { + [sym__simple_statements] = STATE(834), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(491), + [sym__indent] = ACTIONS(493), + [sym_string_start] = ACTIONS(79), + }, + [123] = { + [sym__simple_statements] = STATE(632), + [sym_import_statement] = STATE(2190), + [sym_future_import_statement] = STATE(2190), + [sym_import_from_statement] = STATE(2190), + [sym_print_statement] = STATE(2190), + [sym_assert_statement] = STATE(2190), + [sym_expression_statement] = STATE(2190), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2190), + [sym_delete_statement] = STATE(2190), + [sym_raise_statement] = STATE(2190), + [sym_pass_statement] = STATE(2190), + [sym_break_statement] = STATE(2190), + [sym_continue_statement] = STATE(2190), + [sym_global_statement] = STATE(2190), + [sym_nonlocal_statement] = STATE(2190), + [sym_exec_statement] = STATE(2190), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(495), + [sym__indent] = ACTIONS(497), + [sym_string_start] = ACTIONS(79), + }, + [124] = { + [sym__simple_statements] = STATE(637), + [sym_import_statement] = STATE(2160), + [sym_future_import_statement] = STATE(2160), + [sym_import_from_statement] = STATE(2160), + [sym_print_statement] = STATE(2160), + [sym_assert_statement] = STATE(2160), + [sym_expression_statement] = STATE(2160), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2160), + [sym_delete_statement] = STATE(2160), + [sym_raise_statement] = STATE(2160), + [sym_pass_statement] = STATE(2160), + [sym_break_statement] = STATE(2160), + [sym_continue_statement] = STATE(2160), + [sym_global_statement] = STATE(2160), + [sym_nonlocal_statement] = STATE(2160), + [sym_exec_statement] = STATE(2160), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(499), + [sym__indent] = ACTIONS(501), + [sym_string_start] = ACTIONS(79), + }, + [125] = { + [sym__simple_statements] = STATE(704), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(503), + [sym__indent] = ACTIONS(505), + [sym_string_start] = ACTIONS(79), + }, + [126] = { + [sym__simple_statements] = STATE(830), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(507), + [sym__indent] = ACTIONS(509), + [sym_string_start] = ACTIONS(79), + }, + [127] = { + [sym__simple_statements] = STATE(677), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(511), + [sym__indent] = ACTIONS(513), + [sym_string_start] = ACTIONS(79), + }, + [128] = { + [sym__simple_statements] = STATE(652), + [sym_import_statement] = STATE(2160), + [sym_future_import_statement] = STATE(2160), + [sym_import_from_statement] = STATE(2160), + [sym_print_statement] = STATE(2160), + [sym_assert_statement] = STATE(2160), + [sym_expression_statement] = STATE(2160), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2160), + [sym_delete_statement] = STATE(2160), + [sym_raise_statement] = STATE(2160), + [sym_pass_statement] = STATE(2160), + [sym_break_statement] = STATE(2160), + [sym_continue_statement] = STATE(2160), + [sym_global_statement] = STATE(2160), + [sym_nonlocal_statement] = STATE(2160), + [sym_exec_statement] = STATE(2160), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(515), + [sym__indent] = ACTIONS(517), + [sym_string_start] = ACTIONS(79), + }, + [129] = { + [sym__simple_statements] = STATE(777), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(519), + [sym__indent] = ACTIONS(521), + [sym_string_start] = ACTIONS(79), + }, + [130] = { + [sym__simple_statements] = STATE(696), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(523), + [sym__indent] = ACTIONS(525), + [sym_string_start] = ACTIONS(79), + }, + [131] = { + [sym__simple_statements] = STATE(713), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(527), + [sym__indent] = ACTIONS(529), + [sym_string_start] = ACTIONS(79), + }, + [132] = { + [sym__simple_statements] = STATE(730), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(531), + [sym__indent] = ACTIONS(533), + [sym_string_start] = ACTIONS(79), + }, + [133] = { + [sym__simple_statements] = STATE(683), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(535), + [sym__indent] = ACTIONS(537), + [sym_string_start] = ACTIONS(79), + }, + [134] = { + [sym__simple_statements] = STATE(699), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(539), + [sym__indent] = ACTIONS(541), + [sym_string_start] = ACTIONS(79), + }, + [135] = { + [sym__simple_statements] = STATE(737), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(543), + [sym__indent] = ACTIONS(545), + [sym_string_start] = ACTIONS(79), + }, + [136] = { + [sym__simple_statements] = STATE(759), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(547), + [sym__indent] = ACTIONS(549), + [sym_string_start] = ACTIONS(79), + }, + [137] = { + [sym__simple_statements] = STATE(756), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(551), + [sym__indent] = ACTIONS(553), + [sym_string_start] = ACTIONS(79), + }, + [138] = { + [sym__simple_statements] = STATE(801), + [sym_import_statement] = STATE(1996), + [sym_future_import_statement] = STATE(1996), + [sym_import_from_statement] = STATE(1996), + [sym_print_statement] = STATE(1996), + [sym_assert_statement] = STATE(1996), + [sym_expression_statement] = STATE(1996), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1996), + [sym_delete_statement] = STATE(1996), + [sym_raise_statement] = STATE(1996), + [sym_pass_statement] = STATE(1996), + [sym_break_statement] = STATE(1996), + [sym_continue_statement] = STATE(1996), + [sym_global_statement] = STATE(1996), + [sym_nonlocal_statement] = STATE(1996), + [sym_exec_statement] = STATE(1996), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(555), + [sym__indent] = ACTIONS(557), + [sym_string_start] = ACTIONS(79), + }, + [139] = { + [sym__simple_statements] = STATE(630), + [sym_import_statement] = STATE(2167), + [sym_future_import_statement] = STATE(2167), + [sym_import_from_statement] = STATE(2167), + [sym_print_statement] = STATE(2167), + [sym_assert_statement] = STATE(2167), + [sym_expression_statement] = STATE(2167), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2167), + [sym_delete_statement] = STATE(2167), + [sym_raise_statement] = STATE(2167), + [sym_pass_statement] = STATE(2167), + [sym_break_statement] = STATE(2167), + [sym_continue_statement] = STATE(2167), + [sym_global_statement] = STATE(2167), + [sym_nonlocal_statement] = STATE(2167), + [sym_exec_statement] = STATE(2167), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(559), + [sym__indent] = ACTIONS(561), + [sym_string_start] = ACTIONS(79), + }, + [140] = { + [sym__simple_statements] = STATE(629), + [sym_import_statement] = STATE(2139), + [sym_future_import_statement] = STATE(2139), + [sym_import_from_statement] = STATE(2139), + [sym_print_statement] = STATE(2139), + [sym_assert_statement] = STATE(2139), + [sym_expression_statement] = STATE(2139), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2139), + [sym_delete_statement] = STATE(2139), + [sym_raise_statement] = STATE(2139), + [sym_pass_statement] = STATE(2139), + [sym_break_statement] = STATE(2139), + [sym_continue_statement] = STATE(2139), + [sym_global_statement] = STATE(2139), + [sym_nonlocal_statement] = STATE(2139), + [sym_exec_statement] = STATE(2139), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(563), + [sym__indent] = ACTIONS(565), + [sym_string_start] = ACTIONS(79), + }, + [141] = { + [sym__simple_statements] = STATE(1622), + [sym_import_statement] = STATE(1989), + [sym_future_import_statement] = STATE(1989), + [sym_import_from_statement] = STATE(1989), + [sym_print_statement] = STATE(1989), + [sym_assert_statement] = STATE(1989), + [sym_expression_statement] = STATE(1989), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(1989), + [sym_delete_statement] = STATE(1989), + [sym_raise_statement] = STATE(1989), + [sym_pass_statement] = STATE(1989), + [sym_break_statement] = STATE(1989), + [sym_continue_statement] = STATE(1989), + [sym_global_statement] = STATE(1989), + [sym_nonlocal_statement] = STATE(1989), + [sym_exec_statement] = STATE(1989), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(567), + [sym__indent] = ACTIONS(569), + [sym_string_start] = ACTIONS(79), + }, + [142] = { + [sym__simple_statements] = STATE(822), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(571), + [sym__indent] = ACTIONS(573), + [sym_string_start] = ACTIONS(79), + }, + [143] = { + [sym__simple_statements] = STATE(750), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(575), + [sym__indent] = ACTIONS(577), + [sym_string_start] = ACTIONS(79), + }, + [144] = { + [sym__simple_statements] = STATE(686), + [sym_import_statement] = STATE(2069), + [sym_future_import_statement] = STATE(2069), + [sym_import_from_statement] = STATE(2069), + [sym_print_statement] = STATE(2069), + [sym_assert_statement] = STATE(2069), + [sym_expression_statement] = STATE(2069), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2069), + [sym_delete_statement] = STATE(2069), + [sym_raise_statement] = STATE(2069), + [sym_pass_statement] = STATE(2069), + [sym_break_statement] = STATE(2069), + [sym_continue_statement] = STATE(2069), + [sym_global_statement] = STATE(2069), + [sym_nonlocal_statement] = STATE(2069), + [sym_exec_statement] = STATE(2069), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(579), + [sym__indent] = ACTIONS(581), + [sym_string_start] = ACTIONS(79), + }, + [145] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(583), + [sym_string_start] = ACTIONS(79), + }, + [146] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(585), + [sym_string_start] = ACTIONS(79), + }, + [147] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(587), + [sym_string_start] = ACTIONS(79), + }, + [148] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(589), + [sym_string_start] = ACTIONS(79), + }, + [149] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(591), + [sym_string_start] = ACTIONS(79), + }, + [150] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(593), + [sym_string_start] = ACTIONS(79), + }, + [151] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(595), + [sym_string_start] = ACTIONS(79), + }, + [152] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(597), + [sym_string_start] = ACTIONS(79), + }, + [153] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(599), + [sym_string_start] = ACTIONS(79), + }, + [154] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(601), + [sym_string_start] = ACTIONS(79), + }, + [155] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(603), + [sym_string_start] = ACTIONS(79), + }, + [156] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(605), + [sym_string_start] = ACTIONS(79), + }, + [157] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(607), + [sym_string_start] = ACTIONS(79), + }, + [158] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(609), + [sym_string_start] = ACTIONS(79), + }, + [159] = { + [sym_import_statement] = STATE(2293), + [sym_future_import_statement] = STATE(2293), + [sym_import_from_statement] = STATE(2293), + [sym_print_statement] = STATE(2293), + [sym_assert_statement] = STATE(2293), + [sym_expression_statement] = STATE(2293), + [sym_named_expression] = STATE(1584), + [sym__named_expression_lhs] = STATE(2527), + [sym_return_statement] = STATE(2293), + [sym_delete_statement] = STATE(2293), + [sym_raise_statement] = STATE(2293), + [sym_pass_statement] = STATE(2293), + [sym_break_statement] = STATE(2293), + [sym_continue_statement] = STATE(2293), + [sym_global_statement] = STATE(2293), + [sym_nonlocal_statement] = STATE(2293), + [sym_exec_statement] = STATE(2293), + [sym_pattern] = STATE(1484), + [sym_tuple_pattern] = STATE(1482), + [sym_list_pattern] = STATE(1482), + [sym_list_splat_pattern] = STATE(1482), + [sym_as_pattern] = STATE(1584), + [sym_expression] = STATE(1597), + [sym_primary_expression] = STATE(858), + [sym_not_operator] = STATE(1584), + [sym_boolean_operator] = STATE(1584), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_comparison_operator] = STATE(1584), + [sym_lambda] = STATE(1584), + [sym_assignment] = STATE(2236), + [sym_augmented_assignment] = STATE(2236), + [sym_pattern_list] = STATE(1496), + [sym_yield] = STATE(2236), + [sym_attribute] = STATE(519), + [sym_subscript] = STATE(519), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_conditional_expression] = STATE(1584), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_match] = ACTIONS(325), + [anon_sym_async] = ACTIONS(325), + [anon_sym_global] = ACTIONS(51), + [anon_sym_nonlocal] = ACTIONS(53), + [anon_sym_exec] = ACTIONS(55), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(63), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_not] = ACTIONS(67), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_lambda] = ACTIONS(69), + [anon_sym_yield] = ACTIONS(71), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(77), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(79), + }, + [160] = { + [sym_primary_expression] = STATE(988), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_attribute] = STATE(1110), + [sym_subscript] = STATE(1110), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(611), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(613), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(284), + [anon_sym_match] = ACTIONS(613), + [anon_sym_async] = ACTIONS(613), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(613), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(615), + [anon_sym_DASH] = ACTIONS(615), + [anon_sym_LBRACK] = ACTIONS(617), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_EQ] = ACTIONS(284), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [anon_sym_PLUS_EQ] = ACTIONS(295), + [anon_sym_DASH_EQ] = ACTIONS(295), + [anon_sym_STAR_EQ] = ACTIONS(295), + [anon_sym_SLASH_EQ] = ACTIONS(295), + [anon_sym_AT_EQ] = ACTIONS(295), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(295), + [anon_sym_PERCENT_EQ] = ACTIONS(295), + [anon_sym_STAR_STAR_EQ] = ACTIONS(295), + [anon_sym_GT_GT_EQ] = ACTIONS(295), + [anon_sym_LT_LT_EQ] = ACTIONS(295), + [anon_sym_AMP_EQ] = ACTIONS(295), + [anon_sym_CARET_EQ] = ACTIONS(295), + [anon_sym_PIPE_EQ] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(619), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(79), + }, + [161] = { + [sym_primary_expression] = STATE(988), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_attribute] = STATE(1110), + [sym_subscript] = STATE(1110), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(611), + [anon_sym_COMMA] = ACTIONS(621), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(613), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(624), + [anon_sym_match] = ACTIONS(613), + [anon_sym_async] = ACTIONS(613), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(613), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(615), + [anon_sym_DASH] = ACTIONS(615), + [anon_sym_LBRACK] = ACTIONS(617), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_EQ] = ACTIONS(624), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [anon_sym_PLUS_EQ] = ACTIONS(626), + [anon_sym_DASH_EQ] = ACTIONS(626), + [anon_sym_STAR_EQ] = ACTIONS(626), + [anon_sym_SLASH_EQ] = ACTIONS(626), + [anon_sym_AT_EQ] = ACTIONS(626), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(626), + [anon_sym_PERCENT_EQ] = ACTIONS(626), + [anon_sym_STAR_STAR_EQ] = ACTIONS(626), + [anon_sym_GT_GT_EQ] = ACTIONS(626), + [anon_sym_LT_LT_EQ] = ACTIONS(626), + [anon_sym_AMP_EQ] = ACTIONS(626), + [anon_sym_CARET_EQ] = ACTIONS(626), + [anon_sym_PIPE_EQ] = ACTIONS(626), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(619), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(79), + }, + [162] = { + [sym_primary_expression] = STATE(989), + [sym_binary_operator] = STATE(1160), + [sym_unary_operator] = STATE(1160), + [sym_attribute] = STATE(1160), + [sym_subscript] = STATE(1160), + [sym_call] = STATE(1160), + [sym_list] = STATE(1160), + [sym_set] = STATE(1160), + [sym_tuple] = STATE(1160), + [sym_dictionary] = STATE(1160), + [sym_list_comprehension] = STATE(1160), + [sym_dictionary_comprehension] = STATE(1160), + [sym_set_comprehension] = STATE(1160), + [sym_generator_expression] = STATE(1160), + [sym_parenthesized_expression] = STATE(1160), + [sym_concatenated_string] = STATE(1160), + [sym_string] = STATE(860), + [sym_await] = STATE(1160), + [sym_identifier] = ACTIONS(628), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(630), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(632), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(270), + [anon_sym_match] = ACTIONS(632), + [anon_sym_async] = ACTIONS(632), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(632), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(634), + [anon_sym_DASH] = ACTIONS(634), + [anon_sym_LBRACK] = ACTIONS(636), + [anon_sym_LBRACE] = ACTIONS(638), + [anon_sym_RBRACE] = ACTIONS(268), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(634), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(640), + [sym_type_conversion] = ACTIONS(268), + [sym_integer] = ACTIONS(628), + [sym_float] = ACTIONS(640), + [anon_sym_await] = ACTIONS(642), + [sym_true] = ACTIONS(628), + [sym_false] = ACTIONS(628), + [sym_none] = ACTIONS(628), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(644), + }, + [163] = { + [sym_primary_expression] = STATE(988), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_attribute] = STATE(1110), + [sym_subscript] = STATE(1110), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_from] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(611), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(613), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(613), + [anon_sym_async] = ACTIONS(613), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(613), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(617), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(619), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(79), + }, + [164] = { + [sym_primary_expression] = STATE(989), + [sym_binary_operator] = STATE(1160), + [sym_unary_operator] = STATE(1160), + [sym_attribute] = STATE(1160), + [sym_subscript] = STATE(1160), + [sym_call] = STATE(1160), + [sym_list] = STATE(1160), + [sym_set] = STATE(1160), + [sym_tuple] = STATE(1160), + [sym_dictionary] = STATE(1160), + [sym_list_comprehension] = STATE(1160), + [sym_dictionary_comprehension] = STATE(1160), + [sym_set_comprehension] = STATE(1160), + [sym_generator_expression] = STATE(1160), + [sym_parenthesized_expression] = STATE(1160), + [sym_concatenated_string] = STATE(1160), + [sym_string] = STATE(860), + [sym_await] = STATE(1160), + [sym_identifier] = ACTIONS(628), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(630), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(632), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(270), + [anon_sym_match] = ACTIONS(632), + [anon_sym_async] = ACTIONS(632), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(632), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(634), + [anon_sym_DASH] = ACTIONS(634), + [anon_sym_LBRACK] = ACTIONS(636), + [anon_sym_LBRACE] = ACTIONS(638), + [anon_sym_RBRACE] = ACTIONS(268), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(634), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(640), + [sym_type_conversion] = ACTIONS(268), + [sym_integer] = ACTIONS(628), + [sym_float] = ACTIONS(640), + [anon_sym_await] = ACTIONS(642), + [sym_true] = ACTIONS(628), + [sym_false] = ACTIONS(628), + [sym_none] = ACTIONS(628), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(644), + }, + [165] = { + [sym_primary_expression] = STATE(989), + [sym_binary_operator] = STATE(1160), + [sym_unary_operator] = STATE(1160), + [sym_attribute] = STATE(1160), + [sym_subscript] = STATE(1160), + [sym_call] = STATE(1160), + [sym_list] = STATE(1160), + [sym_set] = STATE(1160), + [sym_tuple] = STATE(1160), + [sym_dictionary] = STATE(1160), + [sym_list_comprehension] = STATE(1160), + [sym_dictionary_comprehension] = STATE(1160), + [sym_set_comprehension] = STATE(1160), + [sym_generator_expression] = STATE(1160), + [sym_parenthesized_expression] = STATE(1160), + [sym_concatenated_string] = STATE(1160), + [sym_string] = STATE(860), + [sym_await] = STATE(1160), + [sym_identifier] = ACTIONS(628), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(630), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(632), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(268), + [anon_sym_match] = ACTIONS(632), + [anon_sym_async] = ACTIONS(632), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(632), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(634), + [anon_sym_DASH] = ACTIONS(634), + [anon_sym_LBRACK] = ACTIONS(636), + [anon_sym_LBRACE] = ACTIONS(638), + [anon_sym_RBRACE] = ACTIONS(268), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(634), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(640), + [sym_type_conversion] = ACTIONS(268), + [sym_integer] = ACTIONS(628), + [sym_float] = ACTIONS(640), + [anon_sym_await] = ACTIONS(642), + [sym_true] = ACTIONS(628), + [sym_false] = ACTIONS(628), + [sym_none] = ACTIONS(628), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(644), + }, + [166] = { + [sym_primary_expression] = STATE(988), + [sym_binary_operator] = STATE(1110), + [sym_unary_operator] = STATE(1110), + [sym_attribute] = STATE(1110), + [sym_subscript] = STATE(1110), + [sym_call] = STATE(1110), + [sym_list] = STATE(1110), + [sym_set] = STATE(1110), + [sym_tuple] = STATE(1110), + [sym_dictionary] = STATE(1110), + [sym_list_comprehension] = STATE(1110), + [sym_dictionary_comprehension] = STATE(1110), + [sym_set_comprehension] = STATE(1110), + [sym_generator_expression] = STATE(1110), + [sym_parenthesized_expression] = STATE(1110), + [sym_concatenated_string] = STATE(1110), + [sym_string] = STATE(876), + [sym_await] = STATE(1110), + [sym_identifier] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(268), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_from] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(611), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(613), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(613), + [anon_sym_async] = ACTIONS(613), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(613), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(61), + [anon_sym_DASH] = ACTIONS(61), + [anon_sym_LBRACK] = ACTIONS(617), + [anon_sym_LBRACE] = ACTIONS(65), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(73), + [sym_integer] = ACTIONS(75), + [sym_float] = ACTIONS(73), + [anon_sym_await] = ACTIONS(619), + [sym_true] = ACTIONS(75), + [sym_false] = ACTIONS(75), + [sym_none] = ACTIONS(75), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym__newline] = ACTIONS(268), + [sym_string_start] = ACTIONS(79), + }, + [167] = { + [sym_primary_expression] = STATE(948), + [sym_binary_operator] = STATE(1150), + [sym_unary_operator] = STATE(1150), + [sym_attribute] = STATE(1150), + [sym_subscript] = STATE(1150), + [sym_call] = STATE(1150), + [sym_list] = STATE(1150), + [sym_set] = STATE(1150), + [sym_tuple] = STATE(1150), + [sym_dictionary] = STATE(1150), + [sym_list_comprehension] = STATE(1150), + [sym_dictionary_comprehension] = STATE(1150), + [sym_set_comprehension] = STATE(1150), + [sym_generator_expression] = STATE(1150), + [sym_parenthesized_expression] = STATE(1150), + [sym_concatenated_string] = STATE(1150), + [sym_string] = STATE(865), + [sym_await] = STATE(1150), + [sym_identifier] = ACTIONS(646), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(648), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(650), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(270), + [anon_sym_match] = ACTIONS(650), + [anon_sym_async] = ACTIONS(650), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(650), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(652), + [anon_sym_DASH] = ACTIONS(652), + [anon_sym_LBRACK] = ACTIONS(654), + [anon_sym_LBRACE] = ACTIONS(656), + [anon_sym_RBRACE] = ACTIONS(268), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(652), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(658), + [sym_integer] = ACTIONS(646), + [sym_float] = ACTIONS(658), + [anon_sym_await] = ACTIONS(660), + [sym_true] = ACTIONS(646), + [sym_false] = ACTIONS(646), + [sym_none] = ACTIONS(646), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(662), + }, + [168] = { + [sym_primary_expression] = STATE(1078), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(319), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(664), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(270), + [anon_sym_else] = ACTIONS(270), + [anon_sym_match] = ACTIONS(664), + [anon_sym_async] = ACTIONS(664), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(664), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(313), + [anon_sym_DASH] = ACTIONS(313), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(666), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(323), + }, + [169] = { + [sym_primary_expression] = STATE(1064), + [sym_binary_operator] = STATE(1273), + [sym_unary_operator] = STATE(1273), + [sym_attribute] = STATE(1273), + [sym_subscript] = STATE(1273), + [sym_call] = STATE(1273), + [sym_list] = STATE(1273), + [sym_set] = STATE(1273), + [sym_tuple] = STATE(1273), + [sym_dictionary] = STATE(1273), + [sym_list_comprehension] = STATE(1273), + [sym_dictionary_comprehension] = STATE(1273), + [sym_set_comprehension] = STATE(1273), + [sym_generator_expression] = STATE(1273), + [sym_parenthesized_expression] = STATE(1273), + [sym_concatenated_string] = STATE(1273), + [sym_string] = STATE(976), + [sym_await] = STATE(1273), + [sym_identifier] = ACTIONS(668), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(670), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(672), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(672), + [anon_sym_async] = ACTIONS(672), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(672), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(674), + [anon_sym_DASH] = ACTIONS(674), + [anon_sym_LBRACK] = ACTIONS(676), + [anon_sym_LBRACE] = ACTIONS(678), + [anon_sym_EQ] = ACTIONS(680), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(674), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(682), + [sym_integer] = ACTIONS(668), + [sym_float] = ACTIONS(682), + [anon_sym_await] = ACTIONS(684), + [sym_true] = ACTIONS(668), + [sym_false] = ACTIONS(668), + [sym_none] = ACTIONS(668), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(686), + }, + [170] = { + [sym_primary_expression] = STATE(1064), + [sym_binary_operator] = STATE(1273), + [sym_unary_operator] = STATE(1273), + [sym_attribute] = STATE(1273), + [sym_subscript] = STATE(1273), + [sym_call] = STATE(1273), + [sym_list] = STATE(1273), + [sym_set] = STATE(1273), + [sym_tuple] = STATE(1273), + [sym_dictionary] = STATE(1273), + [sym_list_comprehension] = STATE(1273), + [sym_dictionary_comprehension] = STATE(1273), + [sym_set_comprehension] = STATE(1273), + [sym_generator_expression] = STATE(1273), + [sym_parenthesized_expression] = STATE(1273), + [sym_concatenated_string] = STATE(1273), + [sym_string] = STATE(976), + [sym_await] = STATE(1273), + [sym_identifier] = ACTIONS(668), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(670), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(672), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(672), + [anon_sym_async] = ACTIONS(672), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(672), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(674), + [anon_sym_DASH] = ACTIONS(674), + [anon_sym_LBRACK] = ACTIONS(676), + [anon_sym_LBRACE] = ACTIONS(678), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(674), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(682), + [sym_integer] = ACTIONS(668), + [sym_float] = ACTIONS(682), + [anon_sym_await] = ACTIONS(684), + [sym_true] = ACTIONS(668), + [sym_false] = ACTIONS(668), + [sym_none] = ACTIONS(668), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(686), + }, + [171] = { + [sym_primary_expression] = STATE(1092), + [sym_binary_operator] = STATE(1349), + [sym_unary_operator] = STATE(1349), + [sym_attribute] = STATE(1349), + [sym_subscript] = STATE(1349), + [sym_call] = STATE(1349), + [sym_list] = STATE(1349), + [sym_set] = STATE(1349), + [sym_tuple] = STATE(1349), + [sym_dictionary] = STATE(1349), + [sym_list_comprehension] = STATE(1349), + [sym_dictionary_comprehension] = STATE(1349), + [sym_set_comprehension] = STATE(1349), + [sym_generator_expression] = STATE(1349), + [sym_parenthesized_expression] = STATE(1349), + [sym_concatenated_string] = STATE(1349), + [sym_string] = STATE(1086), + [sym_await] = STATE(1349), + [sym_identifier] = ACTIONS(688), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(690), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(692), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(692), + [anon_sym_async] = ACTIONS(692), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(692), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(694), + [anon_sym_DASH] = ACTIONS(694), + [anon_sym_LBRACK] = ACTIONS(696), + [anon_sym_LBRACE] = ACTIONS(698), + [anon_sym_EQ] = ACTIONS(680), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(694), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(700), + [sym_integer] = ACTIONS(688), + [sym_float] = ACTIONS(700), + [anon_sym_await] = ACTIONS(702), + [sym_true] = ACTIONS(688), + [sym_false] = ACTIONS(688), + [sym_none] = ACTIONS(688), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(704), + }, + [172] = { + [sym_primary_expression] = STATE(948), + [sym_binary_operator] = STATE(1150), + [sym_unary_operator] = STATE(1150), + [sym_attribute] = STATE(1150), + [sym_subscript] = STATE(1150), + [sym_call] = STATE(1150), + [sym_list] = STATE(1150), + [sym_set] = STATE(1150), + [sym_tuple] = STATE(1150), + [sym_dictionary] = STATE(1150), + [sym_list_comprehension] = STATE(1150), + [sym_dictionary_comprehension] = STATE(1150), + [sym_set_comprehension] = STATE(1150), + [sym_generator_expression] = STATE(1150), + [sym_parenthesized_expression] = STATE(1150), + [sym_concatenated_string] = STATE(1150), + [sym_string] = STATE(865), + [sym_await] = STATE(1150), + [sym_identifier] = ACTIONS(646), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(648), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(650), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(268), + [anon_sym_match] = ACTIONS(650), + [anon_sym_async] = ACTIONS(650), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(650), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(652), + [anon_sym_DASH] = ACTIONS(652), + [anon_sym_LBRACK] = ACTIONS(654), + [anon_sym_LBRACE] = ACTIONS(656), + [anon_sym_RBRACE] = ACTIONS(268), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(652), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(658), + [sym_integer] = ACTIONS(646), + [sym_float] = ACTIONS(658), + [anon_sym_await] = ACTIONS(660), + [sym_true] = ACTIONS(646), + [sym_false] = ACTIONS(646), + [sym_none] = ACTIONS(646), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(662), + }, + [173] = { + [sym_primary_expression] = STATE(1092), + [sym_binary_operator] = STATE(1349), + [sym_unary_operator] = STATE(1349), + [sym_attribute] = STATE(1349), + [sym_subscript] = STATE(1349), + [sym_call] = STATE(1349), + [sym_list] = STATE(1349), + [sym_set] = STATE(1349), + [sym_tuple] = STATE(1349), + [sym_dictionary] = STATE(1349), + [sym_list_comprehension] = STATE(1349), + [sym_dictionary_comprehension] = STATE(1349), + [sym_set_comprehension] = STATE(1349), + [sym_generator_expression] = STATE(1349), + [sym_parenthesized_expression] = STATE(1349), + [sym_concatenated_string] = STATE(1349), + [sym_string] = STATE(1086), + [sym_await] = STATE(1349), + [sym_identifier] = ACTIONS(688), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(690), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(692), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(692), + [anon_sym_async] = ACTIONS(692), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(692), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(694), + [anon_sym_DASH] = ACTIONS(694), + [anon_sym_LBRACK] = ACTIONS(696), + [anon_sym_LBRACE] = ACTIONS(698), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(694), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(700), + [sym_integer] = ACTIONS(688), + [sym_float] = ACTIONS(700), + [anon_sym_await] = ACTIONS(702), + [sym_true] = ACTIONS(688), + [sym_false] = ACTIONS(688), + [sym_none] = ACTIONS(688), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(704), + }, + [174] = { + [sym_primary_expression] = STATE(1149), + [sym_binary_operator] = STATE(1327), + [sym_unary_operator] = STATE(1327), + [sym_attribute] = STATE(1327), + [sym_subscript] = STATE(1327), + [sym_call] = STATE(1327), + [sym_list] = STATE(1327), + [sym_set] = STATE(1327), + [sym_tuple] = STATE(1327), + [sym_dictionary] = STATE(1327), + [sym_list_comprehension] = STATE(1327), + [sym_dictionary_comprehension] = STATE(1327), + [sym_set_comprehension] = STATE(1327), + [sym_generator_expression] = STATE(1327), + [sym_parenthesized_expression] = STATE(1327), + [sym_concatenated_string] = STATE(1327), + [sym_string] = STATE(1047), + [sym_await] = STATE(1327), + [sym_identifier] = ACTIONS(706), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(708), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(710), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(270), + [anon_sym_match] = ACTIONS(710), + [anon_sym_async] = ACTIONS(710), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(710), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(712), + [anon_sym_DASH] = ACTIONS(712), + [anon_sym_LBRACK] = ACTIONS(714), + [anon_sym_RBRACK] = ACTIONS(268), + [anon_sym_LBRACE] = ACTIONS(716), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(712), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(718), + [sym_integer] = ACTIONS(706), + [sym_float] = ACTIONS(718), + [anon_sym_await] = ACTIONS(720), + [sym_true] = ACTIONS(706), + [sym_false] = ACTIONS(706), + [sym_none] = ACTIONS(706), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(722), + }, + [175] = { + [sym_primary_expression] = STATE(1046), + [sym_binary_operator] = STATE(1302), + [sym_unary_operator] = STATE(1302), + [sym_attribute] = STATE(1302), + [sym_subscript] = STATE(1302), + [sym_call] = STATE(1302), + [sym_list] = STATE(1302), + [sym_set] = STATE(1302), + [sym_tuple] = STATE(1302), + [sym_dictionary] = STATE(1302), + [sym_list_comprehension] = STATE(1302), + [sym_dictionary_comprehension] = STATE(1302), + [sym_set_comprehension] = STATE(1302), + [sym_generator_expression] = STATE(1302), + [sym_parenthesized_expression] = STATE(1302), + [sym_concatenated_string] = STATE(1302), + [sym_string] = STATE(933), + [sym_await] = STATE(1302), + [sym_identifier] = ACTIONS(724), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(726), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(728), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(728), + [anon_sym_async] = ACTIONS(728), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(728), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(730), + [anon_sym_DASH] = ACTIONS(730), + [anon_sym_LBRACK] = ACTIONS(732), + [anon_sym_RBRACK] = ACTIONS(268), + [anon_sym_LBRACE] = ACTIONS(734), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(730), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(736), + [sym_integer] = ACTIONS(724), + [sym_float] = ACTIONS(736), + [anon_sym_await] = ACTIONS(738), + [sym_true] = ACTIONS(724), + [sym_false] = ACTIONS(724), + [sym_none] = ACTIONS(724), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(740), + }, + [176] = { + [sym_primary_expression] = STATE(1078), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(319), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(664), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(268), + [anon_sym_else] = ACTIONS(270), + [anon_sym_match] = ACTIONS(664), + [anon_sym_async] = ACTIONS(664), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(664), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(313), + [anon_sym_DASH] = ACTIONS(313), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(666), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(323), + }, + [177] = { + [sym_primary_expression] = STATE(1046), + [sym_binary_operator] = STATE(1302), + [sym_unary_operator] = STATE(1302), + [sym_attribute] = STATE(1302), + [sym_subscript] = STATE(1302), + [sym_call] = STATE(1302), + [sym_list] = STATE(1302), + [sym_set] = STATE(1302), + [sym_tuple] = STATE(1302), + [sym_dictionary] = STATE(1302), + [sym_list_comprehension] = STATE(1302), + [sym_dictionary_comprehension] = STATE(1302), + [sym_set_comprehension] = STATE(1302), + [sym_generator_expression] = STATE(1302), + [sym_parenthesized_expression] = STATE(1302), + [sym_concatenated_string] = STATE(1302), + [sym_string] = STATE(933), + [sym_await] = STATE(1302), + [sym_identifier] = ACTIONS(724), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(726), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(728), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(728), + [anon_sym_async] = ACTIONS(728), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(728), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(730), + [anon_sym_DASH] = ACTIONS(730), + [anon_sym_LBRACK] = ACTIONS(732), + [anon_sym_RBRACK] = ACTIONS(275), + [anon_sym_LBRACE] = ACTIONS(734), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(730), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(736), + [sym_integer] = ACTIONS(724), + [sym_float] = ACTIONS(736), + [anon_sym_await] = ACTIONS(738), + [sym_true] = ACTIONS(724), + [sym_false] = ACTIONS(724), + [sym_none] = ACTIONS(724), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(740), + }, + [178] = { + [sym_primary_expression] = STATE(1064), + [sym_binary_operator] = STATE(1273), + [sym_unary_operator] = STATE(1273), + [sym_attribute] = STATE(1273), + [sym_subscript] = STATE(1273), + [sym_call] = STATE(1273), + [sym_list] = STATE(1273), + [sym_set] = STATE(1273), + [sym_tuple] = STATE(1273), + [sym_dictionary] = STATE(1273), + [sym_list_comprehension] = STATE(1273), + [sym_dictionary_comprehension] = STATE(1273), + [sym_set_comprehension] = STATE(1273), + [sym_generator_expression] = STATE(1273), + [sym_parenthesized_expression] = STATE(1273), + [sym_concatenated_string] = STATE(1273), + [sym_string] = STATE(976), + [sym_await] = STATE(1273), + [sym_identifier] = ACTIONS(668), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(670), + [anon_sym_RPAREN] = ACTIONS(275), + [anon_sym_COMMA] = ACTIONS(275), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(672), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(672), + [anon_sym_async] = ACTIONS(672), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(672), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(674), + [anon_sym_DASH] = ACTIONS(674), + [anon_sym_LBRACK] = ACTIONS(676), + [anon_sym_LBRACE] = ACTIONS(678), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(674), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(682), + [sym_integer] = ACTIONS(668), + [sym_float] = ACTIONS(682), + [anon_sym_await] = ACTIONS(684), + [sym_true] = ACTIONS(668), + [sym_false] = ACTIONS(668), + [sym_none] = ACTIONS(668), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(686), + }, + [179] = { + [sym_primary_expression] = STATE(1046), + [sym_binary_operator] = STATE(1302), + [sym_unary_operator] = STATE(1302), + [sym_attribute] = STATE(1302), + [sym_subscript] = STATE(1302), + [sym_call] = STATE(1302), + [sym_list] = STATE(1302), + [sym_set] = STATE(1302), + [sym_tuple] = STATE(1302), + [sym_dictionary] = STATE(1302), + [sym_list_comprehension] = STATE(1302), + [sym_dictionary_comprehension] = STATE(1302), + [sym_set_comprehension] = STATE(1302), + [sym_generator_expression] = STATE(1302), + [sym_parenthesized_expression] = STATE(1302), + [sym_concatenated_string] = STATE(1302), + [sym_string] = STATE(933), + [sym_await] = STATE(1302), + [sym_identifier] = ACTIONS(724), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(726), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(728), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(728), + [anon_sym_async] = ACTIONS(728), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(728), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(730), + [anon_sym_DASH] = ACTIONS(730), + [anon_sym_LBRACK] = ACTIONS(732), + [anon_sym_RBRACK] = ACTIONS(268), + [anon_sym_LBRACE] = ACTIONS(734), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(730), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(736), + [sym_integer] = ACTIONS(724), + [sym_float] = ACTIONS(736), + [anon_sym_await] = ACTIONS(738), + [sym_true] = ACTIONS(724), + [sym_false] = ACTIONS(724), + [sym_none] = ACTIONS(724), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(740), + }, + [180] = { + [sym_primary_expression] = STATE(1149), + [sym_binary_operator] = STATE(1327), + [sym_unary_operator] = STATE(1327), + [sym_attribute] = STATE(1327), + [sym_subscript] = STATE(1327), + [sym_call] = STATE(1327), + [sym_list] = STATE(1327), + [sym_set] = STATE(1327), + [sym_tuple] = STATE(1327), + [sym_dictionary] = STATE(1327), + [sym_list_comprehension] = STATE(1327), + [sym_dictionary_comprehension] = STATE(1327), + [sym_set_comprehension] = STATE(1327), + [sym_generator_expression] = STATE(1327), + [sym_parenthesized_expression] = STATE(1327), + [sym_concatenated_string] = STATE(1327), + [sym_string] = STATE(1047), + [sym_await] = STATE(1327), + [sym_identifier] = ACTIONS(706), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(708), + [anon_sym_COMMA] = ACTIONS(621), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(710), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(710), + [anon_sym_async] = ACTIONS(710), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(710), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(712), + [anon_sym_DASH] = ACTIONS(712), + [anon_sym_LBRACK] = ACTIONS(714), + [anon_sym_RBRACK] = ACTIONS(621), + [anon_sym_LBRACE] = ACTIONS(716), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(712), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(718), + [sym_integer] = ACTIONS(706), + [sym_float] = ACTIONS(718), + [anon_sym_await] = ACTIONS(720), + [sym_true] = ACTIONS(706), + [sym_false] = ACTIONS(706), + [sym_none] = ACTIONS(706), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(722), + }, + [181] = { + [sym_primary_expression] = STATE(1078), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(319), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(626), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(664), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(626), + [anon_sym_match] = ACTIONS(664), + [anon_sym_async] = ACTIONS(664), + [anon_sym_in] = ACTIONS(624), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(664), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(305), + [anon_sym_DASH] = ACTIONS(305), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(626), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_PLUS_EQ] = ACTIONS(626), + [anon_sym_DASH_EQ] = ACTIONS(626), + [anon_sym_STAR_EQ] = ACTIONS(626), + [anon_sym_SLASH_EQ] = ACTIONS(626), + [anon_sym_AT_EQ] = ACTIONS(626), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(626), + [anon_sym_PERCENT_EQ] = ACTIONS(626), + [anon_sym_STAR_STAR_EQ] = ACTIONS(626), + [anon_sym_GT_GT_EQ] = ACTIONS(626), + [anon_sym_LT_LT_EQ] = ACTIONS(626), + [anon_sym_AMP_EQ] = ACTIONS(626), + [anon_sym_CARET_EQ] = ACTIONS(626), + [anon_sym_PIPE_EQ] = ACTIONS(626), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(666), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(323), + }, + [182] = { + [sym_primary_expression] = STATE(1149), + [sym_binary_operator] = STATE(1327), + [sym_unary_operator] = STATE(1327), + [sym_attribute] = STATE(1327), + [sym_subscript] = STATE(1327), + [sym_call] = STATE(1327), + [sym_list] = STATE(1327), + [sym_set] = STATE(1327), + [sym_tuple] = STATE(1327), + [sym_dictionary] = STATE(1327), + [sym_list_comprehension] = STATE(1327), + [sym_dictionary_comprehension] = STATE(1327), + [sym_set_comprehension] = STATE(1327), + [sym_generator_expression] = STATE(1327), + [sym_parenthesized_expression] = STATE(1327), + [sym_concatenated_string] = STATE(1327), + [sym_string] = STATE(1047), + [sym_await] = STATE(1327), + [sym_identifier] = ACTIONS(706), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(708), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(710), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(268), + [anon_sym_match] = ACTIONS(710), + [anon_sym_async] = ACTIONS(710), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(710), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(712), + [anon_sym_DASH] = ACTIONS(712), + [anon_sym_LBRACK] = ACTIONS(714), + [anon_sym_RBRACK] = ACTIONS(268), + [anon_sym_LBRACE] = ACTIONS(716), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(712), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(718), + [sym_integer] = ACTIONS(706), + [sym_float] = ACTIONS(718), + [anon_sym_await] = ACTIONS(720), + [sym_true] = ACTIONS(706), + [sym_false] = ACTIONS(706), + [sym_none] = ACTIONS(706), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(722), + }, + [183] = { + [sym_primary_expression] = STATE(1092), + [sym_binary_operator] = STATE(1349), + [sym_unary_operator] = STATE(1349), + [sym_attribute] = STATE(1349), + [sym_subscript] = STATE(1349), + [sym_call] = STATE(1349), + [sym_list] = STATE(1349), + [sym_set] = STATE(1349), + [sym_tuple] = STATE(1349), + [sym_dictionary] = STATE(1349), + [sym_list_comprehension] = STATE(1349), + [sym_dictionary_comprehension] = STATE(1349), + [sym_set_comprehension] = STATE(1349), + [sym_generator_expression] = STATE(1349), + [sym_parenthesized_expression] = STATE(1349), + [sym_concatenated_string] = STATE(1349), + [sym_string] = STATE(1086), + [sym_await] = STATE(1349), + [sym_identifier] = ACTIONS(688), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(690), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(692), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(692), + [anon_sym_async] = ACTIONS(692), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(692), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(694), + [anon_sym_DASH] = ACTIONS(694), + [anon_sym_LBRACK] = ACTIONS(696), + [anon_sym_LBRACE] = ACTIONS(698), + [anon_sym_EQ] = ACTIONS(270), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(694), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(700), + [sym_integer] = ACTIONS(688), + [sym_float] = ACTIONS(700), + [anon_sym_await] = ACTIONS(702), + [sym_true] = ACTIONS(688), + [sym_false] = ACTIONS(688), + [sym_none] = ACTIONS(688), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(704), + }, + [184] = { + [sym_primary_expression] = STATE(1064), + [sym_binary_operator] = STATE(1273), + [sym_unary_operator] = STATE(1273), + [sym_attribute] = STATE(1273), + [sym_subscript] = STATE(1273), + [sym_call] = STATE(1273), + [sym_list] = STATE(1273), + [sym_set] = STATE(1273), + [sym_tuple] = STATE(1273), + [sym_dictionary] = STATE(1273), + [sym_list_comprehension] = STATE(1273), + [sym_dictionary_comprehension] = STATE(1273), + [sym_set_comprehension] = STATE(1273), + [sym_generator_expression] = STATE(1273), + [sym_parenthesized_expression] = STATE(1273), + [sym_concatenated_string] = STATE(1273), + [sym_string] = STATE(976), + [sym_await] = STATE(1273), + [sym_identifier] = ACTIONS(668), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(670), + [anon_sym_RPAREN] = ACTIONS(268), + [anon_sym_COMMA] = ACTIONS(268), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(672), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(672), + [anon_sym_async] = ACTIONS(672), + [anon_sym_for] = ACTIONS(270), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(672), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(674), + [anon_sym_DASH] = ACTIONS(674), + [anon_sym_LBRACK] = ACTIONS(676), + [anon_sym_LBRACE] = ACTIONS(678), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(674), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(682), + [sym_integer] = ACTIONS(668), + [sym_float] = ACTIONS(682), + [anon_sym_await] = ACTIONS(684), + [sym_true] = ACTIONS(668), + [sym_false] = ACTIONS(668), + [sym_none] = ACTIONS(668), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(686), + }, + [185] = { + [sym_primary_expression] = STATE(1078), + [sym_binary_operator] = STATE(1234), + [sym_unary_operator] = STATE(1234), + [sym_attribute] = STATE(1234), + [sym_subscript] = STATE(1234), + [sym_call] = STATE(1234), + [sym_list] = STATE(1234), + [sym_set] = STATE(1234), + [sym_tuple] = STATE(1234), + [sym_dictionary] = STATE(1234), + [sym_list_comprehension] = STATE(1234), + [sym_dictionary_comprehension] = STATE(1234), + [sym_set_comprehension] = STATE(1234), + [sym_generator_expression] = STATE(1234), + [sym_parenthesized_expression] = STATE(1234), + [sym_concatenated_string] = STATE(1234), + [sym_string] = STATE(956), + [sym_await] = STATE(1234), + [sym_identifier] = ACTIONS(319), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(301), + [anon_sym_COMMA] = ACTIONS(295), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(664), + [anon_sym_GT_GT] = ACTIONS(270), + [anon_sym_COLON] = ACTIONS(295), + [anon_sym_match] = ACTIONS(664), + [anon_sym_async] = ACTIONS(664), + [anon_sym_in] = ACTIONS(284), + [anon_sym_STAR_STAR] = ACTIONS(270), + [anon_sym_exec] = ACTIONS(664), + [anon_sym_AT] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(270), + [anon_sym_PLUS] = ACTIONS(305), + [anon_sym_DASH] = ACTIONS(305), + [anon_sym_LBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(309), + [anon_sym_EQ] = ACTIONS(295), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(270), + [anon_sym_SLASH_SLASH] = ACTIONS(270), + [anon_sym_AMP] = ACTIONS(270), + [anon_sym_CARET] = ACTIONS(270), + [anon_sym_LT_LT] = ACTIONS(270), + [anon_sym_TILDE] = ACTIONS(313), + [anon_sym_PLUS_EQ] = ACTIONS(295), + [anon_sym_DASH_EQ] = ACTIONS(295), + [anon_sym_STAR_EQ] = ACTIONS(295), + [anon_sym_SLASH_EQ] = ACTIONS(295), + [anon_sym_AT_EQ] = ACTIONS(295), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(295), + [anon_sym_PERCENT_EQ] = ACTIONS(295), + [anon_sym_STAR_STAR_EQ] = ACTIONS(295), + [anon_sym_GT_GT_EQ] = ACTIONS(295), + [anon_sym_LT_LT_EQ] = ACTIONS(295), + [anon_sym_AMP_EQ] = ACTIONS(295), + [anon_sym_CARET_EQ] = ACTIONS(295), + [anon_sym_PIPE_EQ] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(317), + [sym_integer] = ACTIONS(319), + [sym_float] = ACTIONS(317), + [anon_sym_await] = ACTIONS(666), + [sym_true] = ACTIONS(319), + [sym_false] = ACTIONS(319), + [sym_none] = ACTIONS(319), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(323), + }, + [186] = { + [sym_primary_expression] = STATE(1092), + [sym_binary_operator] = STATE(1349), + [sym_unary_operator] = STATE(1349), + [sym_attribute] = STATE(1349), + [sym_subscript] = STATE(1349), + [sym_call] = STATE(1349), + [sym_list] = STATE(1349), + [sym_set] = STATE(1349), + [sym_tuple] = STATE(1349), + [sym_dictionary] = STATE(1349), + [sym_list_comprehension] = STATE(1349), + [sym_dictionary_comprehension] = STATE(1349), + [sym_set_comprehension] = STATE(1349), + [sym_generator_expression] = STATE(1349), + [sym_parenthesized_expression] = STATE(1349), + [sym_concatenated_string] = STATE(1349), + [sym_string] = STATE(1086), + [sym_await] = STATE(1349), + [sym_identifier] = ACTIONS(688), + [anon_sym_DOT] = ACTIONS(270), + [anon_sym_LPAREN] = ACTIONS(690), + [anon_sym_RPAREN] = ACTIONS(621), + [anon_sym_COMMA] = ACTIONS(621), + [anon_sym_as] = ACTIONS(270), + [anon_sym_STAR] = ACTIONS(270), + [anon_sym_print] = ACTIONS(692), + [anon_sym_GT_GT] = ACTIONS(268), + [anon_sym_COLON_EQ] = ACTIONS(282), + [anon_sym_if] = ACTIONS(270), + [anon_sym_match] = ACTIONS(692), + [anon_sym_async] = ACTIONS(692), + [anon_sym_in] = ACTIONS(270), + [anon_sym_STAR_STAR] = ACTIONS(268), + [anon_sym_exec] = ACTIONS(692), + [anon_sym_AT] = ACTIONS(268), + [anon_sym_PIPE] = ACTIONS(268), + [anon_sym_PLUS] = ACTIONS(694), + [anon_sym_DASH] = ACTIONS(694), + [anon_sym_LBRACK] = ACTIONS(696), + [anon_sym_LBRACE] = ACTIONS(698), + [anon_sym_not] = ACTIONS(270), + [anon_sym_and] = ACTIONS(270), + [anon_sym_or] = ACTIONS(270), + [anon_sym_SLASH] = ACTIONS(270), + [anon_sym_PERCENT] = ACTIONS(268), + [anon_sym_SLASH_SLASH] = ACTIONS(268), + [anon_sym_AMP] = ACTIONS(268), + [anon_sym_CARET] = ACTIONS(268), + [anon_sym_LT_LT] = ACTIONS(268), + [anon_sym_TILDE] = ACTIONS(694), + [anon_sym_LT] = ACTIONS(270), + [anon_sym_LT_EQ] = ACTIONS(268), + [anon_sym_EQ_EQ] = ACTIONS(268), + [anon_sym_BANG_EQ] = ACTIONS(268), + [anon_sym_GT_EQ] = ACTIONS(268), + [anon_sym_GT] = ACTIONS(270), + [anon_sym_LT_GT] = ACTIONS(268), + [anon_sym_is] = ACTIONS(270), + [sym_ellipsis] = ACTIONS(700), + [sym_integer] = ACTIONS(688), + [sym_float] = ACTIONS(700), + [anon_sym_await] = ACTIONS(702), + [sym_true] = ACTIONS(688), + [sym_false] = ACTIONS(688), + [sym_none] = ACTIONS(688), + [sym_comment] = ACTIONS(3), + [sym_line_continuation] = ACTIONS(3), + [sym_string_start] = ACTIONS(704), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 27, + ACTIONS(9), 1, + sym_identifier, + ACTIONS(15), 1, + anon_sym_LPAREN, + ACTIONS(63), 1, + anon_sym_LBRACK, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(71), 1, + anon_sym_yield, + ACTIONS(77), 1, + anon_sym_await, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(742), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1484), 1, + sym_pattern, + STATE(1496), 1, + sym_pattern_list, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + STATE(519), 2, + sym_attribute, + sym_subscript, + STATE(1932), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(325), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(2281), 5, + sym_assignment, + sym_augmented_assignment, + sym__right_hand_side, + sym_list_splat_or_expressions, + sym_yield, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [119] = 27, + ACTIONS(9), 1, + sym_identifier, + ACTIONS(15), 1, + anon_sym_LPAREN, + ACTIONS(63), 1, + anon_sym_LBRACK, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(71), 1, + anon_sym_yield, + ACTIONS(77), 1, + anon_sym_await, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(742), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1484), 1, + sym_pattern, + STATE(1496), 1, + sym_pattern_list, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + STATE(519), 2, + sym_attribute, + sym_subscript, + STATE(1932), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(325), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(2213), 5, + sym_assignment, + sym_augmented_assignment, + sym__right_hand_side, + sym_list_splat_or_expressions, + sym_yield, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [238] = 27, + ACTIONS(9), 1, + sym_identifier, + ACTIONS(15), 1, + anon_sym_LPAREN, + ACTIONS(63), 1, + anon_sym_LBRACK, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(71), 1, + anon_sym_yield, + ACTIONS(77), 1, + anon_sym_await, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(742), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1484), 1, + sym_pattern, + STATE(1496), 1, + sym_pattern_list, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + STATE(519), 2, + sym_attribute, + sym_subscript, + STATE(1932), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(325), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(2282), 5, + sym_assignment, + sym_augmented_assignment, + sym__right_hand_side, + sym_list_splat_or_expressions, + sym_yield, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [357] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(748), 1, + anon_sym_RPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1522), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2074), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2430), 1, + sym__collection_elements, + STATE(2433), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [478] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(774), 1, + anon_sym_RBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1511), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2328), 1, + sym__patterns, + STATE(2334), 1, + sym__collection_elements, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [597] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(784), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1531), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2164), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2386), 1, + sym__collection_elements, + STATE(2446), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [718] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(786), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1523), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2343), 1, + sym__collection_elements, + STATE(2352), 1, + sym__patterns, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [837] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(788), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1522), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2074), 1, + sym_yield, + STATE(2341), 1, + sym__patterns, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2430), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [958] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(790), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1520), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2067), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2437), 1, + sym__collection_elements, + STATE(2446), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1079] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(792), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1515), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2352), 1, + sym__patterns, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2428), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1198] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(794), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1513), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2429), 1, + sym__patterns, + STATE(2439), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1317] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(796), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1515), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2404), 1, + sym__patterns, + STATE(2428), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1436] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(798), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1522), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2074), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2430), 1, + sym__collection_elements, + STATE(2446), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1557] = 30, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(800), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1519), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2107), 1, + sym_parenthesized_list_splat, + STATE(2110), 1, + sym_list_splat, + STATE(2165), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2392), 1, + sym__collection_elements, + STATE(2433), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1680] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(802), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1527), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2352), 1, + sym__patterns, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2379), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1799] = 29, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(804), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1522), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2074), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2378), 1, + sym__patterns, + STATE(2430), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [1920] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(806), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1515), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2328), 1, + sym__patterns, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2428), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2039] = 30, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(744), 1, + sym_identifier, + ACTIONS(746), 1, + anon_sym_LPAREN, + ACTIONS(750), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(762), 1, + anon_sym_await, + ACTIONS(808), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1509), 1, + sym_expression, + STATE(2065), 1, + sym_pattern, + STATE(2155), 1, + sym_yield, + STATE(2200), 1, + sym_list_splat, + STATE(2208), 1, + sym_parenthesized_list_splat, + STATE(2327), 1, + sym__collection_elements, + STATE(2341), 1, + sym__patterns, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1272), 2, + sym_attribute, + sym_subscript, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(752), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2162] = 28, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(764), 1, + sym_identifier, + ACTIONS(766), 1, + anon_sym_LPAREN, + ACTIONS(768), 1, + anon_sym_STAR, + ACTIONS(772), 1, + anon_sym_LBRACK, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(782), 1, + anon_sym_await, + ACTIONS(810), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1515), 1, + sym_expression, + STATE(2163), 1, + sym_pattern, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2428), 1, + sym__collection_elements, + STATE(2429), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1300), 2, + sym_attribute, + sym_subscript, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(770), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2281] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(816), 1, + anon_sym_COMMA, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(824), 1, + anon_sym_RBRACE, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1503), 1, + sym_expression, + STATE(1722), 1, + sym_pair, + STATE(2189), 1, + sym_dictionary_splat, + STATE(2506), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2399] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(834), 1, + anon_sym_COMMA, + ACTIONS(836), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1499), 1, + sym_expression, + STATE(1662), 1, + sym_pair, + STATE(2173), 1, + sym_dictionary_splat, + STATE(2455), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2517] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(838), 1, + anon_sym_COMMA, + ACTIONS(840), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1506), 1, + sym_expression, + STATE(1666), 1, + sym_pair, + STATE(2140), 1, + sym_dictionary_splat, + STATE(2339), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2635] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(842), 1, + anon_sym_COMMA, + ACTIONS(844), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1501), 1, + sym_expression, + STATE(1668), 1, + sym_pair, + STATE(2083), 1, + sym_dictionary_splat, + STATE(2424), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2753] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(846), 1, + anon_sym_COMMA, + ACTIONS(848), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1500), 1, + sym_expression, + STATE(1663), 1, + sym_pair, + STATE(2092), 1, + sym_dictionary_splat, + STATE(2409), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2871] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(850), 1, + anon_sym_COMMA, + ACTIONS(852), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1502), 1, + sym_expression, + STATE(1669), 1, + sym_pair, + STATE(2135), 1, + sym_dictionary_splat, + STATE(2358), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [2989] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(854), 1, + anon_sym_COMMA, + ACTIONS(856), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1505), 1, + sym_expression, + STATE(1654), 1, + sym_pair, + STATE(2161), 1, + sym_dictionary_splat, + STATE(2371), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3107] = 28, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_LPAREN, + ACTIONS(818), 1, + anon_sym_STAR, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(858), 1, + anon_sym_COMMA, + ACTIONS(860), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1504), 1, + sym_expression, + STATE(1708), 1, + sym_pair, + STATE(2143), 1, + sym_dictionary_splat, + STATE(2356), 1, + sym__collection_elements, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1991), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3225] = 21, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(313), 1, + anon_sym_TILDE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(866), 1, + anon_sym_STAR, + ACTIONS(872), 1, + anon_sym_in, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(1481), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(305), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + ACTIONS(870), 15, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [3328] = 21, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(313), 1, + anon_sym_TILDE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(866), 1, + anon_sym_STAR, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + ACTIONS(880), 1, + anon_sym_in, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(1481), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(305), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + ACTIONS(878), 15, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [3431] = 25, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(882), 1, + sym_identifier, + ACTIONS(884), 1, + anon_sym_LPAREN, + ACTIONS(888), 1, + anon_sym_LBRACK, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(894), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1533), 1, + sym_expression, + STATE(2285), 1, + sym_pattern, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + STATE(1151), 2, + sym_attribute, + sym_subscript, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(886), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1859), 4, + sym_expression_list, + sym_pattern_list, + sym_yield, + sym__f_expression, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3542] = 25, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(882), 1, + sym_identifier, + ACTIONS(884), 1, + anon_sym_LPAREN, + ACTIONS(888), 1, + anon_sym_LBRACK, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(894), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1533), 1, + sym_expression, + STATE(2285), 1, + sym_pattern, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + STATE(1151), 2, + sym_attribute, + sym_subscript, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(886), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1825), 4, + sym_expression_list, + sym_pattern_list, + sym_yield, + sym__f_expression, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3653] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(900), 1, + anon_sym_RPAREN, + ACTIONS(902), 1, + anon_sym_COMMA, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1530), 1, + sym_expression, + STATE(2193), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2192), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3762] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(914), 1, + anon_sym_RPAREN, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1512), 1, + sym_expression, + STATE(2074), 1, + sym_yield, + STATE(2156), 1, + sym_with_item, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2430), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3873] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(922), 1, + anon_sym_RPAREN, + ACTIONS(924), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1528), 1, + sym_expression, + STATE(2151), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2152), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [3982] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(926), 1, + anon_sym_RPAREN, + ACTIONS(928), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1510), 1, + sym_expression, + STATE(2105), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2104), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4091] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(930), 1, + anon_sym_RPAREN, + ACTIONS(932), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1529), 1, + sym_expression, + STATE(2060), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2061), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4200] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(934), 1, + anon_sym_RPAREN, + ACTIONS(936), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1507), 1, + sym_expression, + STATE(2123), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2125), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4309] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(938), 1, + anon_sym_RPAREN, + ACTIONS(940), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1508), 1, + sym_expression, + STATE(2053), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2054), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4418] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(942), 1, + anon_sym_RPAREN, + ACTIONS(944), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1525), 1, + sym_expression, + STATE(2085), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2086), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4527] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(896), 1, + sym_identifier, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(910), 1, + anon_sym_await, + ACTIONS(946), 1, + anon_sym_RPAREN, + ACTIONS(948), 1, + anon_sym_COMMA, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1516), 1, + sym_expression, + STATE(2183), 1, + sym_parenthesized_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2184), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(906), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4636] = 25, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(926), 1, + anon_sym_RPAREN, + ACTIONS(928), 1, + anon_sym_COMMA, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1718), 1, + sym_expression, + STATE(2105), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2104), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4745] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(962), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4851] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(972), 1, + anon_sym_RBRACK, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1517), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2511), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4957] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(976), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5063] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(978), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5169] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(980), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1521), 1, + sym_expression, + STATE(2137), 1, + sym_yield, + STATE(2200), 1, + sym_list_splat, + STATE(2208), 1, + sym_parenthesized_list_splat, + STATE(2351), 1, + sym__collection_elements, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5279] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(982), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1526), 1, + sym_expression, + STATE(2354), 1, + sym__collection_elements, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5385] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(984), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1509), 1, + sym_expression, + STATE(2155), 1, + sym_yield, + STATE(2327), 1, + sym__collection_elements, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5493] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(986), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1527), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2379), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5599] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(988), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1514), 1, + sym_expression, + STATE(2198), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2515), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5707] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(990), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5813] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(992), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [5919] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(984), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1509), 1, + sym_expression, + STATE(2155), 1, + sym_yield, + STATE(2200), 1, + sym_list_splat, + STATE(2208), 1, + sym_parenthesized_list_splat, + STATE(2327), 1, + sym__collection_elements, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6029] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(994), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1523), 1, + sym_expression, + STATE(2343), 1, + sym__collection_elements, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6135] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(996), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1520), 1, + sym_expression, + STATE(2067), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2437), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6243] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(998), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6349] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1000), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6455] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1002), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6561] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1004), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6667] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1006), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6773] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1008), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6879] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1010), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [6985] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1012), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1524), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2405), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7091] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1014), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1531), 1, + sym_expression, + STATE(2164), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2386), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7199] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(988), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1514), 1, + sym_expression, + STATE(2093), 1, + sym_list_splat, + STATE(2094), 1, + sym_parenthesized_list_splat, + STATE(2198), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2515), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7309] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1016), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7415] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1018), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7521] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1020), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7627] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1022), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7733] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1024), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7839] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1026), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7945] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1028), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8051] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1030), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8157] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1032), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8263] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1014), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1531), 1, + sym_expression, + STATE(2093), 1, + sym_list_splat, + STATE(2094), 1, + sym_parenthesized_list_splat, + STATE(2164), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2386), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8373] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1034), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8479] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1036), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8585] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1038), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1513), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2439), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8691] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1040), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1515), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + STATE(2428), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8797] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1042), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8903] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1044), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9009] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1046), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9115] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(980), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1521), 1, + sym_expression, + STATE(2137), 1, + sym_yield, + STATE(2351), 1, + sym__collection_elements, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9223] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1048), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9329] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1050), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1518), 1, + sym_expression, + STATE(2095), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2402), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9437] = 24, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(966), 1, + anon_sym_LPAREN, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1052), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1511), 1, + sym_expression, + STATE(2334), 1, + sym__collection_elements, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2128), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9543] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1054), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9649] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1050), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1518), 1, + sym_expression, + STATE(2095), 1, + sym_yield, + STATE(2107), 1, + sym_parenthesized_list_splat, + STATE(2110), 1, + sym_list_splat, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2402), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9759] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1056), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9865] = 22, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1060), 1, + anon_sym_from, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1540), 1, + sym_expression, + STATE(1831), 1, + sym_expression_list, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(1062), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [9967] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1068), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10073] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1070), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10179] = 24, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + ACTIONS(1072), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10285] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1074), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1519), 1, + sym_expression, + STATE(2165), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2392), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10393] = 25, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(914), 1, + anon_sym_RPAREN, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1522), 1, + sym_expression, + STATE(2074), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2430), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(2055), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10501] = 26, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(898), 1, + anon_sym_LPAREN, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1074), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1519), 1, + sym_expression, + STATE(2107), 1, + sym_parenthesized_list_splat, + STATE(2110), 1, + sym_list_splat, + STATE(2165), 1, + sym_yield, + STATE(2376), 1, + sym__named_expression_lhs, + STATE(2392), 1, + sym__collection_elements, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10611] = 23, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + ACTIONS(1076), 1, + anon_sym_LPAREN, + ACTIONS(1078), 1, + anon_sym_STAR, + ACTIONS(1080), 1, + anon_sym_RBRACE, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1728), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2242), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10714] = 23, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1084), 1, + anon_sym_RPAREN, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1734), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2259), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10817] = 23, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(1080), 1, + anon_sym_RBRACK, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1092), 1, + anon_sym_LPAREN, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1733), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2283), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [10920] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(626), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11009] = 23, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + ACTIONS(1076), 1, + anon_sym_LPAREN, + ACTIONS(1078), 1, + anon_sym_STAR, + ACTIONS(1084), 1, + anon_sym_RBRACE, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1728), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2242), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11112] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(295), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11201] = 23, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(904), 1, + anon_sym_STAR, + ACTIONS(908), 1, + anon_sym_STAR_STAR, + ACTIONS(950), 1, + sym_identifier, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(960), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1794), 1, + sym_expression, + STATE(2215), 1, + sym_parenthesized_list_splat, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2214), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(954), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11304] = 23, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(1084), 1, + anon_sym_RBRACK, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1092), 1, + anon_sym_LPAREN, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1733), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2283), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11407] = 23, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1080), 1, + anon_sym_RPAREN, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1734), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2259), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11510] = 22, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1104), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1102), 2, + sym__newline, + anon_sym_SEMI, + STATE(2195), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11610] = 22, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(830), 1, + anon_sym_yield, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + ACTIONS(1076), 1, + anon_sym_LPAREN, + ACTIONS(1078), 1, + anon_sym_STAR, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1728), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2242), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11710] = 22, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(760), 1, + anon_sym_yield, + ACTIONS(916), 1, + anon_sym_STAR, + ACTIONS(952), 1, + anon_sym_LPAREN, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1734), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2259), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11810] = 22, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1106), 1, + anon_sym_RPAREN, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1840), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(918), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1108), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11910] = 20, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1566), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(1112), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12006] = 20, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1566), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(1114), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12102] = 22, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1106), 1, + anon_sym_RBRACE, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1893), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(820), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1108), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12202] = 22, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1120), 1, + anon_sym_RBRACK, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1860), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(970), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1118), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12302] = 22, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1106), 1, + anon_sym_RBRACK, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1860), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(970), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1108), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12402] = 22, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + ACTIONS(1126), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1860), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(970), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1124), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12502] = 22, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + ACTIONS(1126), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1840), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(918), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1124), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12602] = 22, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + ACTIONS(1128), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1840), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(918), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1130), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12702] = 22, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + ACTIONS(1120), 1, + anon_sym_RPAREN, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1840), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(918), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1118), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12802] = 22, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(780), 1, + anon_sym_yield, + ACTIONS(968), 1, + anon_sym_STAR, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1092), 1, + anon_sym_LPAREN, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1733), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2283), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12902] = 22, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + ACTIONS(1128), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1893), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(820), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1130), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13002] = 22, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + ACTIONS(1120), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1893), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(820), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1118), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13102] = 22, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1104), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1132), 2, + sym__newline, + anon_sym_SEMI, + STATE(2195), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13202] = 22, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + ACTIONS(1128), 1, + anon_sym_RBRACK, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1860), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(970), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1130), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13302] = 22, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + ACTIONS(1126), 1, + anon_sym_RBRACE, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1893), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(820), 3, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + ACTIONS(1124), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13402] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1134), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13501] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1136), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13600] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1138), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13699] = 10, + ACTIONS(275), 1, + anon_sym_COMMA, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(1140), 1, + anon_sym_for, + ACTIONS(1142), 1, + anon_sym_with, + ACTIONS(1144), 1, + anon_sym_def, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(284), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(295), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(270), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [13774] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1146), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13873] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(626), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [13960] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(1148), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14047] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1150), 1, + anon_sym_from, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1653), 1, + sym_expression, + STATE(2253), 1, + sym_expression_list, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1062), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14146] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1152), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14245] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1154), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14344] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1156), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14443] = 22, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + ACTIONS(1158), 1, + anon_sym_from, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1709), 1, + sym_expression, + STATE(2296), 1, + sym_expression_list, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(1062), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14542] = 10, + ACTIONS(275), 1, + anon_sym_COMMA, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(1160), 1, + sym_identifier, + ACTIONS(1162), 1, + sym_string_start, + STATE(2131), 1, + sym_string, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(284), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(268), 10, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(295), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(270), 22, + anon_sym_as, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + anon_sym_is, + [14617] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1164), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14716] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1166), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14815] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1168), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14914] = 22, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1172), 1, + anon_sym_from, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1582), 1, + sym_expression, + STATE(2099), 1, + sym_expression_list, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1170), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15013] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1174), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15112] = 22, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1176), 1, + anon_sym_from, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1650), 1, + sym_expression, + STATE(2311), 1, + sym_expression_list, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1062), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15211] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1178), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15310] = 10, + ACTIONS(275), 1, + anon_sym_COMMA, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(1180), 1, + anon_sym_for, + ACTIONS(1182), 1, + anon_sym_with, + ACTIONS(1184), 1, + anon_sym_def, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(284), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(295), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(270), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [15385] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1186), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15484] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1188), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15583] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1190), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15682] = 22, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + ACTIONS(1192), 1, + anon_sym_RBRACE, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15781] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1196), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15879] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1198), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [15977] = 21, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1634), 1, + sym_expression, + STATE(2289), 1, + sym_expression_list, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1200), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16073] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1202), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16171] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1204), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16269] = 21, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1104), 1, + anon_sym_STAR, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1665), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + STATE(2195), 2, + sym_list_splat, + sym__list_splat_or_expression, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16365] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1206), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16463] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1208), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16561] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(295), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16647] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(1148), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16733] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1210), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16831] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1212), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16929] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1214), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17027] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1216), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17125] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1218), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17223] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1220), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17321] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1222), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17419] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1226), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1685), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1224), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17515] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(295), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17601] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1228), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17699] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1230), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17797] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1232), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17895] = 21, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1234), 1, + anon_sym_from, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1637), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1112), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [17991] = 21, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1236), 1, + anon_sym_from, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1637), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1114), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18087] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1238), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18185] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1240), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18283] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(822), 1, + anon_sym_STAR_STAR, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1816), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(2248), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18379] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1242), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18477] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1244), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18575] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1248), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1675), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1246), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18671] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1250), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18769] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1252), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18867] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1254), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [18965] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1078), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(626), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(270), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(268), 9, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19051] = 22, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + ACTIONS(1256), 1, + anon_sym_RBRACK, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19149] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1766), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(1114), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19242] = 20, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1730), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19335] = 9, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1264), 1, + anon_sym_except, + ACTIONS(1266), 1, + anon_sym_finally, + STATE(684), 1, + sym_else_clause, + STATE(850), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(566), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1260), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [19406] = 9, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1270), 1, + anon_sym_except_STAR, + ACTIONS(1272), 1, + anon_sym_finally, + STATE(694), 1, + sym_else_clause, + STATE(780), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(508), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1260), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [19477] = 9, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1272), 1, + anon_sym_finally, + ACTIONS(1274), 1, + anon_sym_except, + STATE(694), 1, + sym_else_clause, + STATE(780), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(507), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1260), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [19548] = 9, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1272), 1, + anon_sym_finally, + ACTIONS(1274), 1, + anon_sym_except, + STATE(679), 1, + sym_else_clause, + STATE(816), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(507), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1276), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [19619] = 20, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1620), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1839), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19712] = 20, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1800), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19805] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1682), 1, + sym_expression, + STATE(2216), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19900] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1631), 1, + sym_expression, + STATE(2059), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [19995] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1795), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1280), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20088] = 9, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1270), 1, + anon_sym_except_STAR, + ACTIONS(1272), 1, + anon_sym_finally, + STATE(679), 1, + sym_else_clause, + STATE(816), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(508), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1276), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [20159] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1282), 1, + anon_sym_LPAREN, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2120), 1, + sym_with_item, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2453), 1, + sym_with_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20254] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1282), 1, + anon_sym_LPAREN, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2120), 1, + sym_with_item, + STATE(2383), 1, + sym_with_clause, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20349] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1637), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1284), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20442] = 20, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1754), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20535] = 21, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + ACTIONS(1286), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1770), 1, + sym_expression, + STATE(2280), 1, + sym_with_item, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20630] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1694), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1288), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20723] = 20, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1603), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1858), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20816] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1694), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1290), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20909] = 20, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1809), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21002] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1292), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2306), 1, + sym_with_item, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21097] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1644), 1, + sym_expression, + STATE(2149), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21192] = 20, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1790), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21285] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1604), 1, + sym_expression, + STATE(2122), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21380] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1741), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1294), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21473] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1646), 1, + sym_expression, + STATE(2080), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21568] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1792), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1224), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21661] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1782), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1114), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21754] = 9, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1266), 1, + anon_sym_finally, + ACTIONS(1296), 1, + anon_sym_except_STAR, + STATE(684), 1, + sym_else_clause, + STATE(850), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(559), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1260), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [21825] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1618), 1, + sym_expression, + STATE(2196), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [21920] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1782), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(1112), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22013] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1282), 1, + anon_sym_LPAREN, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2120), 1, + sym_with_item, + STATE(2399), 1, + sym_with_clause, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22108] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1694), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1298), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22201] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1610), 1, + sym_expression, + STATE(2182), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22296] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1637), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1300), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22389] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1766), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(1112), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22482] = 20, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1605), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1888), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22575] = 20, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1617), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1883), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22668] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1593), 1, + sym_expression, + STATE(2108), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22763] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1694), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(1302), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22856] = 9, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1264), 1, + anon_sym_except, + ACTIONS(1266), 1, + anon_sym_finally, + STATE(691), 1, + sym_else_clause, + STATE(802), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(566), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1276), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [22927] = 20, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1840), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23020] = 21, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + ACTIONS(1304), 1, + anon_sym_RPAREN, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1770), 1, + sym_expression, + STATE(2280), 1, + sym_with_item, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23115] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1282), 1, + anon_sym_LPAREN, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2120), 1, + sym_with_item, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2447), 1, + sym_with_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23210] = 21, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + ACTIONS(1194), 1, + anon_sym_COLON, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1630), 1, + sym_expression, + STATE(2050), 1, + sym_slice, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23305] = 20, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1596), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1892), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23398] = 20, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(1116), 1, + anon_sym_lambda, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1614), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + STATE(1893), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23491] = 20, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1122), 1, + anon_sym_lambda, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1594), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + STATE(1860), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23584] = 9, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1266), 1, + anon_sym_finally, + ACTIONS(1296), 1, + anon_sym_except_STAR, + STATE(691), 1, + sym_else_clause, + STATE(802), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(559), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1276), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [23655] = 21, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1306), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2306), 1, + sym_with_item, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23750] = 20, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1612), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1739), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23843] = 20, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + ACTIONS(1110), 1, + anon_sym_lambda, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1641), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + STATE(1867), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23936] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [23994] = 7, + ACTIONS(1314), 1, + anon_sym_COMMA, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1321), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1323), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1317), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [24060] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [24118] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1703), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2460), 1, + sym_expression_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24210] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1628), 1, + sym_expression, + STATE(2291), 1, + sym_expression_list, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24302] = 7, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(1325), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1328), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1330), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1317), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [24368] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1655), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2513), 1, + sym_type, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24460] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1667), 1, + sym_expression, + STATE(2077), 1, + sym_type, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24552] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1332), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1731), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24644] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1112), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1757), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24736] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1770), 1, + sym_expression, + STATE(2280), 1, + sym_with_item, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24828] = 7, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(621), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(624), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(626), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(270), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [24894] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [24952] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1114), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1757), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25044] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1655), 1, + sym_expression, + STATE(2381), 1, + sym_type, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25136] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1696), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2469), 1, + sym_expression_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25228] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [25286] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [25344] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1655), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2473), 1, + sym_type, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25436] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1346), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1731), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25528] = 7, + ACTIONS(275), 1, + anon_sym_COMMA, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(284), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(295), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(270), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [25594] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1720), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2516), 1, + sym_expression_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25686] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1348), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1731), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25778] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1711), 1, + sym_expression, + STATE(2271), 1, + sym_type, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25870] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1711), 1, + sym_expression, + STATE(2045), 1, + sym_type, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [25962] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1768), 1, + sym_expression, + STATE(2306), 1, + sym_with_item, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26054] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [26112] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1354), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1798), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26204] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1656), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2442), 1, + sym_expression_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26296] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 33, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [26354] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1356), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1773), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26446] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1358), 1, + anon_sym_COLON, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1731), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26538] = 20, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1655), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + STATE(2480), 1, + sym_type, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26630] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1835), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26719] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1699), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26808] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1637), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26897] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1674), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26986] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1767), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27075] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1694), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27164] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1821), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27253] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1732), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27342] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1555), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27431] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1556), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27520] = 8, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1364), 1, + anon_sym_elif, + STATE(611), 1, + aux_sym_if_statement_repeat1, + STATE(688), 1, + sym_elif_clause, + STATE(807), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1360), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1362), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [27587] = 8, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1364), 1, + anon_sym_elif, + STATE(571), 1, + aux_sym_if_statement_repeat1, + STATE(688), 1, + sym_elif_clause, + STATE(804), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1366), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1368), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [27654] = 8, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1374), 1, + anon_sym_elif, + STATE(597), 1, + aux_sym_if_statement_repeat1, + STATE(674), 1, + sym_elif_clause, + STATE(812), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1372), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1370), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [27721] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1621), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27810] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1645), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27899] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1559), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [27988] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1758), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28077] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1762), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28166] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1561), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28255] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1806), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28344] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1785), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28433] = 20, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1376), 1, + sym_identifier, + ACTIONS(1380), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1763), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + STATE(1391), 2, + sym_attribute, + sym_subscript, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1378), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28524] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1757), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28613] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1607), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28702] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1572), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28791] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1562), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28880] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1636), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [28969] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1563), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29058] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1590), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29147] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1638), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29236] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1606), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29325] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1567), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29414] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1897), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29503] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1846), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29592] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1731), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29681] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1689), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29770] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1602), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29859] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1574), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [29948] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1601), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30037] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1599), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30126] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1595), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30215] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1640), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30304] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1642), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30393] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1632), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30482] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1782), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30571] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1633), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30660] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1902), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30749] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1750), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30838] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1890), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30927] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1566), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31016] = 5, + ACTIONS(1386), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(507), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1382), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1384), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [31077] = 5, + ACTIONS(1393), 1, + anon_sym_except_STAR, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(508), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1389), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1391), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [31138] = 6, + ACTIONS(1398), 1, + anon_sym_COMMA, + ACTIONS(1405), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1403), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1401), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [31201] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1899), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31290] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1715), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31379] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1583), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31468] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1903), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31557] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1852), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31646] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1589), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31735] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1815), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31824] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1872), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [31913] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1736), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32002] = 6, + ACTIONS(1325), 1, + anon_sym_COMMA, + ACTIONS(1328), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1330), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1317), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [32065] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1886), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32154] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1580), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32243] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1639), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32332] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1651), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32421] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1876), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32510] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1647), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32599] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1904), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32688] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1742), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32777] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1880), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32866] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1813), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [32955] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1643), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33044] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1849), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33133] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1657), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33222] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1751), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33311] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1569), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33400] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1629), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33489] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1684), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33578] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1693), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33667] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1743), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [33756] = 6, + ACTIONS(1314), 1, + anon_sym_COMMA, + ACTIONS(1321), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1323), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1317), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [33819] = 8, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1364), 1, + anon_sym_elif, + STATE(467), 1, + aux_sym_if_statement_repeat1, + STATE(688), 1, + sym_elif_clause, + STATE(775), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1407), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1409), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [33886] = 8, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1374), 1, + anon_sym_elif, + STATE(594), 1, + aux_sym_if_statement_repeat1, + STATE(674), 1, + sym_elif_clause, + STATE(773), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1407), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1409), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [33953] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1598), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34042] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1658), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34131] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1712), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34220] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1721), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34309] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1779), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34398] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1803), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34487] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1723), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34576] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1724), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34665] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1726), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34754] = 20, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(1411), 1, + sym_identifier, + ACTIONS(1415), 1, + anon_sym_await, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1684), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + STATE(539), 2, + sym_attribute, + sym_subscript, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1413), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34845] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1683), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34934] = 6, + ACTIONS(1419), 1, + anon_sym_COMMA, + ACTIONS(1426), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1424), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1422), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [34997] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1581), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35086] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1670), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35175] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1671), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35264] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1672), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35353] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1673), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35442] = 5, + ACTIONS(1428), 1, + anon_sym_except_STAR, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(559), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1389), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1391), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [35503] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1676), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35592] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1611), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35681] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1764), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35770] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1735), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35859] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1565), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35948] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1560), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36037] = 5, + ACTIONS(1431), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(566), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1382), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1384), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [36098] = 19, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(826), 1, + anon_sym_not, + ACTIONS(828), 1, + anon_sym_lambda, + ACTIONS(832), 1, + anon_sym_await, + STATE(864), 1, + sym_primary_expression, + STATE(865), 1, + sym_string, + STATE(1659), 1, + sym_expression, + STATE(2518), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(820), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1564), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36187] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1763), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36276] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1586), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36365] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1576), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36454] = 8, + ACTIONS(1268), 1, + anon_sym_else, + ACTIONS(1364), 1, + anon_sym_elif, + STATE(611), 1, + aux_sym_if_statement_repeat1, + STATE(688), 1, + sym_elif_clause, + STATE(805), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1372), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1370), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [36521] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1766), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36610] = 19, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1096), 1, + anon_sym_not, + ACTIONS(1098), 1, + anon_sym_lambda, + ACTIONS(1100), 1, + anon_sym_await, + STATE(1047), 1, + sym_string, + STATE(1057), 1, + sym_primary_expression, + STATE(1759), 1, + sym_expression, + STATE(2398), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(706), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1094), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1697), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36699] = 20, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1434), 1, + sym_identifier, + ACTIONS(1438), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1762), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + STATE(1390), 2, + sym_attribute, + sym_subscript, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1436), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36790] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1877), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36879] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1905), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36968] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1619), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37057] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1837), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37146] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1568), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37235] = 19, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(776), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_lambda, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(974), 1, + anon_sym_await, + STATE(932), 1, + sym_primary_expression, + STATE(933), 1, + sym_string, + STATE(1609), 1, + sym_expression, + STATE(2375), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(724), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(970), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1588), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37324] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1805), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37413] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1571), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37502] = 8, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1374), 1, + anon_sym_elif, + STATE(469), 1, + aux_sym_if_statement_repeat1, + STATE(674), 1, + sym_elif_clause, + STATE(825), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1366), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1368), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [37569] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1577), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37658] = 19, + ACTIONS(299), 1, + sym_identifier, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(311), 1, + anon_sym_not, + ACTIONS(315), 1, + anon_sym_lambda, + ACTIONS(321), 1, + anon_sym_await, + ACTIONS(323), 1, + sym_string_start, + STATE(956), 1, + sym_string, + STATE(959), 1, + sym_primary_expression, + STATE(1875), 1, + sym_expression, + STATE(2435), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(303), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + STATE(1649), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37747] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1575), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37836] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1558), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [37925] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1578), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38014] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1553), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38103] = 19, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(756), 1, + anon_sym_not, + ACTIONS(758), 1, + anon_sym_lambda, + ACTIONS(912), 1, + sym_identifier, + ACTIONS(920), 1, + anon_sym_await, + STATE(976), 1, + sym_string, + STATE(981), 1, + sym_primary_expression, + STATE(1600), 1, + sym_expression, + STATE(2376), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(668), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(918), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1625), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38192] = 19, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(67), 1, + anon_sym_not, + ACTIONS(69), 1, + anon_sym_lambda, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(266), 1, + sym_identifier, + ACTIONS(297), 1, + anon_sym_await, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + STATE(858), 1, + sym_primary_expression, + STATE(876), 1, + sym_string, + STATE(1557), 1, + sym_expression, + STATE(2527), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(75), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(278), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1584), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38281] = 19, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(956), 1, + anon_sym_not, + ACTIONS(958), 1, + anon_sym_lambda, + ACTIONS(1082), 1, + sym_identifier, + ACTIONS(1088), 1, + anon_sym_await, + STATE(1035), 1, + sym_primary_expression, + STATE(1086), 1, + sym_string, + STATE(1705), 1, + sym_expression, + STATE(2347), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(688), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1086), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1700), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38370] = 19, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(890), 1, + anon_sym_not, + ACTIONS(892), 1, + anon_sym_lambda, + ACTIONS(1058), 1, + sym_identifier, + ACTIONS(1066), 1, + anon_sym_await, + STATE(859), 1, + sym_primary_expression, + STATE(860), 1, + sym_string, + STATE(1570), 1, + sym_expression, + STATE(2400), 1, + sym__named_expression_lhs, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(628), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1064), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1573), 7, + sym_named_expression, + sym_as_pattern, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [38459] = 8, + ACTIONS(1262), 1, + anon_sym_else, + ACTIONS(1374), 1, + anon_sym_elif, + STATE(597), 1, + aux_sym_if_statement_repeat1, + STATE(674), 1, + sym_elif_clause, + STATE(806), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1360), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1362), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38526] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38582] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [38638] = 6, + ACTIONS(1448), 1, + anon_sym_elif, + STATE(597), 1, + aux_sym_if_statement_repeat1, + STATE(674), 1, + sym_elif_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1446), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1444), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38700] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38756] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38812] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38868] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38924] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [38980] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39036] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39092] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39148] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39204] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39260] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39316] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39372] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39428] = 6, + ACTIONS(1467), 1, + anon_sym_elif, + STATE(611), 1, + aux_sym_if_statement_repeat1, + STATE(688), 1, + sym_elif_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1446), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1444), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39490] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 35, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39546] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [39602] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1472), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1470), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39657] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1476), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1474), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39712] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39767] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(618), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1480), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1478), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39828] = 6, + ACTIONS(1488), 1, + anon_sym_case, + STATE(618), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1486), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1484), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39889] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [39944] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(617), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1493), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1491), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40005] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40060] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(618), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1497), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1495), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40121] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40176] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1499), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1501), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40231] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1503), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1505), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40286] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40341] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40396] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1472), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1470), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40451] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1509), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1507), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40506] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1513), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1511), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40561] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1517), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1515), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40616] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1509), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1507), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40671] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(659), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1519), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1521), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40732] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1476), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1474), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40787] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1525), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1527), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40842] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40897] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1513), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1511), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [40952] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41007] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41062] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41117] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(667), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1529), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1531), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41178] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(622), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1535), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1533), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41239] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(618), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1539), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1537), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41300] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41355] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41410] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(667), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1480), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1478), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41471] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1543), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1541), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41526] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1499), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1501), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41581] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(670), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1547), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1545), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41642] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1503), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1505), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41697] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41752] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1549), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1551), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41807] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41862] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(641), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1547), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1545), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41923] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [41978] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1525), 13, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1527), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42033] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1517), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1515), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42088] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1553), 1, + sym_identifier, + ACTIONS(1555), 1, + anon_sym_LPAREN, + ACTIONS(1557), 1, + anon_sym_STAR, + ACTIONS(1561), 1, + anon_sym_LBRACK, + ACTIONS(1563), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1466), 1, + sym_primary_expression, + STATE(1864), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1429), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1866), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(870), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1559), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [42175] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(667), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1539), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1537), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42236] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(672), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1535), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1533), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42297] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1459), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42352] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1455), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42407] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1453), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42462] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1543), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1541), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42517] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1553), 1, + sym_identifier, + ACTIONS(1555), 1, + anon_sym_LPAREN, + ACTIONS(1557), 1, + anon_sym_STAR, + ACTIONS(1561), 1, + anon_sym_LBRACK, + ACTIONS(1563), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1466), 1, + sym_primary_expression, + STATE(1864), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1429), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1866), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(878), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1559), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [42604] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(643), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1519), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1521), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42665] = 6, + ACTIONS(1565), 1, + anon_sym_case, + STATE(667), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1486), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1484), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42726] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 13, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_except_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1442), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42781] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1465), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42836] = 6, + ACTIONS(1482), 1, + anon_sym_case, + STATE(618), 1, + aux_sym_match_statement_repeat2, + STATE(712), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1529), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1531), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42897] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(646), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1493), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1491), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [42958] = 6, + ACTIONS(1523), 1, + anon_sym_case, + STATE(667), 1, + aux_sym_match_statement_repeat2, + STATE(702), 1, + sym_case_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1497), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1495), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43019] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1549), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1551), 34, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43074] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1570), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1568), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43128] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(786), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1574), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1572), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43186] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(772), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1576), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1578), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43244] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(800), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1580), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1582), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43302] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(797), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1586), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1584), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43360] = 5, + ACTIONS(1272), 1, + anon_sym_finally, + STATE(778), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1588), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1590), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43418] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(845), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1586), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1584), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43476] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(803), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1574), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1572), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43534] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(769), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1592), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1594), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43592] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(792), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1580), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1582), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43650] = 5, + ACTIONS(1266), 1, + anon_sym_finally, + STATE(790), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1598), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1596), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43708] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1600), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1602), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43762] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1600), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1602), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43816] = 5, + ACTIONS(1268), 1, + anon_sym_else, + STATE(788), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1604), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1606), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43874] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1570), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1568), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43928] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(794), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1592), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1594), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [43986] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(835), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1604), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1606), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44044] = 5, + ACTIONS(1266), 1, + anon_sym_finally, + STATE(849), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1588), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1590), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44102] = 5, + ACTIONS(1262), 1, + anon_sym_else, + STATE(847), 1, + sym_else_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1576), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1578), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44160] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1608), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1610), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44214] = 5, + ACTIONS(1272), 1, + anon_sym_finally, + STATE(838), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1598), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1596), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44272] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1608), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1610), 33, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44326] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44379] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44432] = 20, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1620), 1, + sym_identifier, + ACTIONS(1622), 1, + anon_sym_LPAREN, + ACTIONS(1624), 1, + anon_sym_RPAREN, + ACTIONS(1626), 1, + anon_sym_STAR, + ACTIONS(1630), 1, + anon_sym_LBRACK, + ACTIONS(1632), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + STATE(2065), 1, + sym_pattern, + STATE(2341), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1458), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1628), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [44519] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1634), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1636), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44572] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1640), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1638), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44625] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1640), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1638), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44678] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1642), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1644), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44731] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1648), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1646), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44784] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44837] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44890] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1656), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1654), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44943] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1648), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1646), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [44996] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45049] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45102] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1656), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1654), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45155] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1660), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1658), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45208] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1642), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1644), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45261] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1664), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1662), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45314] = 20, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1620), 1, + sym_identifier, + ACTIONS(1622), 1, + anon_sym_LPAREN, + ACTIONS(1626), 1, + anon_sym_STAR, + ACTIONS(1630), 1, + anon_sym_LBRACK, + ACTIONS(1632), 1, + anon_sym_await, + ACTIONS(1666), 1, + anon_sym_RPAREN, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + STATE(2065), 1, + sym_pattern, + STATE(2446), 1, + sym__patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1458), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1628), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [45401] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45454] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1668), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1670), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45507] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1674), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1672), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45560] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45613] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45666] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45719] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45772] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1674), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1672), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45825] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45878] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1676), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1678), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45931] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [45984] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1682), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1680), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46037] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1684), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1686), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46090] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1688), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1690), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46143] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1640), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1638), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46196] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1634), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1636), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46249] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1640), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1638), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46302] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46355] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1698), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1696), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46408] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46461] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1648), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1646), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46514] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46567] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1664), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1662), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46620] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46673] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46726] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1656), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1654), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46779] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46832] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1648), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1646), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46885] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46938] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1702), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1700), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [46991] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1652), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1650), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47044] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1656), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1654), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47097] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1660), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1658), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47150] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47203] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47256] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1676), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1678), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47309] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47362] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47415] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47468] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1674), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1672), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47521] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1692), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1694), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47574] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47627] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1688), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1690), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47680] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47733] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47786] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1684), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1686), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47839] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1618), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1616), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47892] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1674), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1672), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47945] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1612), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1614), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [47998] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1668), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1670), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48051] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1682), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1680), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48104] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1698), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1696), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48157] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1702), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1700), 32, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_case, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48210] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1706), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1704), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48262] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1708), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1710), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48314] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1712), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1714), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48366] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2033), 1, + sym_pattern, + STATE(2465), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [48450] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1716), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1718), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48502] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1722), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1720), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48554] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(1995), 1, + sym_pattern, + STATE(2546), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [48638] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1722), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1720), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48690] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2015), 1, + sym_pattern, + STATE(2498), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [48774] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1724), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1726), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48826] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1728), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1730), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [48878] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2016), 1, + sym_pattern, + STATE(2496), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [48962] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1598), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1596), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49014] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2044), 1, + sym_pattern, + STATE(2458), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [49098] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1732), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1734), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49150] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1736), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1738), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49202] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2127), 1, + sym_pattern, + STATE(2403), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [49286] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1742), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1740), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49338] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1746), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1744), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49390] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1748), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1750), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49442] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1752), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1754), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49494] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1756), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1758), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49546] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1762), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1760), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49598] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1766), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1764), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49650] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1770), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1768), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49702] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1774), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1772), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49754] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1708), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1710), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49806] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1748), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1750), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49858] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1776), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1778), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49910] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1782), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1780), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [49962] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1774), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1772), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50014] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1786), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1784), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50066] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1770), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1768), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50118] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1742), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1740), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50170] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1588), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1590), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50222] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1746), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1744), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50274] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1788), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1790), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50326] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1792), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1794), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50378] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1798), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1796), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50430] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1798), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1796), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50482] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1800), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1802), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50534] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1804), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1806), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50586] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1260), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50638] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(1994), 1, + sym_pattern, + STATE(2550), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [50722] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1792), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1794), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50774] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1620), 1, + sym_identifier, + ACTIONS(1622), 1, + anon_sym_LPAREN, + ACTIONS(1626), 1, + anon_sym_STAR, + ACTIONS(1630), 1, + anon_sym_LBRACK, + ACTIONS(1632), 1, + anon_sym_await, + ACTIONS(1808), 1, + anon_sym_RPAREN, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + STATE(2303), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1458), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1628), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [50858] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1712), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1714), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50910] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1812), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1810), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [50962] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1588), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1590), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51014] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1816), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1814), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51066] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1820), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1818), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51118] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1260), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1258), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51170] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1804), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1806), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51222] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1808), 1, + anon_sym_RBRACK, + ACTIONS(1822), 1, + sym_identifier, + ACTIONS(1824), 1, + anon_sym_LPAREN, + ACTIONS(1826), 1, + anon_sym_STAR, + ACTIONS(1830), 1, + anon_sym_LBRACK, + ACTIONS(1832), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1468), 1, + sym_primary_expression, + STATE(2235), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1460), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1828), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [51306] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1836), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1834), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51358] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1838), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1840), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51410] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1276), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51462] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1788), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1790), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51514] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2019), 1, + sym_pattern, + STATE(2494), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [51598] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1276), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51650] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2111), 1, + sym_pattern, + STATE(2388), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [51734] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1812), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1810), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51786] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1816), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1814), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51838] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1620), 1, + sym_identifier, + ACTIONS(1622), 1, + anon_sym_LPAREN, + ACTIONS(1626), 1, + anon_sym_STAR, + ACTIONS(1630), 1, + anon_sym_LBRACK, + ACTIONS(1632), 1, + anon_sym_await, + ACTIONS(1842), 1, + anon_sym_RPAREN, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + STATE(2303), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1458), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1628), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [51922] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1800), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1802), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [51974] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1736), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1738), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52026] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1836), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1834), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52078] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1752), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1754), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52130] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1756), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1758), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52182] = 19, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(2084), 1, + sym_pattern, + STATE(2422), 1, + sym_pattern_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [52266] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1762), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1760), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52318] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1766), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1764), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52370] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1776), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1778), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52422] = 19, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1822), 1, + sym_identifier, + ACTIONS(1824), 1, + anon_sym_LPAREN, + ACTIONS(1826), 1, + anon_sym_STAR, + ACTIONS(1830), 1, + anon_sym_LBRACK, + ACTIONS(1832), 1, + anon_sym_await, + ACTIONS(1842), 1, + anon_sym_RBRACK, + STATE(956), 1, + sym_string, + STATE(1468), 1, + sym_primary_expression, + STATE(2235), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1460), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1828), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [52506] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1838), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1840), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52558] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1820), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1818), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52610] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1706), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1704), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52662] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1782), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1780), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52714] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1786), 12, + sym_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1784), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52766] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1716), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1718), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52818] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1724), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1726), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52870] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1728), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1730), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52922] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1598), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1596), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [52974] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1732), 12, + sym__dedent, + sym_string_start, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_AT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1734), 31, + anon_sym_import, + anon_sym_from, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_match, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [53026] = 18, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1620), 1, + sym_identifier, + ACTIONS(1622), 1, + anon_sym_LPAREN, + ACTIONS(1626), 1, + anon_sym_STAR, + ACTIONS(1630), 1, + anon_sym_LBRACK, + ACTIONS(1632), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + STATE(2303), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1458), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2307), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1628), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53107] = 18, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1553), 1, + sym_identifier, + ACTIONS(1555), 1, + anon_sym_LPAREN, + ACTIONS(1557), 1, + anon_sym_STAR, + ACTIONS(1561), 1, + anon_sym_LBRACK, + ACTIONS(1563), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1466), 1, + sym_primary_expression, + STATE(1864), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1429), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1866), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1559), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53188] = 18, + ACTIONS(17), 1, + anon_sym_STAR, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(862), 1, + sym_identifier, + ACTIONS(864), 1, + anon_sym_LPAREN, + ACTIONS(874), 1, + anon_sym_LBRACK, + ACTIONS(876), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + STATE(1481), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1340), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(1482), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(868), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53269] = 18, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1822), 1, + sym_identifier, + ACTIONS(1824), 1, + anon_sym_LPAREN, + ACTIONS(1826), 1, + anon_sym_STAR, + ACTIONS(1830), 1, + anon_sym_LBRACK, + ACTIONS(1832), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1468), 1, + sym_primary_expression, + STATE(2235), 1, + sym_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1460), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + STATE(2226), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1828), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53350] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1844), 1, + sym_identifier, + ACTIONS(1850), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(1846), 2, + anon_sym_COMMA, + anon_sym_COLON, + STATE(1322), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1848), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53424] = 16, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1852), 1, + sym_identifier, + ACTIONS(1856), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(1846), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + STATE(1443), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1854), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [53498] = 20, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_EQ, + ACTIONS(1882), 1, + anon_sym_not, + ACTIONS(1884), 1, + anon_sym_AMP, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(1890), 1, + anon_sym_is, + STATE(1432), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1888), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1868), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 8, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + [53579] = 20, + ACTIONS(1880), 1, + anon_sym_EQ, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1906), 1, + anon_sym_PIPE, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1912), 1, + anon_sym_not, + ACTIONS(1914), 1, + anon_sym_AMP, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(1920), 1, + anon_sym_is, + STATE(1433), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1918), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1900), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [53660] = 5, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(866), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [53711] = 5, + ACTIONS(1926), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(861), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [53762] = 5, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(861), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [53813] = 5, + ACTIONS(1933), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(863), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [53864] = 20, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1950), 1, + anon_sym_PIPE, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1956), 1, + anon_sym_not, + ACTIONS(1958), 1, + anon_sym_AMP, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(1964), 1, + anon_sym_is, + STATE(1435), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1962), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1944), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [53945] = 5, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(870), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [53996] = 5, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(874), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [54047] = 14, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + ACTIONS(1966), 1, + anon_sym_not, + STATE(876), 1, + sym_string, + STATE(958), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54116] = 14, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(1968), 1, + anon_sym_not, + STATE(860), 1, + sym_string, + STATE(993), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54185] = 14, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + ACTIONS(1970), 1, + anon_sym_not, + STATE(956), 1, + sym_string, + STATE(1082), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54254] = 5, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(863), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [54305] = 14, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + ACTIONS(1972), 1, + anon_sym_not, + STATE(865), 1, + sym_string, + STATE(903), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54374] = 14, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(1974), 1, + anon_sym_not, + STATE(933), 1, + sym_string, + STATE(1037), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54443] = 14, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(1976), 1, + anon_sym_not, + STATE(976), 1, + sym_string, + STATE(1073), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54512] = 5, + ACTIONS(1978), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(874), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [54563] = 14, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(1981), 1, + anon_sym_not, + STATE(1047), 1, + sym_string, + STATE(1168), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54632] = 5, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(862), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [54683] = 14, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(1983), 1, + anon_sym_not, + STATE(1086), 1, + sym_string, + STATE(1124), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54752] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [54798] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1037), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54864] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1122), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54930] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1123), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [54996] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1124), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55062] = 15, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1884), 1, + anon_sym_AMP, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1987), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1985), 16, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [55132] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [55178] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1091), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55244] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1989), 1, + sym_identifier, + ACTIONS(1993), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1440), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1991), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55314] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1060), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55380] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1844), 1, + sym_identifier, + ACTIONS(1850), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1322), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1848), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55450] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(1852), 1, + sym_identifier, + ACTIONS(1856), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1452), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1443), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1854), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55520] = 5, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(961), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [55570] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(945), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55636] = 12, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 19, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [55700] = 13, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 18, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [55766] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(947), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55832] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1126), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55898] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1033), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [55964] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [56010] = 8, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 26, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56066] = 10, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 23, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56126] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1075), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56192] = 14, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1958), 1, + anon_sym_AMP, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 17, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56260] = 8, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56316] = 15, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1950), 1, + anon_sym_PIPE, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1958), 1, + anon_sym_AMP, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2005), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2003), 16, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56386] = 11, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 21, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56448] = 8, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [56504] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1032), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56570] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [56616] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1074), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56682] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1073), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56748] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1030), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56814] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1072), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56880] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1031), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [56946] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1065), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57012] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1082), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57078] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1071), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57144] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1081), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57210] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1080), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57276] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1203), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57342] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1070), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57408] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1069), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57474] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1076), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57540] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1028), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57606] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(892), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57672] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(893), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57738] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(899), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57804] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1127), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57870] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(901), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [57936] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(902), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58002] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(903), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58068] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2007), 1, + sym_identifier, + ACTIONS(2011), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1468), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1465), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(2009), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58138] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1128), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58204] = 20, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2027), 1, + anon_sym_PIPE, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2033), 1, + anon_sym_not, + ACTIONS(2035), 1, + anon_sym_AMP, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(2041), 1, + anon_sym_is, + STATE(1442), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2039), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2021), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [58284] = 5, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1010), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [58334] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1130), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58400] = 15, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1906), 1, + anon_sym_PIPE, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1914), 1, + anon_sym_AMP, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2045), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2043), 16, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [58470] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1045), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58536] = 15, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1906), 1, + anon_sym_PIPE, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1914), 1, + anon_sym_AMP, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1987), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1985), 16, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [58606] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2047), 1, + sym_identifier, + ACTIONS(2051), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1466), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1428), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(2049), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58676] = 13, + ACTIONS(670), 1, + anon_sym_LPAREN, + ACTIONS(676), 1, + anon_sym_LBRACK, + ACTIONS(678), 1, + anon_sym_LBRACE, + ACTIONS(684), 1, + anon_sym_await, + ACTIONS(686), 1, + sym_string_start, + STATE(976), 1, + sym_string, + STATE(1044), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(682), 2, + sym_ellipsis, + sym_float, + ACTIONS(674), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(672), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(668), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1273), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58742] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(904), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58808] = 5, + ACTIONS(2053), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(941), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [58858] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(905), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [58924] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [58970] = 14, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1884), 1, + anon_sym_AMP, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 17, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59038] = 15, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1950), 1, + anon_sym_PIPE, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1958), 1, + anon_sym_AMP, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2045), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2043), 16, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59108] = 5, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(941), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59158] = 15, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1950), 1, + anon_sym_PIPE, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(1958), 1, + anon_sym_AMP, + ACTIONS(1960), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1940), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1942), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1952), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1948), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1987), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1985), 16, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59228] = 8, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 26, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59284] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1052), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [59350] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1202), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [59416] = 8, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59472] = 8, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1938), 1, + anon_sym_LPAREN, + ACTIONS(1946), 1, + anon_sym_STAR_STAR, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1186), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 26, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59528] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1148), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [59594] = 11, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 21, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59656] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1131), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [59722] = 5, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(890), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59772] = 8, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [59828] = 15, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1884), 1, + anon_sym_AMP, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2005), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2003), 16, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [59898] = 20, + ACTIONS(1880), 1, + anon_sym_EQ, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2080), 1, + anon_sym_not, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(2088), 1, + anon_sym_is, + STATE(1447), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2086), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2068), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_and, + anon_sym_or, + [59978] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(898), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60044] = 5, + ACTIONS(2090), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(961), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [60094] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [60140] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [60186] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1184), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60252] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1181), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60318] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1177), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60384] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1084), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60450] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1172), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60516] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(935), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60582] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1170), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60648] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1168), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60714] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1167), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60780] = 13, + ACTIONS(708), 1, + anon_sym_LPAREN, + ACTIONS(714), 1, + anon_sym_LBRACK, + ACTIONS(716), 1, + anon_sym_LBRACE, + ACTIONS(720), 1, + anon_sym_await, + ACTIONS(722), 1, + sym_string_start, + STATE(1047), 1, + sym_string, + STATE(1166), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(718), 2, + sym_ellipsis, + sym_float, + ACTIONS(712), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(710), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(706), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1327), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60846] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(996), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [60912] = 12, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 19, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [60976] = 5, + ACTIONS(686), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(946), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [61026] = 13, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 18, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [61092] = 15, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2093), 1, + sym_identifier, + ACTIONS(2097), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1456), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + STATE(1451), 2, + sym_attribute, + sym_subscript, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(319), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(2095), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + STATE(1234), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [61162] = 8, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [61218] = 12, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 19, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61282] = 20, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2113), 1, + anon_sym_PIPE, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2119), 1, + anon_sym_not, + ACTIONS(2121), 1, + anon_sym_AMP, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(2127), 1, + anon_sym_is, + STATE(1441), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2125), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2107), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [61362] = 8, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 26, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61418] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(883), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [61484] = 13, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 18, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61550] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(937), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [61616] = 5, + ACTIONS(2129), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(986), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [61666] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1054), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [61732] = 8, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 26, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [61788] = 8, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 26, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61844] = 10, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 23, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61904] = 14, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1914), 1, + anon_sym_AMP, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 17, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [61972] = 8, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 26, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [62028] = 15, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1906), 1, + anon_sym_PIPE, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(1914), 1, + anon_sym_AMP, + ACTIONS(1916), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1898), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2005), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2003), 16, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [62098] = 11, + ACTIONS(1892), 1, + anon_sym_DOT, + ACTIONS(1894), 1, + anon_sym_LPAREN, + ACTIONS(1902), 1, + anon_sym_STAR_STAR, + ACTIONS(1910), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1896), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1908), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1088), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1904), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 21, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [62160] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1053), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62226] = 15, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1884), 1, + anon_sym_AMP, + ACTIONS(1886), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1866), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2045), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2043), 16, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [62296] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1136), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62362] = 13, + ACTIONS(690), 1, + anon_sym_LPAREN, + ACTIONS(696), 1, + anon_sym_LBRACK, + ACTIONS(698), 1, + anon_sym_LBRACE, + ACTIONS(702), 1, + anon_sym_await, + ACTIONS(704), 1, + sym_string_start, + STATE(1086), 1, + sym_string, + STATE(1140), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(700), 2, + sym_ellipsis, + sym_float, + ACTIONS(694), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(692), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(688), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1349), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62428] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1034), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62494] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1036), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62560] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(951), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62626] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(954), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62692] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(958), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62758] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(979), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62824] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(957), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62890] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1039), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [62956] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(994), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63022] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(993), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63088] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(992), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63154] = 5, + ACTIONS(740), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(986), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [63204] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(991), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63270] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1049), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63336] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1048), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63402] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1041), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63468] = 13, + ACTIONS(726), 1, + anon_sym_LPAREN, + ACTIONS(732), 1, + anon_sym_LBRACK, + ACTIONS(734), 1, + anon_sym_LBRACE, + ACTIONS(738), 1, + anon_sym_await, + ACTIONS(740), 1, + sym_string_start, + STATE(933), 1, + sym_string, + STATE(1040), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(736), 2, + sym_ellipsis, + sym_float, + ACTIONS(730), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(728), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(724), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1302), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63534] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(990), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63600] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(984), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63666] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(980), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63732] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(944), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63798] = 10, + ACTIONS(1860), 1, + anon_sym_DOT, + ACTIONS(1862), 1, + anon_sym_LPAREN, + ACTIONS(1870), 1, + anon_sym_STAR_STAR, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1864), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1142), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1872), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 23, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [63858] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(1020), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63924] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(977), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [63990] = 13, + ACTIONS(65), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_string_start, + ACTIONS(611), 1, + anon_sym_LPAREN, + ACTIONS(617), 1, + anon_sym_LBRACK, + ACTIONS(619), 1, + anon_sym_await, + STATE(876), 1, + sym_string, + STATE(975), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(73), 2, + sym_ellipsis, + sym_float, + ACTIONS(61), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(613), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(75), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1110), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [64056] = 13, + ACTIONS(301), 1, + anon_sym_LPAREN, + ACTIONS(307), 1, + anon_sym_LBRACK, + ACTIONS(309), 1, + anon_sym_LBRACE, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(666), 1, + anon_sym_await, + STATE(956), 1, + sym_string, + STATE(1083), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(317), 2, + sym_ellipsis, + sym_float, + ACTIONS(313), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(664), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(319), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1234), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [64122] = 13, + ACTIONS(630), 1, + anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_LBRACK, + ACTIONS(638), 1, + anon_sym_LBRACE, + ACTIONS(642), 1, + anon_sym_await, + ACTIONS(644), 1, + sym_string_start, + STATE(860), 1, + sym_string, + STATE(982), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(640), 2, + sym_ellipsis, + sym_float, + ACTIONS(634), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(632), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(628), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1160), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [64188] = 13, + ACTIONS(648), 1, + anon_sym_LPAREN, + ACTIONS(654), 1, + anon_sym_LBRACK, + ACTIONS(656), 1, + anon_sym_LBRACE, + ACTIONS(660), 1, + anon_sym_await, + ACTIONS(662), 1, + sym_string_start, + STATE(865), 1, + sym_string, + STATE(952), 1, + sym_primary_expression, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(658), 2, + sym_ellipsis, + sym_float, + ACTIONS(652), 3, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_TILDE, + ACTIONS(650), 4, + anon_sym_print, + anon_sym_match, + anon_sym_async, + anon_sym_exec, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + STATE(1150), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [64254] = 5, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1079), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64303] = 12, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 18, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64366] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 31, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64411] = 10, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 22, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64470] = 14, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 16, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64537] = 13, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 17, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64602] = 12, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 18, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64665] = 8, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64720] = 20, + ACTIONS(1880), 1, + anon_sym_EQ, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2150), 1, + anon_sym_PIPE, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2156), 1, + anon_sym_not, + ACTIONS(2158), 1, + anon_sym_AMP, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(2164), 1, + anon_sym_is, + STATE(1453), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2162), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1858), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + ACTIONS(2144), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + [64799] = 11, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 20, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64860] = 15, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2027), 1, + anon_sym_PIPE, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2035), 1, + anon_sym_AMP, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2005), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2003), 15, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64929] = 5, + ACTIONS(2166), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1038), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [64978] = 8, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65033] = 14, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2035), 1, + anon_sym_AMP, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 16, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65100] = 10, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 22, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65159] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 31, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [65204] = 5, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1038), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1931), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1929), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65253] = 15, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2113), 1, + anon_sym_PIPE, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2121), 1, + anon_sym_AMP, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2045), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2043), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65322] = 15, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2113), 1, + anon_sym_PIPE, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2121), 1, + anon_sym_AMP, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1987), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1985), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65391] = 8, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 25, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65446] = 5, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1027), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65495] = 13, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 17, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65560] = 12, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 18, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65623] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [65670] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [65717] = 8, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 25, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65772] = 15, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2027), 1, + anon_sym_PIPE, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2035), 1, + anon_sym_AMP, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1987), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1985), 15, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65841] = 15, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2023), 1, + anon_sym_STAR_STAR, + ACTIONS(2027), 1, + anon_sym_PIPE, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2035), 1, + anon_sym_AMP, + ACTIONS(2037), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2017), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2019), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2029), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1288), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2025), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2045), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2043), 15, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65910] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 31, + sym__newline, + sym_string_start, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [65955] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66002] = 19, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2183), 1, + anon_sym_PIPE, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2189), 1, + anon_sym_not, + ACTIONS(2191), 1, + anon_sym_AMP, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(2197), 1, + anon_sym_is, + STATE(1464), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2195), 2, + anon_sym_LT, + anon_sym_GT, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2177), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1858), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [66079] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66126] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 31, + sym__newline, + sym_string_start, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66171] = 8, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 25, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66226] = 5, + ACTIONS(275), 1, + anon_sym_COMMA, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [66275] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66322] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66369] = 8, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 25, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66424] = 8, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66479] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 31, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66524] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(2203), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66573] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(680), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66622] = 13, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 17, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66687] = 10, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 22, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66746] = 14, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2121), 1, + anon_sym_AMP, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 16, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66813] = 8, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66868] = 15, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2113), 1, + anon_sym_PIPE, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(2121), 1, + anon_sym_AMP, + ACTIONS(2123), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2105), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2005), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2003), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66937] = 11, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2103), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2115), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2111), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 20, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [66998] = 8, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2101), 1, + anon_sym_LPAREN, + ACTIONS(2109), 1, + anon_sym_STAR_STAR, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1252), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67053] = 8, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67108] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(1325), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [67157] = 8, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67212] = 5, + ACTIONS(2205), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1079), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1924), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1922), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67261] = 8, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67316] = 11, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 20, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67377] = 15, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2005), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2003), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67446] = 15, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1987), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1985), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67515] = 15, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2045), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2043), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67584] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 31, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [67629] = 5, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1043), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67678] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67722] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [67766] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [67810] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67854] = 8, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 24, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67908] = 8, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 24, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [67962] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68006] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68050] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68094] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68138] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68182] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68226] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68270] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68314] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68358] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68402] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68446] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68490] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68534] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68578] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68622] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68666] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68710] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [68754] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68798] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68842] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68886] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68930] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [68974] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69018] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69062] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69108] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69154] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69198] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69242] = 8, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 24, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69296] = 11, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69356] = 15, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2150), 1, + anon_sym_PIPE, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2158), 1, + anon_sym_AMP, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2005), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2003), 14, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69424] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69468] = 8, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 24, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69522] = 14, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2158), 1, + anon_sym_AMP, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69588] = 10, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 21, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69646] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69690] = 13, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 16, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69754] = 12, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 17, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69816] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69860] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [69904] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69948] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [69992] = 15, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2150), 1, + anon_sym_PIPE, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2158), 1, + anon_sym_AMP, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1987), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1985), 14, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70060] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70104] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70148] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70192] = 15, + ACTIONS(2136), 1, + anon_sym_DOT, + ACTIONS(2138), 1, + anon_sym_LPAREN, + ACTIONS(2146), 1, + anon_sym_STAR_STAR, + ACTIONS(2150), 1, + anon_sym_PIPE, + ACTIONS(2154), 1, + anon_sym_LBRACK, + ACTIONS(2158), 1, + anon_sym_AMP, + ACTIONS(2160), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2140), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2142), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2152), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1386), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2045), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2148), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2043), 14, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70260] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70304] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70348] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70392] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70436] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(275), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70484] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1325), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70532] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70576] = 8, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2001), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1999), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70630] = 8, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2058), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2056), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70684] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70728] = 4, + ACTIONS(1325), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70774] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70818] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [70862] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70906] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70952] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [70996] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71042] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71086] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(275), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71134] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [71178] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71224] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71268] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71314] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [71358] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [71402] = 8, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71456] = 11, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1997), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 20, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71516] = 15, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2183), 1, + anon_sym_PIPE, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2191), 1, + anon_sym_AMP, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2005), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2003), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71584] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71628] = 8, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1997), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1995), 25, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71682] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1325), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71730] = 14, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2191), 1, + anon_sym_AMP, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1997), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 16, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71796] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71840] = 4, + ACTIONS(1419), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [71886] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71930] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [71974] = 10, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1997), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 22, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72032] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72076] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72120] = 4, + ACTIONS(1398), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [72166] = 13, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1997), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 17, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72230] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72274] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72318] = 12, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1997), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1995), 18, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72380] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72424] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72468] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72512] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72556] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72600] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72644] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72688] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72732] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72776] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72820] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72864] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72908] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72952] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [72996] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73040] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73084] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73128] = 15, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2183), 1, + anon_sym_PIPE, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2191), 1, + anon_sym_AMP, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1987), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1985), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73196] = 15, + ACTIONS(2169), 1, + anon_sym_DOT, + ACTIONS(2171), 1, + anon_sym_LPAREN, + ACTIONS(2179), 1, + anon_sym_STAR_STAR, + ACTIONS(2183), 1, + anon_sym_PIPE, + ACTIONS(2187), 1, + anon_sym_LBRACK, + ACTIONS(2191), 1, + anon_sym_AMP, + ACTIONS(2193), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2045), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2173), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2175), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2185), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1316), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2181), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(2043), 15, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73264] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73308] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73352] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73396] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73440] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73484] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73528] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 30, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73572] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73616] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73660] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73704] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73748] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73792] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73835] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 29, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73878] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73921] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [73964] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74007] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74050] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(680), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74097] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(2203), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74144] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74187] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74232] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74277] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74320] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74363] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74406] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74449] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74492] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74535] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74578] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74621] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74664] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74707] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74750] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74793] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74836] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74879] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74922] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [74965] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75008] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75051] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75094] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75137] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75180] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75223] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75266] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75309] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75352] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75395] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75438] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75481] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75524] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75567] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75610] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75653] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75696] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75739] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75782] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75825] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75868] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1398), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1401), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75913] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75956] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [75999] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76042] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2201), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2199), 30, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76085] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76128] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76171] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1419), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1422), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76216] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1325), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76261] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76304] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76347] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76390] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76433] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76476] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76519] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76562] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76605] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76648] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76691] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76734] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76777] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76820] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76863] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76906] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76949] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [76992] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77035] = 4, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77080] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77123] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77166] = 4, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77211] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77254] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1398), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1401), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77299] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77342] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1419), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1422), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77387] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77430] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1325), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77475] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77518] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77561] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77604] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77647] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77690] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2134), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2132), 29, + sym_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77733] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77776] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77819] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77862] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77905] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77947] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [77989] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78031] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78073] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78115] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78157] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78199] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78241] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78283] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2296), 1, + anon_sym_COLON, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2482), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [78373] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78415] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1312), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1317), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1323), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [78459] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(268), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(270), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(626), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [78503] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78545] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78587] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78629] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78671] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78713] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78755] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78797] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78839] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78881] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78923] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [78965] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79007] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79049] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2246), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2244), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79091] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2254), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2252), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79133] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2312), 1, + anon_sym_COLON, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2338), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [79223] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1312), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1317), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1330), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [79267] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2314), 1, + anon_sym_COLON, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2329), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [79357] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1340), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1338), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79399] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2258), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2256), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79441] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2262), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2260), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79483] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2316), 1, + anon_sym_COLON, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2488), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [79573] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79615] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79657] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2266), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2264), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79699] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79741] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79783] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79825] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79867] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2242), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2240), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79909] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1314), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [79955] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(621), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(270), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80001] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2318), 1, + anon_sym_COLON, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2489), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [80091] = 27, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2320), 1, + anon_sym_COLON, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2441), 1, + sym_if_clause, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [80181] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1336), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1334), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80223] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80265] = 5, + ACTIONS(1319), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1314), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80311] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2250), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2248), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80353] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80395] = 5, + ACTIONS(282), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(621), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(270), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80441] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80483] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2218), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2216), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80525] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2270), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2268), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80567] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2274), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2272), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80609] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2230), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2228), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80651] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2278), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2276), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80693] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2222), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2220), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80735] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1344), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80777] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80819] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1417), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1422), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1424), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [80863] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(268), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(270), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(295), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [80907] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80949] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1417), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [80991] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2238), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2236), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81033] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2282), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2280), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81075] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1396), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1401), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1403), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [81119] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2286), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2284), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81161] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1310), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1308), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81203] = 25, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2324), 1, + anon_sym_if, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(1957), 1, + sym_case_maybe_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2168), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2322), 2, + anon_sym_COMMA, + anon_sym_COLON, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2042), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [81289] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81331] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(268), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81373] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1352), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1350), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81415] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2214), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2212), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81457] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2234), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2232), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81499] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2226), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2224), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81541] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2210), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2208), 28, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81583] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1314), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81626] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1314), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1317), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1312), 26, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [81669] = 24, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2328), 1, + anon_sym_if, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2005), 1, + sym_case_maybe_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2326), 2, + anon_sym_COMMA, + anon_sym_COLON, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2042), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [81752] = 24, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2332), 1, + anon_sym_if, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2005), 1, + sym_case_maybe_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2330), 2, + anon_sym_COMMA, + anon_sym_COLON, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2042), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [81835] = 25, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2338), 1, + anon_sym_RPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2210), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2363), 1, + sym_case_open_sequence_pattern, + STATE(2495), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [81919] = 25, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2354), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2225), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2495), 1, + sym_case_maybe_star_pattern, + STATE(2534), 1, + sym_case_open_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82003] = 24, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2368), 1, + anon_sym_RBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2191), 1, + sym_case_maybe_star_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2545), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82085] = 25, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2368), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2212), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2495), 1, + sym_case_maybe_star_pattern, + STATE(2549), 1, + sym_case_open_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82169] = 24, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2322), 1, + anon_sym_RPAREN, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2378), 1, + anon_sym_STAR, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2008), 1, + sym_case_maybe_star_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2514), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2245), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82251] = 24, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + ACTIONS(2380), 1, + anon_sym_RBRACK, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2191), 1, + sym_case_maybe_star_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2525), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82333] = 24, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2354), 1, + anon_sym_RBRACK, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2191), 1, + sym_case_maybe_star_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2533), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82415] = 24, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2338), 1, + anon_sym_RBRACK, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2191), 1, + sym_case_maybe_star_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2361), 1, + sym_case_maybe_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82497] = 25, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2380), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2256), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2495), 1, + sym_case_maybe_star_pattern, + STATE(2540), 1, + sym_case_open_sequence_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82581] = 24, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2382), 1, + sym_identifier, + ACTIONS(2384), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2181), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2314), 1, + sym_case_positional_patterns, + STATE(2316), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82662] = 23, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2330), 1, + anon_sym_RPAREN, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2378), 1, + anon_sym_STAR, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2252), 1, + sym_case_maybe_star_pattern, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2245), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82741] = 23, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2326), 1, + anon_sym_RBRACK, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2295), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82820] = 24, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2382), 1, + sym_identifier, + ACTIONS(2386), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2181), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2274), 1, + sym_case_positional_patterns, + STATE(2275), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82901] = 24, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2382), 1, + sym_identifier, + ACTIONS(2388), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2181), 1, + sym_case_pattern, + STATE(2232), 1, + sym_case_positional_patterns, + STATE(2233), 1, + sym_case_keyword_patterns, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [82982] = 24, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2170), 1, + sym_case_open_sequence_pattern, + STATE(2171), 1, + sym_case_pattern, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83063] = 24, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1891), 1, + sym_case_open_sequence_pattern, + STATE(1896), 1, + sym_case_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83144] = 23, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2326), 1, + anon_sym_RPAREN, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2378), 1, + anon_sym_STAR, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2252), 1, + sym_case_maybe_star_pattern, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2245), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83223] = 23, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2330), 1, + anon_sym_RBRACK, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2295), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83302] = 24, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2382), 1, + sym_identifier, + ACTIONS(2390), 1, + anon_sym_RPAREN, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2181), 1, + sym_case_pattern, + STATE(2254), 1, + sym_case_positional_patterns, + STATE(2257), 1, + sym_case_keyword_patterns, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83383] = 24, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1879), 1, + sym_case_open_sequence_pattern, + STATE(1889), 1, + sym_case_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2042), 1, + sym_case_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + STATE(2508), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83464] = 22, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2360), 1, + anon_sym_STAR, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1838), 1, + sym_case_closed_pattern, + STATE(1843), 1, + sym_dotted_name, + STATE(2006), 1, + sym_case_or_pattern, + STATE(2244), 1, + sym_case_as_pattern, + STATE(2295), 1, + sym_case_maybe_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2260), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83540] = 22, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + ACTIONS(2378), 1, + anon_sym_STAR, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2252), 1, + sym_case_maybe_star_pattern, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2245), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83616] = 22, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2292), 1, + anon_sym_STAR, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1775), 1, + sym_case_closed_pattern, + STATE(1937), 1, + sym_case_or_pattern, + STATE(2005), 1, + sym_case_maybe_star_pattern, + STATE(2159), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2042), 2, + sym_case_pattern, + sym_case_star_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83692] = 20, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2211), 1, + sym_case_pattern, + STATE(2264), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83761] = 20, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(2392), 1, + sym_identifier, + ACTIONS(2394), 1, + anon_sym_LPAREN, + ACTIONS(2396), 1, + anon_sym_DASH, + ACTIONS(2398), 1, + sym_case_wildcard_pattern, + ACTIONS(2400), 1, + anon_sym_LBRACK, + ACTIONS(2402), 1, + anon_sym_LBRACE, + ACTIONS(2404), 1, + sym_integer, + ACTIONS(2406), 1, + sym_float, + STATE(1624), 1, + sym_string, + STATE(1680), 1, + sym_case_literal_integer_or_float, + STATE(1760), 1, + sym_case_closed_pattern, + STATE(1761), 1, + sym_dotted_name, + STATE(1923), 1, + sym_case_or_pattern, + STATE(1990), 1, + sym_case_pattern, + STATE(2056), 1, + sym_case_as_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1898), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2408), 3, + sym_true, + sym_false, + sym_none, + STATE(1906), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83830] = 20, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1871), 1, + sym_case_closed_pattern, + STATE(2023), 1, + sym_case_or_pattern, + STATE(2264), 1, + sym_case_as_pattern, + STATE(2322), 1, + sym_case_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83899] = 17, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2290), 1, + anon_sym_LPAREN, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2300), 1, + sym_case_wildcard_pattern, + ACTIONS(2302), 1, + anon_sym_LBRACK, + ACTIONS(2304), 1, + anon_sym_LBRACE, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1771), 1, + sym_dotted_name, + STATE(1828), 1, + sym_case_closed_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + STATE(1901), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [83959] = 17, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(2334), 1, + sym_identifier, + ACTIONS(2336), 1, + anon_sym_LPAREN, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2342), 1, + sym_case_wildcard_pattern, + ACTIONS(2344), 1, + anon_sym_LBRACK, + ACTIONS(2346), 1, + anon_sym_LBRACE, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + STATE(1706), 1, + sym_string, + STATE(1774), 1, + sym_case_literal_integer_or_float, + STATE(1851), 1, + sym_dotted_name, + STATE(1971), 1, + sym_case_closed_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1952), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2352), 3, + sym_true, + sym_false, + sym_none, + STATE(1939), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [84019] = 17, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(2392), 1, + sym_identifier, + ACTIONS(2394), 1, + anon_sym_LPAREN, + ACTIONS(2396), 1, + anon_sym_DASH, + ACTIONS(2398), 1, + sym_case_wildcard_pattern, + ACTIONS(2400), 1, + anon_sym_LBRACK, + ACTIONS(2402), 1, + anon_sym_LBRACE, + ACTIONS(2404), 1, + sym_integer, + ACTIONS(2406), 1, + sym_float, + STATE(1624), 1, + sym_string, + STATE(1680), 1, + sym_case_literal_integer_or_float, + STATE(1761), 1, + sym_dotted_name, + STATE(1855), 1, + sym_case_closed_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1898), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2408), 3, + sym_true, + sym_false, + sym_none, + STATE(1906), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [84079] = 17, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(2356), 1, + sym_identifier, + ACTIONS(2358), 1, + anon_sym_LPAREN, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2364), 1, + sym_case_wildcard_pattern, + ACTIONS(2366), 1, + anon_sym_LBRACK, + ACTIONS(2370), 1, + anon_sym_LBRACE, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1678), 1, + sym_string, + STATE(1789), 1, + sym_case_literal_integer_or_float, + STATE(1843), 1, + sym_dotted_name, + STATE(1942), 1, + sym_case_closed_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1962), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + ACTIONS(2376), 3, + sym_true, + sym_false, + sym_none, + STATE(1953), 5, + sym_case_literal_pattern, + sym_case_group_pattern, + sym_case_sequence_pattern, + sym_case_mapping_pattern, + sym_case_class_pattern, + [84139] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1424), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1417), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84171] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1403), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1396), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84203] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(626), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84235] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(295), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84267] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1323), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84299] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1330), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84331] = 8, + ACTIONS(2412), 1, + anon_sym_as, + ACTIONS(2417), 1, + anon_sym_not, + ACTIONS(2423), 1, + anon_sym_is, + STATE(1430), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2420), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2414), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [84370] = 8, + ACTIONS(2412), 1, + anon_sym_EQ, + ACTIONS(2429), 1, + anon_sym_not, + ACTIONS(2435), 1, + anon_sym_is, + STATE(1431), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2426), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [84409] = 8, + ACTIONS(1882), 1, + anon_sym_not, + ACTIONS(1890), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_EQ, + STATE(1434), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1888), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 8, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + [84448] = 8, + ACTIONS(1912), 1, + anon_sym_not, + ACTIONS(1920), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_EQ, + STATE(1431), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1918), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1900), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [84487] = 8, + ACTIONS(2412), 1, + anon_sym_EQ, + ACTIONS(2445), 1, + anon_sym_not, + ACTIONS(2451), 1, + anon_sym_is, + STATE(1434), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2448), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2442), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 8, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + [84526] = 8, + ACTIONS(1956), 1, + anon_sym_not, + ACTIONS(1964), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_as, + STATE(1430), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1962), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1944), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [84565] = 8, + ACTIONS(2412), 1, + anon_sym_as, + ACTIONS(2457), 1, + anon_sym_not, + ACTIONS(2463), 1, + anon_sym_is, + STATE(1436), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2460), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2454), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [84603] = 16, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(2468), 1, + anon_sym_RBRACE, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1924), 1, + sym_case_key_value_pattern, + STATE(2207), 1, + sym_case_items_pattern, + STATE(2228), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [84657] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1148), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84687] = 16, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(2470), 1, + anon_sym_RBRACE, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1924), 1, + sym_case_key_value_pattern, + STATE(2134), 1, + sym_case_items_pattern, + STATE(2308), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [84741] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2472), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84771] = 8, + ACTIONS(2119), 1, + anon_sym_not, + ACTIONS(2127), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_as, + STATE(1445), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2125), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2107), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [84809] = 8, + ACTIONS(2033), 1, + anon_sym_not, + ACTIONS(2041), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_as, + STATE(1436), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2039), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2021), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [84847] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1323), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84877] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(626), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [84907] = 8, + ACTIONS(2412), 1, + anon_sym_as, + ACTIONS(2477), 1, + anon_sym_not, + ACTIONS(2483), 1, + anon_sym_is, + STATE(1445), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2480), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2474), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [84945] = 16, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(2486), 1, + anon_sym_RBRACE, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1924), 1, + sym_case_key_value_pattern, + STATE(1997), 1, + sym_case_items_pattern, + STATE(2227), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [84999] = 8, + ACTIONS(2080), 1, + anon_sym_not, + ACTIONS(2088), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_EQ, + STATE(1449), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2086), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2068), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_and, + anon_sym_or, + [85037] = 16, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(2488), 1, + anon_sym_RBRACE, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(1924), 1, + sym_case_key_value_pattern, + STATE(2204), 1, + sym_case_items_pattern, + STATE(2241), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [85091] = 8, + ACTIONS(2412), 1, + anon_sym_EQ, + ACTIONS(2493), 1, + anon_sym_not, + ACTIONS(2499), 1, + anon_sym_is, + STATE(1449), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2490), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_and, + anon_sym_or, + [85129] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1403), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1396), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85158] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2472), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85187] = 13, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(2099), 1, + anon_sym_DOT, + ACTIONS(2117), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + [85234] = 8, + ACTIONS(2156), 1, + anon_sym_not, + ACTIONS(2164), 1, + anon_sym_is, + ACTIONS(2440), 1, + anon_sym_EQ, + STATE(1470), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2162), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2144), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + [85271] = 4, + ACTIONS(2502), 1, + anon_sym_COMMA, + STATE(1455), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(870), 16, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [85300] = 4, + ACTIONS(2504), 1, + anon_sym_COMMA, + STATE(1455), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 16, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [85329] = 13, + ACTIONS(2060), 1, + anon_sym_DOT, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2078), 1, + anon_sym_LBRACK, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + [85376] = 7, + ACTIONS(2512), 1, + anon_sym_not, + ACTIONS(2518), 1, + anon_sym_is, + STATE(1457), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2515), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2509), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2410), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [85411] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1330), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85440] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1424), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1417), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85469] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1330), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85498] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(295), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85527] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1422), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1424), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1417), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85556] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(295), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85585] = 7, + ACTIONS(2189), 1, + anon_sym_not, + ACTIONS(2197), 1, + anon_sym_is, + STATE(1457), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2195), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2177), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(2438), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [85620] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1317), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1323), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1312), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85649] = 13, + ACTIONS(1936), 1, + anon_sym_DOT, + ACTIONS(1954), 1, + anon_sym_LBRACK, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + [85696] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(626), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85725] = 13, + ACTIONS(2013), 1, + anon_sym_DOT, + ACTIONS(2031), 1, + anon_sym_LBRACK, + ACTIONS(2062), 1, + anon_sym_LPAREN, + ACTIONS(2070), 1, + anon_sym_STAR_STAR, + ACTIONS(2074), 1, + anon_sym_PIPE, + ACTIONS(2082), 1, + anon_sym_AMP, + ACTIONS(2084), 1, + anon_sym_CARET, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2064), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2066), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(2076), 2, + anon_sym_PLUS, + anon_sym_DASH, + STATE(1218), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(2072), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + [85772] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1401), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1403), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(1396), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85801] = 8, + ACTIONS(2412), 1, + anon_sym_EQ, + ACTIONS(2524), 1, + anon_sym_not, + ACTIONS(2530), 1, + anon_sym_is, + STATE(1470), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2527), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(2410), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_and, + anon_sym_or, + ACTIONS(2521), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + [85838] = 4, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(270), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1148), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(268), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_LBRACK, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [85867] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2539), 1, + anon_sym_COLON, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2500), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [85911] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2545), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [85935] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2547), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2368), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [85979] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2549), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2505), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86023] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2551), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2359), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86067] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2553), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [86091] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2555), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2507), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86135] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2557), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2481), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86179] = 13, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(2158), 1, + sym_case_key_value_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2559), 2, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [86225] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [86249] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1330), 17, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [86273] = 13, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(2158), 1, + sym_case_key_value_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2561), 2, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [86319] = 6, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(2565), 1, + anon_sym_COLON, + ACTIONS(2567), 1, + anon_sym_EQ, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2569), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [86351] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2571), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2423), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86395] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2573), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2372), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86439] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2575), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2457), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86483] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2577), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2333), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86527] = 12, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2579), 1, + anon_sym_COLON, + STATE(2148), 1, + sym_parameter, + STATE(2332), 1, + sym__parameters, + STATE(2410), 1, + sym_lambda_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86571] = 11, + ACTIONS(2581), 1, + sym_identifier, + ACTIONS(2583), 1, + anon_sym_LPAREN, + ACTIONS(2585), 1, + anon_sym_RPAREN, + ACTIONS(2587), 1, + anon_sym_STAR, + ACTIONS(2589), 1, + anon_sym_STAR_STAR, + ACTIONS(2591), 1, + anon_sym_SLASH, + STATE(2121), 1, + sym_parameter, + STATE(2512), 1, + sym__parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2106), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2298), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86612] = 10, + ACTIONS(2581), 1, + sym_identifier, + ACTIONS(2583), 1, + anon_sym_LPAREN, + ACTIONS(2587), 1, + anon_sym_STAR, + ACTIONS(2589), 1, + anon_sym_STAR_STAR, + ACTIONS(2591), 1, + anon_sym_SLASH, + ACTIONS(2593), 1, + anon_sym_RPAREN, + STATE(2276), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2106), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2298), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86650] = 10, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2595), 1, + anon_sym_COLON, + STATE(2272), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86688] = 10, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + ACTIONS(2593), 1, + anon_sym_COLON, + STATE(2272), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86726] = 12, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1648), 1, + sym_string, + STATE(1681), 1, + sym_case_literal_integer_or_float, + STATE(2158), 1, + sym_case_key_value_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1895), 2, + sym_case_literal_pattern_complex_number, + sym_concatenated_string, + STATE(2519), 2, + sym_dotted_name, + sym_case_literal_pattern, + ACTIONS(2310), 3, + sym_true, + sym_false, + sym_none, + [86768] = 10, + ACTIONS(2581), 1, + sym_identifier, + ACTIONS(2583), 1, + anon_sym_LPAREN, + ACTIONS(2587), 1, + anon_sym_STAR, + ACTIONS(2589), 1, + anon_sym_STAR_STAR, + ACTIONS(2591), 1, + anon_sym_SLASH, + ACTIONS(2595), 1, + anon_sym_RPAREN, + STATE(2276), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2106), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2298), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86806] = 4, + ACTIONS(2565), 1, + anon_sym_COLON, + ACTIONS(2567), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2569), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [86832] = 9, + ACTIONS(2533), 1, + sym_identifier, + ACTIONS(2535), 1, + anon_sym_LPAREN, + ACTIONS(2537), 1, + anon_sym_STAR, + ACTIONS(2541), 1, + anon_sym_STAR_STAR, + ACTIONS(2543), 1, + anon_sym_SLASH, + STATE(2272), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2315), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2319), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86867] = 9, + ACTIONS(2581), 1, + sym_identifier, + ACTIONS(2583), 1, + anon_sym_LPAREN, + ACTIONS(2587), 1, + anon_sym_STAR, + ACTIONS(2589), 1, + anon_sym_STAR_STAR, + ACTIONS(2591), 1, + anon_sym_SLASH, + STATE(2276), 1, + sym_parameter, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2106), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(2298), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [86902] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2487), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [86943] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2418), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [86984] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2397), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87025] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2369), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87066] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2485), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87107] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2434), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87148] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2438), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87189] = 13, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2603), 1, + anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2609), 1, + anon_sym_RBRACE, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + STATE(1677), 1, + sym_for_in_clause, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + STATE(2382), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87230] = 12, + ACTIONS(2615), 1, + anon_sym_RPAREN, + ACTIONS(2617), 1, + anon_sym_COMMA, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + STATE(1687), 1, + sym_for_in_clause, + STATE(2119), 1, + aux_sym_argument_list_repeat1, + STATE(2365), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87268] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2631), 1, + anon_sym_RPAREN, + ACTIONS(2633), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2046), 1, + aux_sym_argument_list_repeat1, + STATE(2542), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87306] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2635), 1, + anon_sym_RPAREN, + ACTIONS(2637), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2393), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87344] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2639), 1, + anon_sym_RPAREN, + ACTIONS(2641), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2113), 1, + aux_sym_argument_list_repeat1, + STATE(2407), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87382] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2425), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87420] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2657), 1, + anon_sym_RPAREN, + ACTIONS(2659), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2407), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87458] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2475), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87496] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2662), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2492), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87534] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2401), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87572] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2664), 1, + anon_sym_RPAREN, + ACTIONS(2666), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2179), 1, + aux_sym_argument_list_repeat1, + STATE(2492), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87610] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2491), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87648] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2668), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2414), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87686] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2670), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2468), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87724] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2672), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2542), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87762] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2674), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2365), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87800] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2657), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2407), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87838] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2374), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87876] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2415), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87914] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2676), 1, + anon_sym_RPAREN, + ACTIONS(2678), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2075), 1, + aux_sym_argument_list_repeat1, + STATE(2414), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87952] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2366), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [87990] = 12, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + STATE(1727), 1, + sym_for_in_clause, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + STATE(2345), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [88028] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2680), 1, + anon_sym_RPAREN, + ACTIONS(2682), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2147), 1, + aux_sym_argument_list_repeat1, + STATE(2348), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [88066] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2684), 1, + anon_sym_RPAREN, + ACTIONS(2686), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2041), 1, + aux_sym_argument_list_repeat1, + STATE(2393), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [88104] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2688), 1, + anon_sym_RPAREN, + ACTIONS(2690), 1, + anon_sym_COMMA, + STATE(1687), 1, + sym_for_in_clause, + STATE(2201), 1, + aux_sym_argument_list_repeat1, + STATE(2468), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [88142] = 12, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2692), 1, + anon_sym_RPAREN, + STATE(1687), 1, + sym_for_in_clause, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + STATE(2348), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [88180] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2700), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88213] = 8, + ACTIONS(2702), 1, + anon_sym_COMMA, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + STATE(1745), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2708), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [88242] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2714), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88275] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2716), 1, + sym_string_end, + STATE(1539), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88308] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2718), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88341] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2720), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88374] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2722), 1, + sym_string_end, + STATE(1537), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88407] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2724), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88440] = 8, + ACTIONS(2702), 1, + anon_sym_COMMA, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + STATE(1745), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [88469] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2728), 1, + anon_sym_LBRACE, + ACTIONS(2734), 1, + sym__not_escape_sequence, + ACTIONS(2737), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2731), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88502] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2739), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88535] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2741), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88568] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2743), 1, + sym_string_end, + STATE(1542), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88601] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2745), 1, + sym_string_end, + STATE(1536), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88634] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2747), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88667] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2749), 1, + sym_string_end, + STATE(1543), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88700] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2751), 1, + sym_string_end, + STATE(1546), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88733] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2753), 1, + sym_string_end, + STATE(1541), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88766] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2755), 1, + sym_string_end, + STATE(1549), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88799] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2757), 1, + sym_string_end, + STATE(1534), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88832] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(2694), 1, + anon_sym_LBRACE, + ACTIONS(2698), 1, + sym__not_escape_sequence, + ACTIONS(2759), 1, + sym_string_end, + STATE(1532), 1, + aux_sym_string_repeat1, + STATE(1686), 1, + aux_sym_string_content_repeat1, + STATE(1780), 1, + sym_string_content, + STATE(1793), 1, + sym_interpolation, + ACTIONS(2696), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [88865] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 9, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [88881] = 4, + ACTIONS(2765), 1, + anon_sym_DOT, + STATE(1579), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 7, + anon_sym_import, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [88901] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [88925] = 6, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [88949] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 9, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [88965] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 9, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [88981] = 5, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(2775), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89003] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 5, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + [89027] = 5, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(2788), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89049] = 3, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [89067] = 4, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_or, + [89087] = 3, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [89105] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89129] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89153] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89177] = 5, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(2796), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89199] = 3, + ACTIONS(2799), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [89217] = 4, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89237] = 4, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 7, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + [89257] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 5, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + [89281] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 9, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [89297] = 6, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89321] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 9, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + sym_type_conversion, + [89337] = 5, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2801), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 6, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_EQ, + [89359] = 3, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_or, + sym_type_conversion, + [89377] = 3, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 8, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_or, + [89395] = 4, + ACTIONS(2765), 1, + anon_sym_DOT, + STATE(1585), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2804), 7, + anon_sym_import, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [89415] = 6, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89439] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 5, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + [89463] = 9, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2808), 1, + anon_sym_from, + ACTIONS(2810), 1, + anon_sym_COMMA, + STATE(1850), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2806), 2, + sym__newline, + anon_sym_SEMI, + [89493] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2812), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [89517] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 9, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [89533] = 4, + ACTIONS(2816), 1, + anon_sym_DOT, + STATE(1585), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 7, + anon_sym_import, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [89553] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [89568] = 4, + ACTIONS(2819), 1, + anon_sym_DOT, + STATE(1591), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2804), 6, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [89587] = 3, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [89604] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2823), 1, + anon_sym_COMMA, + STATE(1960), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2821), 2, + sym__newline, + anon_sym_SEMI, + [89631] = 3, + ACTIONS(2799), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [89648] = 4, + ACTIONS(2825), 1, + anon_sym_DOT, + STATE(1591), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 6, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [89667] = 4, + ACTIONS(2819), 1, + anon_sym_DOT, + STATE(1587), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 6, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [89686] = 9, + ACTIONS(2828), 1, + anon_sym_COMMA, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2836), 1, + anon_sym_RBRACK, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + STATE(2117), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [89715] = 5, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [89736] = 5, + ACTIONS(2844), 1, + anon_sym_as, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + [89757] = 5, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89778] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2853), 1, + anon_sym_COMMA, + STATE(1950), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2851), 2, + sym__newline, + anon_sym_SEMI, + [89805] = 6, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2601), 1, + anon_sym_if, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2855), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89828] = 4, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 6, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + [89847] = 6, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + [89870] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [89885] = 3, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + anon_sym_or, + [89902] = 5, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [89923] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2857), 1, + anon_sym_COMMA, + ACTIONS(2859), 1, + anon_sym_RBRACK, + STATE(2114), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [89952] = 5, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [89973] = 6, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + [89996] = 3, + ACTIONS(2799), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [90013] = 5, + ACTIONS(2861), 1, + anon_sym_DOT, + ACTIONS(2863), 1, + anon_sym_EQ, + STATE(1691), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 5, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [90034] = 6, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90057] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2865), 1, + anon_sym_COMMA, + ACTIONS(2867), 1, + anon_sym_RBRACK, + STATE(2174), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90086] = 6, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90109] = 5, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [90130] = 7, + ACTIONS(1270), 1, + anon_sym_except_STAR, + ACTIONS(1274), 1, + anon_sym_except, + ACTIONS(2869), 1, + anon_sym_finally, + STATE(824), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(376), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(382), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [90155] = 5, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [90176] = 7, + ACTIONS(1270), 1, + anon_sym_except_STAR, + ACTIONS(1274), 1, + anon_sym_except, + ACTIONS(2869), 1, + anon_sym_finally, + STATE(819), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(374), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(375), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [90201] = 7, + ACTIONS(59), 1, + anon_sym_AT, + ACTIONS(2871), 1, + anon_sym_async, + ACTIONS(2873), 1, + anon_sym_def, + ACTIONS(2875), 1, + anon_sym_class, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(832), 2, + sym_function_definition, + sym_class_definition, + STATE(1791), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [90226] = 5, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90247] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2877), 1, + anon_sym_COMMA, + ACTIONS(2879), 1, + anon_sym_RBRACK, + STATE(2205), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90276] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 4, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + [90299] = 5, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [90320] = 6, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2647), 1, + anon_sym_if, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90343] = 7, + ACTIONS(1264), 1, + anon_sym_except, + ACTIONS(1296), 1, + anon_sym_except_STAR, + ACTIONS(2885), 1, + anon_sym_finally, + STATE(827), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(412), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(420), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [90368] = 7, + ACTIONS(1264), 1, + anon_sym_except, + ACTIONS(1296), 1, + anon_sym_except_STAR, + ACTIONS(2885), 1, + anon_sym_finally, + STATE(810), 1, + sym_finally_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(373), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(400), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [90393] = 4, + ACTIONS(644), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(866), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [90412] = 3, + ACTIONS(1880), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [90429] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 8, + anon_sym_import, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [90444] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2891), 1, + anon_sym_COMMA, + STATE(1972), 1, + aux_sym_print_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2889), 2, + sym__newline, + anon_sym_SEMI, + [90471] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2810), 1, + anon_sym_COMMA, + STATE(1850), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2893), 2, + sym__newline, + anon_sym_SEMI, + [90498] = 6, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2621), 1, + anon_sym_if, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + [90521] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2895), 1, + anon_sym_COMMA, + ACTIONS(2897), 1, + anon_sym_RBRACK, + STATE(2048), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90550] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2899), 1, + anon_sym_COMMA, + ACTIONS(2901), 1, + anon_sym_RBRACK, + STATE(2037), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90579] = 5, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(2903), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90600] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 4, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + [90623] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2810), 1, + anon_sym_COMMA, + STATE(1850), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2906), 2, + sym__newline, + anon_sym_SEMI, + [90650] = 7, + ACTIONS(59), 1, + anon_sym_AT, + ACTIONS(2908), 1, + anon_sym_async, + ACTIONS(2910), 1, + anon_sym_def, + ACTIONS(2912), 1, + anon_sym_class, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(808), 2, + sym_function_definition, + sym_class_definition, + STATE(1791), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [90675] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2823), 1, + anon_sym_COMMA, + STATE(1959), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2914), 2, + sym__newline, + anon_sym_SEMI, + [90702] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 4, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + anon_sym_COMMA, + [90725] = 4, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_or, + [90744] = 4, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_or, + [90763] = 3, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [90780] = 5, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2842), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [90801] = 5, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(2788), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [90822] = 5, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2916), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [90843] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2919), 1, + anon_sym_COMMA, + ACTIONS(2921), 1, + anon_sym_RBRACK, + STATE(2144), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90872] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 4, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + [90895] = 9, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2923), 1, + anon_sym_COMMA, + ACTIONS(2925), 1, + anon_sym_RBRACK, + STATE(2071), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [90924] = 5, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(2788), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [90945] = 4, + ACTIONS(323), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(890), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [90964] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 8, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [90979] = 8, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(2810), 1, + anon_sym_COMMA, + STATE(1850), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 2, + sym__newline, + anon_sym_SEMI, + [91006] = 3, + ACTIONS(2790), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_and, + anon_sym_or, + [91023] = 6, + ACTIONS(2927), 1, + anon_sym_if, + ACTIONS(2930), 1, + anon_sym_async, + ACTIONS(2933), 1, + anon_sym_for, + ACTIONS(2936), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1652), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91045] = 8, + ACTIONS(2726), 1, + anon_sym_RBRACK, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2938), 1, + anon_sym_COMMA, + STATE(2025), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91071] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2940), 1, + anon_sym_COMMA, + ACTIONS(2942), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2153), 1, + aux_sym_dictionary_repeat1, + STATE(2325), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91097] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2944), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_EQ, + [91119] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(2946), 1, + anon_sym_COMMA, + ACTIONS(2948), 1, + anon_sym_COLON, + STATE(2081), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91145] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + [91167] = 5, + ACTIONS(2619), 1, + anon_sym_as, + ACTIONS(2627), 1, + anon_sym_and, + ACTIONS(2629), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2950), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [91187] = 5, + ACTIONS(2599), 1, + anon_sym_as, + ACTIONS(2611), 1, + anon_sym_and, + ACTIONS(2613), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2950), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [91207] = 6, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2952), 1, + anon_sym_if, + ACTIONS(2954), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1661), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91229] = 6, + ACTIONS(2936), 1, + anon_sym_RBRACE, + ACTIONS(2956), 1, + anon_sym_if, + ACTIONS(2959), 1, + anon_sym_async, + ACTIONS(2962), 1, + anon_sym_for, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1661), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91251] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2965), 1, + anon_sym_COMMA, + ACTIONS(2967), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2186), 1, + aux_sym_dictionary_repeat1, + STATE(2490), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91277] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2969), 1, + anon_sym_COMMA, + ACTIONS(2971), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2089), 1, + aux_sym_dictionary_repeat1, + STATE(2419), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91303] = 4, + ACTIONS(2973), 1, + anon_sym_DOT, + STATE(1664), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 5, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [91321] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2976), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [91343] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2978), 1, + anon_sym_COMMA, + ACTIONS(2980), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2126), 1, + aux_sym_dictionary_repeat1, + STATE(2385), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91369] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2944), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_EQ, + [91391] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2982), 1, + anon_sym_COMMA, + ACTIONS(2984), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2098), 1, + aux_sym_dictionary_repeat1, + STATE(2396), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91417] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2986), 1, + anon_sym_COMMA, + ACTIONS(2988), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2130), 1, + aux_sym_dictionary_repeat1, + STATE(2370), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91443] = 3, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 6, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_or, + [91459] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [91473] = 4, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + [91491] = 5, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(2990), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 4, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + [91511] = 5, + ACTIONS(2645), 1, + anon_sym_as, + ACTIONS(2653), 1, + anon_sym_and, + ACTIONS(2655), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2950), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [91531] = 7, + ACTIONS(1226), 1, + anon_sym_COLON, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1224), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [91555] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + [91577] = 6, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(2952), 1, + anon_sym_if, + ACTIONS(2993), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1660), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91599] = 4, + ACTIONS(722), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1027), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2887), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [91617] = 7, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(2995), 1, + anon_sym_DOT, + ACTIONS(2997), 1, + anon_sym___future__, + STATE(1928), 1, + aux_sym_import_prefix_repeat1, + STATE(2038), 1, + sym_import_prefix, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(2454), 2, + sym_relative_import, + sym_dotted_name, + [91641] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2999), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [91657] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3001), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [91673] = 7, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2834), 1, + anon_sym_COLON, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3003), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [91697] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3005), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [91719] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3007), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [91741] = 7, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3009), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1294), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [91765] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3011), 1, + anon_sym_LBRACE, + ACTIONS(3015), 1, + sym__not_escape_sequence, + ACTIONS(3017), 1, + sym_string_end, + STATE(1695), 1, + aux_sym_string_content_repeat1, + ACTIONS(3013), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [91789] = 6, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2993), 1, + anon_sym_RPAREN, + ACTIONS(3019), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1688), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91811] = 6, + ACTIONS(2623), 1, + anon_sym_async, + ACTIONS(2625), 1, + anon_sym_for, + ACTIONS(2954), 1, + anon_sym_RPAREN, + ACTIONS(3019), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1717), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [91833] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + [91855] = 4, + ACTIONS(3021), 1, + anon_sym_DOT, + STATE(1692), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 5, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [91873] = 4, + ACTIONS(2861), 1, + anon_sym_DOT, + STATE(1664), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2804), 5, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [91891] = 4, + ACTIONS(3021), 1, + anon_sym_DOT, + STATE(1698), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2804), 5, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [91909] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [91923] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3023), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [91945] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3025), 1, + anon_sym_LBRACE, + ACTIONS(3030), 1, + sym__not_escape_sequence, + ACTIONS(3033), 1, + sym_string_end, + STATE(1695), 1, + aux_sym_string_content_repeat1, + ACTIONS(3027), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [91969] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(2946), 1, + anon_sym_COMMA, + ACTIONS(3035), 1, + anon_sym_COLON, + STATE(2081), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [91995] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_and, + anon_sym_or, + [92009] = 4, + ACTIONS(3037), 1, + anon_sym_DOT, + STATE(1698), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 5, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [92027] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2794), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_EQ, + [92049] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1858), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [92063] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3048), 1, + anon_sym_COMMA, + ACTIONS(3050), 1, + anon_sym_COLON, + STATE(2101), 1, + aux_sym_match_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92089] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3052), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + [92103] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(2946), 1, + anon_sym_COMMA, + ACTIONS(3054), 1, + anon_sym_COLON, + STATE(2081), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92129] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3056), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + [92143] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2767), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_EQ, + [92165] = 4, + ACTIONS(704), 1, + sym_string_start, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1043), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2887), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [92183] = 4, + ACTIONS(2861), 1, + anon_sym_DOT, + STATE(1691), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 5, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [92201] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(3058), 1, + anon_sym_COMMA, + ACTIONS(3060), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2076), 1, + aux_sym_dictionary_repeat1, + STATE(2324), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92227] = 8, + ACTIONS(2726), 1, + anon_sym_RPAREN, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3062), 1, + anon_sym_COMMA, + STATE(1998), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92253] = 6, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2954), 1, + anon_sym_RBRACK, + ACTIONS(3064), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1652), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [92275] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2944), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_EQ, + [92297] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2769), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_EQ, + [92319] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3066), 1, + anon_sym_COMMA, + ACTIONS(3068), 1, + anon_sym_COLON, + STATE(2177), 1, + aux_sym_match_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92345] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3052), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + [92359] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2761), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [92373] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3056), 7, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACE, + [92387] = 6, + ACTIONS(2936), 1, + anon_sym_RPAREN, + ACTIONS(3070), 1, + anon_sym_if, + ACTIONS(3073), 1, + anon_sym_async, + ACTIONS(3076), 1, + anon_sym_for, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1717), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [92409] = 8, + ACTIONS(2639), 1, + anon_sym_RPAREN, + ACTIONS(2641), 1, + anon_sym_COMMA, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + STATE(2113), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92435] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 7, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [92449] = 8, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(2946), 1, + anon_sym_COMMA, + ACTIONS(3079), 1, + anon_sym_COLON, + STATE(2081), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92475] = 5, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3081), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2773), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_EQ, + [92495] = 8, + ACTIONS(2605), 1, + anon_sym_async, + ACTIONS(2607), 1, + anon_sym_for, + ACTIONS(3084), 1, + anon_sym_COMMA, + ACTIONS(3086), 1, + anon_sym_RBRACE, + STATE(1677), 1, + sym_for_in_clause, + STATE(2185), 1, + aux_sym_dictionary_repeat1, + STATE(2483), 1, + sym__comprehension_clauses, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92521] = 4, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + [92539] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + [92553] = 8, + ACTIONS(3088), 1, + sym_identifier, + ACTIONS(3090), 1, + anon_sym_LPAREN, + ACTIONS(3092), 1, + anon_sym_STAR, + STATE(1900), 1, + sym_dotted_name, + STATE(1943), 1, + sym_aliased_import, + STATE(2263), 1, + sym_wildcard_import, + STATE(2265), 1, + sym__import_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [92579] = 3, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2771), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_EQ, + anon_sym_or, + [92595] = 6, + ACTIONS(2649), 1, + anon_sym_async, + ACTIONS(2651), 1, + anon_sym_for, + ACTIONS(2993), 1, + anon_sym_RBRACK, + ACTIONS(3064), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1710), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [92617] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [92638] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3096), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3098), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [92655] = 4, + ACTIONS(3100), 1, + anon_sym_COMMA, + STATE(1755), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3102), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [92672] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3104), 2, + anon_sym_COMMA, + anon_sym_COLON, + [92693] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3106), 2, + sym__newline, + anon_sym_SEMI, + [92714] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [92735] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [92756] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3108), 2, + anon_sym_COMMA, + anon_sym_COLON, + [92777] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3007), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [92798] = 4, + ACTIONS(3110), 1, + anon_sym_DOT, + STATE(1737), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 4, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_as, + [92815] = 4, + ACTIONS(3115), 1, + anon_sym_COMMA, + STATE(1799), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3113), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [92832] = 4, + ACTIONS(3119), 1, + anon_sym_COMMA, + STATE(1796), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3117), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [92849] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3121), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3123), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [92866] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1280), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [92887] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3125), 2, + anon_sym_COMMA, + anon_sym_COLON, + [92908] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3127), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [92929] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3052), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + [92942] = 4, + ACTIONS(3129), 1, + anon_sym_COMMA, + STATE(1749), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1114), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [92959] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3131), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3133), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [92976] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3135), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3137), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [92993] = 4, + ACTIONS(3141), 1, + anon_sym_PIPE, + STATE(1748), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [93010] = 4, + ACTIONS(3144), 1, + anon_sym_COMMA, + STATE(1749), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [93027] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3125), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93048] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2812), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93069] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3147), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3149), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [93086] = 4, + ACTIONS(3153), 1, + anon_sym_PIPE, + STATE(1787), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3151), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [93103] = 4, + ACTIONS(3155), 1, + anon_sym_COMMA, + STATE(1786), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3117), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [93120] = 4, + ACTIONS(3157), 1, + anon_sym_COMMA, + STATE(1784), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3113), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [93137] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3159), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3161), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [93154] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 2, + anon_sym_COMMA, + anon_sym_COLON, + [93175] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3127), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93196] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2812), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [93217] = 4, + ACTIONS(3165), 1, + anon_sym_PIPE, + STATE(1781), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3163), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [93234] = 3, + ACTIONS(3167), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [93249] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3007), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93270] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3007), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [93291] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2812), 2, + sym__newline, + anon_sym_SEMI, + [93312] = 4, + ACTIONS(3171), 1, + anon_sym_COMMA, + STATE(1783), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(870), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [93329] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93350] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3108), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93371] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3173), 2, + anon_sym_COMMA, + anon_sym_COLON, + [93392] = 4, + ACTIONS(3175), 1, + anon_sym_COMMA, + STATE(1769), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [93409] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3173), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93430] = 3, + ACTIONS(3180), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [93445] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 6, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [93458] = 7, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3182), 1, + anon_sym_COMMA, + ACTIONS(3184), 1, + anon_sym_as, + ACTIONS(3186), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [93481] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3188), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2887), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [93496] = 4, + ACTIONS(3153), 1, + anon_sym_PIPE, + STATE(1753), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3163), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [93513] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3056), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + [93526] = 4, + ACTIONS(3190), 1, + anon_sym_COMMA, + STATE(1769), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3192), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [93543] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 6, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [93556] = 6, + ACTIONS(2704), 1, + anon_sym_as, + ACTIONS(2706), 1, + anon_sym_if, + ACTIONS(2710), 1, + anon_sym_and, + ACTIONS(2712), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2855), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [93577] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3194), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3196), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [93594] = 4, + ACTIONS(3165), 1, + anon_sym_PIPE, + STATE(1748), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3151), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [93611] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [93632] = 4, + ACTIONS(3198), 1, + anon_sym_COMMA, + STATE(1783), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 4, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [93649] = 4, + ACTIONS(3201), 1, + anon_sym_COMMA, + STATE(1784), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [93666] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3204), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93687] = 4, + ACTIONS(3206), 1, + anon_sym_COMMA, + STATE(1784), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3192), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [93704] = 4, + ACTIONS(3208), 1, + anon_sym_PIPE, + STATE(1787), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [93721] = 4, + ACTIONS(3211), 1, + anon_sym_COMMA, + STATE(1769), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3113), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [93738] = 3, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3213), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(2887), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [93753] = 4, + ACTIONS(3215), 1, + anon_sym_COMMA, + STATE(1777), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3117), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [93770] = 4, + ACTIONS(3219), 1, + anon_sym_AT, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + STATE(1791), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + ACTIONS(3217), 3, + anon_sym_async, + anon_sym_def, + anon_sym_class, + [93787] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1294), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [93808] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3222), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3224), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [93825] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3226), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [93846] = 6, + ACTIONS(2830), 1, + anon_sym_as, + ACTIONS(2832), 1, + anon_sym_if, + ACTIONS(2838), 1, + anon_sym_and, + ACTIONS(2840), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3228), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [93867] = 4, + ACTIONS(3230), 1, + anon_sym_COMMA, + STATE(1799), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3192), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [93884] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3056), 6, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + [93897] = 7, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3184), 1, + anon_sym_as, + ACTIONS(3232), 1, + anon_sym_COMMA, + ACTIONS(3234), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [93920] = 4, + ACTIONS(3236), 1, + anon_sym_COMMA, + STATE(1799), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [93937] = 4, + ACTIONS(3239), 1, + anon_sym_COMMA, + STATE(1738), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3102), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [93954] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3052), 6, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_RBRACK, + [93967] = 4, + ACTIONS(3241), 1, + anon_sym_DOT, + STATE(1804), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2763), 4, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_as, + [93984] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3243), 2, + sym__newline, + anon_sym_SEMI, + [94005] = 4, + ACTIONS(3241), 1, + anon_sym_DOT, + STATE(1737), 1, + aux_sym_dotted_name_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2804), 4, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_as, + [94022] = 4, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [94039] = 6, + ACTIONS(3040), 1, + anon_sym_as, + ACTIONS(3042), 1, + anon_sym_if, + ACTIONS(3044), 1, + anon_sym_and, + ACTIONS(3046), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3245), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [94060] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3247), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3249), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [94077] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_line_continuation, + ACTIONS(3251), 2, + anon_sym_LBRACE, + sym__not_escape_sequence, + ACTIONS(3253), 4, + sym__string_content, + sym_string_end, + sym__escape_interpolation, + sym_escape_sequence, + [94094] = 4, + ACTIONS(3255), 1, + anon_sym_COMMA, + STATE(1788), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3102), 4, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [94111] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3257), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94123] = 6, + ACTIONS(3259), 1, + anon_sym_LBRACE, + ACTIONS(3261), 1, + anon_sym_RBRACE, + ACTIONS(3263), 1, + aux_sym_format_specifier_token1, + STATE(1827), 1, + aux_sym_format_specifier_repeat1, + STATE(2051), 1, + sym_interpolation, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + [94143] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3265), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94155] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3267), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94175] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3269), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94187] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3271), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94207] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3273), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94227] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3275), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94239] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3265), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94251] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3277), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94263] = 4, + ACTIONS(3279), 1, + anon_sym_PIPE, + STATE(1874), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3151), 3, + anon_sym_COMMA, + anon_sym_as, + anon_sym_RBRACK, + [94279] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3281), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94299] = 5, + ACTIONS(3088), 1, + sym_identifier, + STATE(1963), 1, + sym_dotted_name, + STATE(2039), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3283), 2, + sym__newline, + anon_sym_SEMI, + [94317] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3285), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94329] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3275), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94341] = 6, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3289), 1, + anon_sym_RBRACE, + ACTIONS(3291), 1, + anon_sym_EQ, + ACTIONS(3293), 1, + sym_type_conversion, + STATE(2553), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94361] = 6, + ACTIONS(3088), 1, + sym_identifier, + ACTIONS(3295), 1, + anon_sym_LPAREN, + STATE(1900), 1, + sym_dotted_name, + STATE(1943), 1, + sym_aliased_import, + STATE(2269), 1, + sym__import_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94381] = 6, + ACTIONS(3297), 1, + anon_sym_LBRACE, + ACTIONS(3300), 1, + anon_sym_RBRACE, + ACTIONS(3302), 1, + aux_sym_format_specifier_token1, + STATE(1827), 1, + aux_sym_format_specifier_repeat1, + STATE(2051), 1, + sym_interpolation, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + [94401] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94413] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3305), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94425] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3307), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94437] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [94449] = 5, + ACTIONS(3088), 1, + sym_identifier, + STATE(1963), 1, + sym_dotted_name, + STATE(2039), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3309), 2, + sym__newline, + anon_sym_SEMI, + [94467] = 4, + ACTIONS(3311), 1, + anon_sym_PIPE, + STATE(1833), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + [94483] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2545), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [94495] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3314), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94515] = 5, + ACTIONS(3088), 1, + sym_identifier, + STATE(1963), 1, + sym_dotted_name, + STATE(2039), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3309), 2, + sym__newline, + anon_sym_SEMI, + [94533] = 4, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2786), 3, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [94549] = 4, + ACTIONS(3279), 1, + anon_sym_PIPE, + STATE(1820), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3163), 3, + anon_sym_COMMA, + anon_sym_as, + anon_sym_RBRACK, + [94565] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3316), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [94577] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [94589] = 6, + ACTIONS(3318), 1, + anon_sym_COMMA, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3322), 1, + anon_sym_COLON, + STATE(1974), 1, + aux_sym_case_clause_repeat1, + STATE(2484), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94609] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2553), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [94621] = 3, + ACTIONS(3324), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [94635] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3277), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94647] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3326), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94659] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3328), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94679] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2814), 5, + sym__newline, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COMMA, + anon_sym_as, + [94691] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3330), 1, + anon_sym_COMMA, + ACTIONS(3332), 1, + anon_sym_COLON, + STATE(1974), 1, + aux_sym_case_clause_repeat1, + STATE(2340), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94711] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3334), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94731] = 4, + ACTIONS(3336), 1, + anon_sym_COMMA, + STATE(1865), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1114), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + [94747] = 3, + ACTIONS(3338), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [94761] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3340), 1, + anon_sym_as, + ACTIONS(3342), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94781] = 6, + ACTIONS(3259), 1, + anon_sym_LBRACE, + ACTIONS(3344), 1, + anon_sym_RBRACE, + ACTIONS(3346), 1, + aux_sym_format_specifier_token1, + STATE(1811), 1, + aux_sym_format_specifier_repeat1, + STATE(2051), 1, + sym_interpolation, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + [94801] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3348), 1, + anon_sym_COMMA, + ACTIONS(3350), 1, + anon_sym_COLON, + STATE(1974), 1, + aux_sym_case_clause_repeat1, + STATE(2486), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94821] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94833] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3285), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94845] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3352), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94857] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3316), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [94869] = 6, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3354), 1, + anon_sym_RBRACE, + ACTIONS(3356), 1, + anon_sym_EQ, + ACTIONS(3358), 1, + sym_type_conversion, + STATE(2450), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [94889] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [94901] = 4, + ACTIONS(3360), 1, + anon_sym_PIPE, + STATE(1833), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3151), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + [94917] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3362), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [94929] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3305), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [94941] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [94953] = 4, + ACTIONS(3364), 1, + anon_sym_COMMA, + STATE(1865), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2792), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_from, + [94969] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1330), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [94981] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3367), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + [94993] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3326), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95005] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3352), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95017] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3362), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95029] = 4, + ACTIONS(3360), 1, + anon_sym_PIPE, + STATE(1861), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3163), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + [95045] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3369), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95065] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3371), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95077] = 4, + ACTIONS(3373), 1, + anon_sym_PIPE, + STATE(1874), 1, + aux_sym_case_or_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 3, + anon_sym_COMMA, + anon_sym_as, + anon_sym_RBRACK, + [95093] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3376), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95113] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3378), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95133] = 6, + ACTIONS(2778), 1, + anon_sym_as, + ACTIONS(2780), 1, + anon_sym_if, + ACTIONS(2782), 1, + anon_sym_and, + ACTIONS(2784), 1, + anon_sym_or, + ACTIONS(3380), 1, + sym__newline, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95153] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3382), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95165] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3384), 1, + anon_sym_COMMA, + ACTIONS(3386), 1, + anon_sym_COLON, + STATE(1848), 1, + aux_sym_case_clause_repeat1, + STATE(2517), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95185] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3388), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95205] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3307), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95217] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3390), 1, + anon_sym_COMMA, + ACTIONS(3392), 1, + anon_sym_COLON, + STATE(1974), 1, + aux_sym_case_clause_repeat1, + STATE(2440), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95237] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3367), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + [95249] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3371), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95261] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3257), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95273] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3340), 1, + anon_sym_as, + ACTIONS(3394), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95293] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3382), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95305] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3316), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [95317] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3386), 1, + anon_sym_COLON, + ACTIONS(3396), 1, + anon_sym_COMMA, + STATE(1882), 1, + aux_sym_case_clause_repeat1, + STATE(2517), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95337] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3398), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95357] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3400), 1, + anon_sym_COMMA, + ACTIONS(3402), 1, + anon_sym_COLON, + STATE(1854), 1, + aux_sym_case_clause_repeat1, + STATE(2477), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95377] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3367), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [95389] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3178), 5, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [95401] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3269), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95413] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95425] = 6, + ACTIONS(3320), 1, + anon_sym_if, + ACTIONS(3396), 1, + anon_sym_COMMA, + ACTIONS(3402), 1, + anon_sym_COLON, + STATE(1841), 1, + aux_sym_case_clause_repeat1, + STATE(2477), 1, + sym_if_clause, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95445] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3404), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95465] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2887), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95477] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3406), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95497] = 5, + ACTIONS(3410), 1, + anon_sym_COMMA, + ACTIONS(3412), 1, + anon_sym_as, + STATE(1977), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3408), 2, + sym__newline, + anon_sym_SEMI, + [95515] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + [95527] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3414), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95547] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3416), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95567] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(3418), 1, + anon_sym_else, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95587] = 6, + ACTIONS(2847), 1, + anon_sym_and, + ACTIONS(2849), 1, + anon_sym_or, + ACTIONS(2881), 1, + anon_sym_as, + ACTIONS(2883), 1, + anon_sym_if, + ACTIONS(2950), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95607] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 5, + anon_sym_COMMA, + anon_sym_as, + anon_sym_STAR_STAR, + anon_sym_PIPE, + anon_sym_RBRACE, + [95619] = 4, + ACTIONS(3420), 1, + anon_sym_COMMA, + STATE(1907), 1, + aux_sym_case_items_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3423), 2, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [95634] = 4, + ACTIONS(3427), 1, + anon_sym_COMMA, + STATE(1985), 1, + aux_sym_global_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3425), 2, + sym__newline, + anon_sym_SEMI, + [95649] = 4, + ACTIONS(3431), 1, + anon_sym_COLON, + ACTIONS(3433), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [95664] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3326), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95675] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3352), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95686] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3435), 4, + anon_sym_async, + anon_sym_def, + anon_sym_class, + anon_sym_AT, + [95697] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3371), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95708] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3326), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95719] = 5, + ACTIONS(3283), 1, + anon_sym_RPAREN, + ACTIONS(3437), 1, + sym_identifier, + STATE(2022), 1, + sym_dotted_name, + STATE(2288), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95736] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3257), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95747] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3285), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95758] = 5, + ACTIONS(3439), 1, + sym_identifier, + ACTIONS(3441), 1, + anon_sym_RPAREN, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2237), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95775] = 5, + ACTIONS(3439), 1, + sym_identifier, + ACTIONS(3443), 1, + anon_sym_RPAREN, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2321), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [95792] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3277), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95803] = 4, + ACTIONS(3427), 1, + anon_sym_COMMA, + STATE(1985), 1, + aux_sym_global_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3445), 2, + sym__newline, + anon_sym_SEMI, + [95818] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3285), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95829] = 3, + ACTIONS(3449), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 3, + anon_sym_COMMA, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [95842] = 4, + ACTIONS(3451), 1, + anon_sym_COMMA, + STATE(1925), 1, + aux_sym_case_items_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3453), 2, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [95857] = 4, + ACTIONS(3455), 1, + anon_sym_COMMA, + STATE(1907), 1, + aux_sym_case_items_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2561), 2, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [95872] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3362), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95883] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3371), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95894] = 4, + ACTIONS(3459), 1, + anon_sym_DOT, + STATE(1961), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3457), 2, + anon_sym_import, + sym_identifier, + [95909] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3362), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95920] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3257), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95931] = 4, + ACTIONS(3427), 1, + anon_sym_COMMA, + STATE(1921), 1, + aux_sym_global_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3461), 2, + sym__newline, + anon_sym_SEMI, + [95946] = 4, + ACTIONS(3465), 1, + anon_sym_COMMA, + STATE(1958), 1, + aux_sym_list_splat_or_expressions_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3463), 2, + sym__newline, + anon_sym_SEMI, + [95961] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3382), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [95972] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3382), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [95983] = 5, + ACTIONS(3408), 1, + anon_sym_RPAREN, + ACTIONS(3467), 1, + anon_sym_COMMA, + ACTIONS(3469), 1, + anon_sym_as, + STATE(2100), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96000] = 4, + ACTIONS(3427), 1, + anon_sym_COMMA, + STATE(1908), 1, + aux_sym_global_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3471), 2, + sym__newline, + anon_sym_SEMI, + [96015] = 3, + ACTIONS(3473), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [96028] = 5, + ACTIONS(2298), 1, + anon_sym_DASH, + ACTIONS(2306), 1, + sym_integer, + ACTIONS(2308), 1, + sym_float, + STATE(1829), 1, + sym_case_literal_integer_or_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96045] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96056] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3305), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96067] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3352), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96078] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96089] = 4, + ACTIONS(3410), 1, + anon_sym_COMMA, + STATE(1983), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3408), 2, + sym__newline, + anon_sym_SEMI, + [96104] = 4, + ACTIONS(3475), 1, + anon_sym_COMMA, + STATE(1944), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3478), 2, + anon_sym_if, + anon_sym_COLON, + [96119] = 5, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3480), 1, + anon_sym_RBRACE, + ACTIONS(3482), 1, + sym_type_conversion, + STATE(2467), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96136] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3307), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96147] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3275), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96158] = 5, + ACTIONS(2340), 1, + anon_sym_DASH, + ACTIONS(2348), 1, + sym_integer, + ACTIONS(2350), 1, + sym_float, + STATE(1966), 1, + sym_case_literal_integer_or_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96175] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3265), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96186] = 4, + ACTIONS(3484), 1, + anon_sym_COMMA, + STATE(1865), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1300), 2, + sym__newline, + anon_sym_SEMI, + [96201] = 5, + ACTIONS(3439), 1, + sym_identifier, + ACTIONS(3486), 1, + anon_sym_RPAREN, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2313), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96218] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2887), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96229] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3169), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96240] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3269), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96251] = 4, + ACTIONS(3490), 1, + anon_sym_COMMA, + STATE(1973), 1, + aux_sym_print_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3488), 2, + sym__newline, + anon_sym_SEMI, + [96266] = 5, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3492), 1, + anon_sym_RBRACE, + ACTIONS(3494), 1, + sym_type_conversion, + STATE(2449), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96283] = 4, + ACTIONS(3496), 1, + anon_sym_COMMA, + STATE(1984), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3498), 2, + anon_sym_if, + anon_sym_COLON, + [96298] = 4, + ACTIONS(3500), 1, + anon_sym_COMMA, + STATE(1964), 1, + aux_sym_list_splat_or_expressions_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1132), 2, + sym__newline, + anon_sym_SEMI, + [96313] = 4, + ACTIONS(2823), 1, + anon_sym_COMMA, + STATE(1865), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3502), 2, + sym__newline, + anon_sym_SEMI, + [96328] = 4, + ACTIONS(2823), 1, + anon_sym_COMMA, + STATE(1865), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3504), 2, + sym__newline, + anon_sym_SEMI, + [96343] = 4, + ACTIONS(3508), 1, + anon_sym_DOT, + STATE(1961), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3506), 2, + anon_sym_import, + sym_identifier, + [96358] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2887), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96369] = 3, + ACTIONS(3412), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3511), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [96382] = 4, + ACTIONS(3515), 1, + anon_sym_COMMA, + STATE(1964), 1, + aux_sym_list_splat_or_expressions_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3513), 2, + sym__newline, + anon_sym_SEMI, + [96397] = 4, + ACTIONS(3520), 1, + anon_sym_COMMA, + STATE(1965), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3518), 2, + sym__newline, + anon_sym_SEMI, + [96412] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3305), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96423] = 5, + ACTIONS(3437), 1, + sym_identifier, + STATE(1935), 1, + sym_dotted_name, + STATE(2129), 1, + sym_aliased_import, + STATE(2431), 1, + sym__import_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96440] = 5, + ACTIONS(3439), 1, + sym_identifier, + ACTIONS(3523), 1, + anon_sym_RPAREN, + STATE(2175), 1, + sym_case_keyword_pattern, + STATE(2278), 1, + sym_case_keyword_patterns, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96457] = 5, + ACTIONS(3437), 1, + sym_identifier, + STATE(1935), 1, + sym_dotted_name, + STATE(2129), 1, + sym_aliased_import, + STATE(2427), 1, + sym__import_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96474] = 5, + ACTIONS(3309), 1, + anon_sym_RPAREN, + ACTIONS(3437), 1, + sym_identifier, + STATE(2022), 1, + sym_dotted_name, + STATE(2288), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96491] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3139), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96502] = 4, + ACTIONS(3527), 1, + anon_sym_COMMA, + STATE(1978), 1, + aux_sym_print_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3525), 2, + sym__newline, + anon_sym_SEMI, + [96517] = 4, + ACTIONS(3531), 1, + anon_sym_COMMA, + STATE(1978), 1, + aux_sym_print_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3529), 2, + sym__newline, + anon_sym_SEMI, + [96532] = 4, + ACTIONS(3533), 1, + anon_sym_COMMA, + STATE(1974), 1, + aux_sym_case_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3536), 2, + anon_sym_if, + anon_sym_COLON, + [96547] = 5, + ACTIONS(3309), 1, + anon_sym_RPAREN, + ACTIONS(3437), 1, + sym_identifier, + STATE(2022), 1, + sym_dotted_name, + STATE(2288), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96564] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3265), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96575] = 4, + ACTIONS(3540), 1, + anon_sym_COMMA, + STATE(1965), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3538), 2, + sym__newline, + anon_sym_SEMI, + [96590] = 4, + ACTIONS(3544), 1, + anon_sym_COMMA, + STATE(1978), 1, + aux_sym_print_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3542), 2, + sym__newline, + anon_sym_SEMI, + [96605] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3269), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96616] = 5, + ACTIONS(2362), 1, + anon_sym_DASH, + ACTIONS(2372), 1, + sym_integer, + ACTIONS(2374), 1, + sym_float, + STATE(1940), 1, + sym_case_literal_integer_or_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96633] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3307), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96644] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3275), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [96655] = 4, + ACTIONS(3547), 1, + anon_sym_COMMA, + STATE(1965), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3538), 2, + sym__newline, + anon_sym_SEMI, + [96670] = 4, + ACTIONS(3549), 1, + anon_sym_COMMA, + STATE(1944), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2326), 2, + anon_sym_if, + anon_sym_COLON, + [96685] = 4, + ACTIONS(3553), 1, + anon_sym_COMMA, + STATE(1985), 1, + aux_sym_global_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3551), 2, + sym__newline, + anon_sym_SEMI, + [96700] = 5, + ACTIONS(3088), 1, + sym_identifier, + STATE(1900), 1, + sym_dotted_name, + STATE(1943), 1, + sym_aliased_import, + STATE(2251), 1, + sym__import_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96717] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3277), 4, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + anon_sym_RBRACK, + [96728] = 5, + ACTIONS(2396), 1, + anon_sym_DASH, + ACTIONS(2404), 1, + sym_integer, + ACTIONS(2406), 1, + sym_float, + STATE(1863), 1, + sym_case_literal_integer_or_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96745] = 4, + ACTIONS(3556), 1, + anon_sym_SEMI, + ACTIONS(3558), 1, + sym__newline, + STATE(2124), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96759] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3560), 3, + anon_sym_COMMA, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [96769] = 4, + ACTIONS(2597), 1, + anon_sym_COMMA, + ACTIONS(2609), 1, + anon_sym_RBRACE, + STATE(1993), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96783] = 4, + ACTIONS(1286), 1, + anon_sym_RPAREN, + ACTIONS(3562), 1, + anon_sym_COMMA, + STATE(2063), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96797] = 4, + ACTIONS(1084), 1, + anon_sym_RBRACE, + ACTIONS(3564), 1, + anon_sym_COMMA, + STATE(2004), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96811] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3566), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96825] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3568), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96839] = 4, + ACTIONS(3570), 1, + anon_sym_SEMI, + ACTIONS(3572), 1, + sym__newline, + STATE(2162), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96853] = 4, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(3574), 1, + anon_sym_RBRACE, + STATE(2249), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96867] = 4, + ACTIONS(1114), 1, + anon_sym_RPAREN, + ACTIONS(3576), 1, + anon_sym_COMMA, + STATE(2003), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96881] = 4, + ACTIONS(3578), 1, + anon_sym_COMMA, + ACTIONS(3581), 1, + anon_sym_COLON, + STATE(1999), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96895] = 4, + ACTIONS(3583), 1, + anon_sym_COMMA, + ACTIONS(3586), 1, + anon_sym_COLON, + STATE(2000), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96909] = 4, + ACTIONS(2507), 1, + anon_sym_RBRACK, + ACTIONS(3588), 1, + anon_sym_COMMA, + STATE(2001), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96923] = 3, + ACTIONS(1459), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1461), 2, + anon_sym_except_STAR, + anon_sym_finally, + [96935] = 4, + ACTIONS(2792), 1, + anon_sym_RPAREN, + ACTIONS(3591), 1, + anon_sym_COMMA, + STATE(2003), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96949] = 4, + ACTIONS(3094), 1, + anon_sym_RBRACE, + ACTIONS(3594), 1, + anon_sym_COMMA, + STATE(2004), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96963] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3478), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [96973] = 3, + ACTIONS(3597), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [96985] = 4, + ACTIONS(3599), 1, + anon_sym_COMMA, + ACTIONS(3602), 1, + anon_sym_COLON, + STATE(2007), 1, + aux_sym_match_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [96999] = 4, + ACTIONS(3498), 1, + anon_sym_RPAREN, + ACTIONS(3604), 1, + anon_sym_COMMA, + STATE(2010), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97013] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3551), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [97023] = 4, + ACTIONS(2326), 1, + anon_sym_RPAREN, + ACTIONS(3606), 1, + anon_sym_COMMA, + STATE(2057), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97037] = 4, + ACTIONS(3608), 1, + anon_sym_COMMA, + ACTIONS(3611), 1, + anon_sym_RBRACE, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97051] = 3, + ACTIONS(3615), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3613), 2, + anon_sym_COMMA, + anon_sym_COLON, + [97063] = 3, + ACTIONS(3123), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3121), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97075] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2199), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_in, + [97085] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3617), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97099] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3619), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97113] = 3, + ACTIONS(3249), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3247), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97125] = 3, + ACTIONS(3253), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3251), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97137] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3621), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97151] = 4, + ACTIONS(3094), 1, + anon_sym_RPAREN, + ACTIONS(3623), 1, + anon_sym_COMMA, + STATE(2020), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97165] = 3, + ACTIONS(3098), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3096), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97177] = 3, + ACTIONS(3469), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3511), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [97189] = 3, + ACTIONS(3626), 1, + anon_sym_as, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [97201] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2132), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_in, + [97211] = 4, + ACTIONS(1114), 1, + anon_sym_RBRACK, + ACTIONS(3628), 1, + anon_sym_COMMA, + STATE(2026), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97225] = 4, + ACTIONS(2792), 1, + anon_sym_RBRACK, + ACTIONS(3630), 1, + anon_sym_COMMA, + STATE(2026), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97239] = 4, + ACTIONS(3437), 1, + sym_identifier, + STATE(2022), 1, + sym_dotted_name, + STATE(2288), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97253] = 3, + ACTIONS(3161), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3159), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97265] = 3, + ACTIONS(3149), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3147), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97277] = 3, + ACTIONS(3137), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3135), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97289] = 3, + ACTIONS(1453), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1451), 2, + anon_sym_except_STAR, + anon_sym_finally, + [97301] = 4, + ACTIONS(3586), 1, + anon_sym_RPAREN, + ACTIONS(3633), 1, + anon_sym_COMMA, + STATE(2032), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97315] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3636), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97329] = 4, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3638), 1, + anon_sym_RBRACE, + STATE(2426), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97343] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3640), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [97353] = 4, + ACTIONS(3642), 1, + anon_sym_COMMA, + ACTIONS(3644), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97367] = 4, + ACTIONS(3646), 1, + anon_sym_COMMA, + ACTIONS(3648), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97381] = 4, + ACTIONS(2288), 1, + sym_identifier, + ACTIONS(3650), 1, + anon_sym_import, + STATE(2504), 1, + sym_dotted_name, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97395] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3511), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [97405] = 4, + ACTIONS(1010), 1, + anon_sym_RPAREN, + ACTIONS(3652), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97419] = 4, + ACTIONS(1008), 1, + anon_sym_RPAREN, + ACTIONS(3654), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97433] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3396), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [97443] = 4, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3656), 1, + anon_sym_RBRACE, + STATE(2445), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97457] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3658), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97471] = 3, + ACTIONS(3660), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3613), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [97483] = 4, + ACTIONS(992), 1, + anon_sym_RPAREN, + ACTIONS(3662), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97497] = 4, + ACTIONS(990), 1, + anon_sym_RPAREN, + ACTIONS(3664), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97511] = 4, + ACTIONS(3666), 1, + anon_sym_COMMA, + ACTIONS(3668), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97525] = 4, + ACTIONS(3670), 1, + anon_sym_COMMA, + ACTIONS(3672), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97539] = 4, + ACTIONS(2895), 1, + anon_sym_COMMA, + ACTIONS(2897), 1, + anon_sym_RBRACK, + STATE(2049), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97553] = 3, + ACTIONS(3676), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3674), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97565] = 4, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3678), 1, + anon_sym_RBRACE, + STATE(2552), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97579] = 4, + ACTIONS(3680), 1, + anon_sym_RPAREN, + ACTIONS(3682), 1, + anon_sym_COMMA, + STATE(2047), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97593] = 4, + ACTIONS(2631), 1, + anon_sym_RPAREN, + ACTIONS(2633), 1, + anon_sym_COMMA, + STATE(2046), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97607] = 4, + ACTIONS(2609), 1, + anon_sym_RPAREN, + ACTIONS(2637), 1, + anon_sym_COMMA, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97621] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 3, + anon_sym_COMMA, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [97631] = 4, + ACTIONS(3478), 1, + anon_sym_RPAREN, + ACTIONS(3684), 1, + anon_sym_COMMA, + STATE(2057), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97645] = 4, + ACTIONS(3287), 1, + anon_sym_COLON, + ACTIONS(3687), 1, + anon_sym_RBRACE, + STATE(2472), 1, + sym_format_specifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97659] = 4, + ACTIONS(2899), 1, + anon_sym_COMMA, + ACTIONS(2901), 1, + anon_sym_RBRACK, + STATE(2036), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97673] = 4, + ACTIONS(3689), 1, + anon_sym_RPAREN, + ACTIONS(3691), 1, + anon_sym_COMMA, + STATE(2040), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97687] = 4, + ACTIONS(2684), 1, + anon_sym_RPAREN, + ACTIONS(2686), 1, + anon_sym_COMMA, + STATE(2041), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97701] = 4, + ACTIONS(3693), 1, + anon_sym_LPAREN, + ACTIONS(3695), 1, + anon_sym_COLON, + STATE(2456), 1, + sym_argument_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97715] = 4, + ACTIONS(3581), 1, + anon_sym_RPAREN, + ACTIONS(3697), 1, + anon_sym_COMMA, + STATE(2063), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97729] = 4, + ACTIONS(3094), 1, + anon_sym_RBRACK, + ACTIONS(3700), 1, + anon_sym_COMMA, + STATE(2064), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97743] = 4, + ACTIONS(3703), 1, + anon_sym_RPAREN, + ACTIONS(3705), 1, + anon_sym_COMMA, + STATE(2194), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97757] = 4, + ACTIONS(3088), 1, + sym_identifier, + STATE(1963), 1, + sym_dotted_name, + STATE(2039), 1, + sym_aliased_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97771] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2672), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97785] = 4, + ACTIONS(3518), 1, + anon_sym_RPAREN, + ACTIONS(3707), 1, + anon_sym_COMMA, + STATE(2068), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97799] = 4, + ACTIONS(3710), 1, + anon_sym_SEMI, + ACTIONS(3712), 1, + sym__newline, + STATE(2088), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97813] = 4, + ACTIONS(3714), 1, + anon_sym_COMMA, + ACTIONS(3716), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97827] = 4, + ACTIONS(3718), 1, + anon_sym_COMMA, + ACTIONS(3720), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97841] = 4, + ACTIONS(1046), 1, + anon_sym_RPAREN, + ACTIONS(3722), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97855] = 3, + ACTIONS(3133), 1, + aux_sym_format_specifier_token1, + ACTIONS(5), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3131), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + [97867] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2657), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97881] = 4, + ACTIONS(976), 1, + anon_sym_RPAREN, + ACTIONS(3724), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97895] = 4, + ACTIONS(1174), 1, + anon_sym_RBRACE, + ACTIONS(3726), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97909] = 3, + ACTIONS(3730), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3728), 2, + sym__newline, + anon_sym_SEMI, + [97921] = 4, + ACTIONS(2507), 1, + anon_sym_RPAREN, + ACTIONS(3732), 1, + anon_sym_COMMA, + STATE(2078), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97935] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3735), 3, + anon_sym_COMMA, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [97945] = 4, + ACTIONS(2923), 1, + anon_sym_COMMA, + ACTIONS(2925), 1, + anon_sym_RBRACK, + STATE(2070), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97959] = 4, + ACTIONS(1114), 1, + anon_sym_COLON, + ACTIONS(3737), 1, + anon_sym_COMMA, + STATE(2091), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97973] = 3, + ACTIONS(1442), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1440), 2, + anon_sym_except_STAR, + anon_sym_finally, + [97985] = 4, + ACTIONS(2982), 1, + anon_sym_COMMA, + ACTIONS(2984), 1, + anon_sym_RBRACE, + STATE(2098), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [97999] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3739), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98013] = 4, + ACTIONS(3741), 1, + anon_sym_RPAREN, + ACTIONS(3743), 1, + anon_sym_COMMA, + STATE(2072), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98027] = 4, + ACTIONS(2676), 1, + anon_sym_RPAREN, + ACTIONS(2678), 1, + anon_sym_COMMA, + STATE(2075), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98041] = 4, + ACTIONS(2595), 1, + anon_sym_RPAREN, + ACTIONS(3745), 1, + anon_sym_COMMA, + STATE(2032), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98055] = 4, + ACTIONS(597), 1, + sym__newline, + ACTIONS(3747), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98069] = 4, + ACTIONS(1166), 1, + anon_sym_RBRACE, + ACTIONS(3749), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98083] = 4, + ACTIONS(3751), 1, + anon_sym_SEMI, + ACTIONS(3754), 1, + sym__newline, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98097] = 4, + ACTIONS(2792), 1, + anon_sym_COLON, + ACTIONS(3756), 1, + anon_sym_COMMA, + STATE(2091), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98111] = 4, + ACTIONS(2969), 1, + anon_sym_COMMA, + ACTIONS(2971), 1, + anon_sym_RBRACE, + STATE(2089), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98125] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(3759), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98139] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(3761), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98153] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2668), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98167] = 4, + ACTIONS(1808), 1, + anon_sym_RBRACK, + ACTIONS(3763), 1, + anon_sym_COMMA, + STATE(2001), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98181] = 4, + ACTIONS(1084), 1, + anon_sym_RBRACK, + ACTIONS(3765), 1, + anon_sym_COMMA, + STATE(2064), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98195] = 4, + ACTIONS(1154), 1, + anon_sym_RBRACE, + ACTIONS(3767), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98209] = 3, + ACTIONS(2808), 1, + anon_sym_from, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2806), 2, + sym__newline, + anon_sym_SEMI, + [98221] = 4, + ACTIONS(3538), 1, + anon_sym_RPAREN, + ACTIONS(3769), 1, + anon_sym_COMMA, + STATE(2068), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98235] = 4, + ACTIONS(3771), 1, + anon_sym_COMMA, + ACTIONS(3773), 1, + anon_sym_COLON, + STATE(2007), 1, + aux_sym_match_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98249] = 4, + ACTIONS(3538), 1, + anon_sym_RPAREN, + ACTIONS(3775), 1, + anon_sym_COMMA, + STATE(2068), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98263] = 3, + ACTIONS(1455), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1457), 2, + anon_sym_except_STAR, + anon_sym_finally, + [98275] = 4, + ACTIONS(2639), 1, + anon_sym_RPAREN, + ACTIONS(2641), 1, + anon_sym_COMMA, + STATE(2113), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98289] = 4, + ACTIONS(3777), 1, + anon_sym_RPAREN, + ACTIONS(3779), 1, + anon_sym_COMMA, + STATE(2115), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98303] = 3, + ACTIONS(3781), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [98315] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(3783), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98329] = 4, + ACTIONS(2828), 1, + anon_sym_COMMA, + ACTIONS(2836), 1, + anon_sym_RBRACK, + STATE(2118), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98343] = 4, + ACTIONS(2595), 1, + anon_sym_COLON, + ACTIONS(3785), 1, + anon_sym_COMMA, + STATE(2000), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98357] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(3787), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98371] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3789), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98385] = 4, + ACTIONS(3791), 1, + anon_sym_COMMA, + ACTIONS(3793), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98399] = 4, + ACTIONS(962), 1, + anon_sym_RPAREN, + ACTIONS(3795), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98413] = 4, + ACTIONS(3797), 1, + anon_sym_COMMA, + ACTIONS(3799), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98427] = 4, + ACTIONS(1044), 1, + anon_sym_RPAREN, + ACTIONS(3801), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98441] = 4, + ACTIONS(1004), 1, + anon_sym_RPAREN, + ACTIONS(3803), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98455] = 4, + ACTIONS(3805), 1, + anon_sym_COMMA, + ACTIONS(3807), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98469] = 4, + ACTIONS(3809), 1, + anon_sym_COMMA, + ACTIONS(3811), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98483] = 4, + ACTIONS(1006), 1, + anon_sym_RPAREN, + ACTIONS(3813), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98497] = 4, + ACTIONS(3815), 1, + anon_sym_COMMA, + ACTIONS(3817), 1, + anon_sym_COLON, + STATE(2154), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98511] = 4, + ACTIONS(3819), 1, + anon_sym_RPAREN, + ACTIONS(3821), 1, + anon_sym_COMMA, + STATE(2087), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98525] = 4, + ACTIONS(2857), 1, + anon_sym_COMMA, + ACTIONS(2859), 1, + anon_sym_RBRACK, + STATE(2112), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98539] = 4, + ACTIONS(3823), 1, + anon_sym_RPAREN, + ACTIONS(3825), 1, + anon_sym_COMMA, + STATE(2116), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98553] = 4, + ACTIONS(607), 1, + sym__newline, + ACTIONS(3827), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98567] = 4, + ACTIONS(2615), 1, + anon_sym_RPAREN, + ACTIONS(2617), 1, + anon_sym_COMMA, + STATE(2119), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98581] = 4, + ACTIONS(1138), 1, + anon_sym_RBRACE, + ACTIONS(3829), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98595] = 4, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3831), 1, + anon_sym_in, + STATE(1454), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98609] = 4, + ACTIONS(2609), 1, + anon_sym_RBRACK, + ACTIONS(2643), 1, + anon_sym_COMMA, + STATE(2097), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98623] = 4, + ACTIONS(3408), 1, + anon_sym_RPAREN, + ACTIONS(3467), 1, + anon_sym_COMMA, + STATE(2102), 1, + aux_sym__import_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98637] = 4, + ACTIONS(1188), 1, + anon_sym_RBRACE, + ACTIONS(3833), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98651] = 3, + ACTIONS(3837), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3835), 2, + sym__newline, + anon_sym_SEMI, + [98663] = 4, + ACTIONS(591), 1, + sym__newline, + ACTIONS(3839), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98677] = 4, + ACTIONS(3693), 1, + anon_sym_LPAREN, + ACTIONS(3841), 1, + anon_sym_COLON, + STATE(2350), 1, + sym_argument_list, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98691] = 4, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(3843), 1, + anon_sym_RBRACE, + STATE(2310), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98705] = 4, + ACTIONS(2986), 1, + anon_sym_COMMA, + ACTIONS(2988), 1, + anon_sym_RBRACE, + STATE(2130), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98719] = 4, + ACTIONS(3845), 1, + anon_sym_RPAREN, + ACTIONS(3847), 1, + anon_sym_COMMA, + STATE(2141), 1, + aux_sym_case_positional_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98733] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2674), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98747] = 4, + ACTIONS(3850), 1, + anon_sym_RPAREN, + ACTIONS(3852), 1, + anon_sym_COMMA, + STATE(2138), 1, + aux_sym_case_keyword_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98761] = 4, + ACTIONS(3855), 1, + anon_sym_SEMI, + ACTIONS(3857), 1, + sym__newline, + STATE(2132), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98775] = 4, + ACTIONS(2978), 1, + anon_sym_COMMA, + ACTIONS(2980), 1, + anon_sym_RBRACE, + STATE(2126), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98789] = 4, + ACTIONS(3859), 1, + anon_sym_RPAREN, + ACTIONS(3861), 1, + anon_sym_COMMA, + STATE(2141), 1, + aux_sym_case_positional_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98803] = 4, + ACTIONS(3864), 1, + anon_sym_COMMA, + ACTIONS(3866), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98817] = 4, + ACTIONS(3058), 1, + anon_sym_COMMA, + ACTIONS(3060), 1, + anon_sym_RBRACE, + STATE(2076), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98831] = 4, + ACTIONS(3868), 1, + anon_sym_COMMA, + ACTIONS(3870), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98845] = 4, + ACTIONS(1028), 1, + anon_sym_RPAREN, + ACTIONS(3872), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98859] = 3, + ACTIONS(3874), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_COMMA, + anon_sym_COLON, + [98871] = 4, + ACTIONS(1030), 1, + anon_sym_RPAREN, + ACTIONS(3876), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98885] = 4, + ACTIONS(3819), 1, + anon_sym_COLON, + ACTIONS(3878), 1, + anon_sym_COMMA, + STATE(2109), 1, + aux_sym__parameters_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98899] = 4, + ACTIONS(2919), 1, + anon_sym_COMMA, + ACTIONS(2921), 1, + anon_sym_RBRACK, + STATE(2142), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98913] = 4, + ACTIONS(3880), 1, + anon_sym_RPAREN, + ACTIONS(3882), 1, + anon_sym_COMMA, + STATE(2138), 1, + aux_sym_case_keyword_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98927] = 4, + ACTIONS(3885), 1, + anon_sym_RPAREN, + ACTIONS(3887), 1, + anon_sym_COMMA, + STATE(2145), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98941] = 4, + ACTIONS(2680), 1, + anon_sym_RPAREN, + ACTIONS(2682), 1, + anon_sym_COMMA, + STATE(2147), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98955] = 4, + ACTIONS(1152), 1, + anon_sym_RBRACE, + ACTIONS(3889), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98969] = 4, + ACTIONS(1306), 1, + anon_sym_COLON, + ACTIONS(3891), 1, + anon_sym_COMMA, + STATE(1999), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98983] = 4, + ACTIONS(2635), 1, + anon_sym_RPAREN, + ACTIONS(2637), 1, + anon_sym_COMMA, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [98997] = 4, + ACTIONS(3893), 1, + anon_sym_RPAREN, + ACTIONS(3895), 1, + anon_sym_COMMA, + STATE(1992), 1, + aux_sym_with_clause_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99011] = 4, + ACTIONS(583), 1, + sym__newline, + ACTIONS(3897), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99025] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3423), 3, + anon_sym_COMMA, + anon_sym_STAR_STAR, + anon_sym_RBRACE, + [99035] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [99045] = 4, + ACTIONS(3899), 1, + anon_sym_SEMI, + ACTIONS(3901), 1, + sym__newline, + STATE(2178), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99059] = 4, + ACTIONS(2940), 1, + anon_sym_COMMA, + ACTIONS(2942), 1, + anon_sym_RBRACE, + STATE(2153), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99073] = 4, + ACTIONS(589), 1, + sym__newline, + ACTIONS(3903), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99087] = 4, + ACTIONS(3703), 1, + anon_sym_RBRACK, + ACTIONS(3905), 1, + anon_sym_COMMA, + STATE(2096), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99101] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2692), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99115] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2670), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99129] = 4, + ACTIONS(3478), 1, + anon_sym_RBRACK, + ACTIONS(3907), 1, + anon_sym_COMMA, + STATE(2166), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99143] = 4, + ACTIONS(3910), 1, + anon_sym_SEMI, + ACTIONS(3912), 1, + sym__newline, + STATE(2157), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99157] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3914), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [99167] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3735), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [99177] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3916), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [99187] = 3, + ACTIONS(3918), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3916), 2, + anon_sym_if, + anon_sym_COLON, + [99199] = 4, + ACTIONS(3921), 1, + anon_sym_COMMA, + ACTIONS(3923), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99213] = 4, + ACTIONS(2965), 1, + anon_sym_COMMA, + ACTIONS(2967), 1, + anon_sym_RBRACE, + STATE(2186), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99227] = 4, + ACTIONS(3925), 1, + anon_sym_COMMA, + ACTIONS(3927), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99241] = 4, + ACTIONS(3929), 1, + anon_sym_RPAREN, + ACTIONS(3931), 1, + anon_sym_COMMA, + STATE(2150), 1, + aux_sym_case_keyword_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99255] = 4, + ACTIONS(1056), 1, + anon_sym_RPAREN, + ACTIONS(3934), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99269] = 4, + ACTIONS(3936), 1, + anon_sym_COMMA, + ACTIONS(3938), 1, + anon_sym_COLON, + STATE(2007), 1, + aux_sym_match_statement_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99283] = 4, + ACTIONS(605), 1, + sym__newline, + ACTIONS(3940), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99297] = 4, + ACTIONS(1048), 1, + anon_sym_RPAREN, + ACTIONS(3942), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99311] = 3, + ACTIONS(1465), 1, + anon_sym_except, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1463), 2, + anon_sym_except_STAR, + anon_sym_finally, + [99323] = 4, + ACTIONS(3944), 1, + anon_sym_RPAREN, + ACTIONS(3946), 1, + anon_sym_COMMA, + STATE(2136), 1, + aux_sym_case_positional_patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99337] = 4, + ACTIONS(2865), 1, + anon_sym_COMMA, + ACTIONS(2867), 1, + anon_sym_RBRACK, + STATE(2172), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99351] = 4, + ACTIONS(3949), 1, + anon_sym_RPAREN, + ACTIONS(3951), 1, + anon_sym_COMMA, + STATE(2176), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99365] = 4, + ACTIONS(2664), 1, + anon_sym_RPAREN, + ACTIONS(2666), 1, + anon_sym_COMMA, + STATE(2179), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99379] = 4, + ACTIONS(1186), 1, + anon_sym_RBRACE, + ACTIONS(3953), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99393] = 4, + ACTIONS(1156), 1, + anon_sym_RBRACE, + ACTIONS(3955), 1, + anon_sym_COMMA, + STATE(2011), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99407] = 4, + ACTIONS(2326), 1, + anon_sym_RBRACK, + ACTIONS(3957), 1, + anon_sym_COMMA, + STATE(2166), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99421] = 4, + ACTIONS(593), 1, + sym__newline, + ACTIONS(3959), 1, + anon_sym_SEMI, + STATE(2090), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99435] = 4, + ACTIONS(3084), 1, + anon_sym_COMMA, + ACTIONS(3086), 1, + anon_sym_RBRACE, + STATE(2185), 1, + aux_sym_dictionary_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99449] = 4, + ACTIONS(3961), 1, + anon_sym_SEMI, + ACTIONS(3963), 1, + sym__newline, + STATE(2188), 1, + aux_sym__simple_statements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99463] = 4, + ACTIONS(3498), 1, + anon_sym_RBRACK, + ACTIONS(3965), 1, + anon_sym_COMMA, + STATE(2187), 1, + aux_sym_case_maybe_sequence_pattern_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99477] = 4, + ACTIONS(2688), 1, + anon_sym_RPAREN, + ACTIONS(2690), 1, + anon_sym_COMMA, + STATE(2201), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99491] = 4, + ACTIONS(3967), 1, + anon_sym_RPAREN, + ACTIONS(3969), 1, + anon_sym_COMMA, + STATE(2203), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99505] = 4, + ACTIONS(1808), 1, + anon_sym_RPAREN, + ACTIONS(3971), 1, + anon_sym_COMMA, + STATE(2078), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99519] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3513), 3, + sym__newline, + anon_sym_SEMI, + anon_sym_COMMA, + [99529] = 4, + ACTIONS(2877), 1, + anon_sym_COMMA, + ACTIONS(2879), 1, + anon_sym_RBRACK, + STATE(2206), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99543] = 4, + ACTIONS(1084), 1, + anon_sym_RPAREN, + ACTIONS(3973), 1, + anon_sym_COMMA, + STATE(2020), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99557] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(2662), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99571] = 4, + ACTIONS(3226), 1, + anon_sym_RPAREN, + ACTIONS(3975), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99585] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(3978), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99599] = 4, + ACTIONS(978), 1, + anon_sym_RPAREN, + ACTIONS(3980), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99613] = 4, + ACTIONS(3982), 1, + anon_sym_COMMA, + ACTIONS(3985), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99627] = 4, + ACTIONS(1016), 1, + anon_sym_RPAREN, + ACTIONS(3987), 1, + anon_sym_COMMA, + STATE(2199), 1, + aux_sym_argument_list_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99641] = 4, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(3989), 1, + anon_sym_RBRACE, + STATE(2270), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99655] = 4, + ACTIONS(3991), 1, + anon_sym_COMMA, + ACTIONS(3993), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99669] = 4, + ACTIONS(3995), 1, + anon_sym_COMMA, + ACTIONS(3997), 1, + anon_sym_RBRACK, + STATE(2202), 1, + aux_sym_subscript_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99683] = 4, + ACTIONS(2466), 1, + anon_sym_STAR_STAR, + ACTIONS(3999), 1, + anon_sym_RBRACE, + STATE(2230), 1, + sym_case_double_star_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99697] = 4, + ACTIONS(2637), 1, + anon_sym_COMMA, + ACTIONS(4001), 1, + anon_sym_RPAREN, + STATE(2197), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99711] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4003), 3, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + [99721] = 3, + ACTIONS(3396), 1, + anon_sym_COMMA, + ACTIONS(4005), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99732] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3859), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [99741] = 3, + ACTIONS(3396), 1, + anon_sym_COMMA, + ACTIONS(4007), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99752] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4009), 2, + sym__newline, + anon_sym_SEMI, + [99761] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3226), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [99770] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4011), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [99779] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3003), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [99788] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4013), 2, + sym__newline, + anon_sym_SEMI, + [99797] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4015), 2, + sym__newline, + anon_sym_SEMI, + [99806] = 3, + ACTIONS(4017), 1, + sym_integer, + ACTIONS(4019), 1, + sym_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99817] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4021), 2, + sym__newline, + anon_sym_SEMI, + [99826] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4023), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [99835] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4025), 2, + sym__newline, + anon_sym_SEMI, + [99844] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4027), 2, + sym__newline, + anon_sym_SEMI, + [99853] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2545), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [99862] = 3, + ACTIONS(3396), 1, + anon_sym_COMMA, + ACTIONS(4029), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99873] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1330), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [99882] = 3, + ACTIONS(3574), 1, + anon_sym_RBRACE, + ACTIONS(4031), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99893] = 3, + ACTIONS(3999), 1, + anon_sym_RBRACE, + ACTIONS(4033), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99904] = 3, + ACTIONS(4035), 1, + anon_sym_LPAREN, + STATE(2277), 1, + sym_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99915] = 3, + ACTIONS(4037), 1, + anon_sym_COMMA, + ACTIONS(4039), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99926] = 3, + ACTIONS(4035), 1, + anon_sym_LPAREN, + STATE(2279), 1, + sym_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99937] = 3, + ACTIONS(4041), 1, + anon_sym_RPAREN, + ACTIONS(4043), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99948] = 3, + ACTIONS(4041), 1, + anon_sym_RPAREN, + ACTIONS(4045), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99959] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2553), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [99968] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [99977] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2851), 2, + sym__newline, + anon_sym_SEMI, + [99986] = 3, + ACTIONS(4047), 1, + anon_sym_RPAREN, + ACTIONS(4049), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [99997] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4051), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [100006] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4053), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [100015] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4055), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [100024] = 3, + ACTIONS(3989), 1, + anon_sym_RBRACE, + ACTIONS(4057), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100035] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [100044] = 3, + ACTIONS(4059), 1, + anon_sym_COLON, + ACTIONS(4061), 1, + anon_sym_DASH_GT, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100055] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100064] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3396), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100073] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3735), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100082] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4003), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100091] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3611), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [100100] = 3, + ACTIONS(4063), 1, + anon_sym_COMMA, + ACTIONS(4065), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100111] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3735), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100120] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4067), 2, + sym__newline, + anon_sym_SEMI, + [100129] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3478), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100138] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100147] = 3, + ACTIONS(4069), 1, + anon_sym_RPAREN, + ACTIONS(4071), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100158] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4003), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100167] = 3, + ACTIONS(3396), 1, + anon_sym_COMMA, + ACTIONS(4073), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100178] = 3, + ACTIONS(4069), 1, + anon_sym_RPAREN, + ACTIONS(4075), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100189] = 3, + ACTIONS(4077), 1, + sym_integer, + ACTIONS(4079), 1, + sym_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100200] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100209] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3396), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100218] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4055), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100227] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4053), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100236] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4081), 2, + sym__newline, + anon_sym_SEMI, + [100245] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3447), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100254] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4083), 2, + sym__newline, + anon_sym_SEMI, + [100263] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4085), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [100272] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4087), 2, + sym__newline, + anon_sym_SEMI, + [100281] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4089), 2, + sym_case_wildcard_pattern, + sym_identifier, + [100290] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4091), 2, + sym__newline, + anon_sym_SEMI, + [100299] = 3, + ACTIONS(4093), 1, + anon_sym_COMMA, + ACTIONS(4095), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100310] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3613), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100319] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3586), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100328] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3613), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100337] = 3, + ACTIONS(4097), 1, + anon_sym_RPAREN, + ACTIONS(4099), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100348] = 3, + ACTIONS(4097), 1, + anon_sym_RPAREN, + ACTIONS(4101), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100359] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3586), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100368] = 3, + ACTIONS(4103), 1, + anon_sym_COLON, + ACTIONS(4105), 1, + anon_sym_DASH_GT, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100379] = 3, + ACTIONS(4107), 1, + anon_sym_RPAREN, + ACTIONS(4109), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100390] = 3, + ACTIONS(4111), 1, + anon_sym_COLON, + ACTIONS(4113), 1, + anon_sym_DASH_GT, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100401] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3581), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100410] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4115), 2, + sym__newline, + anon_sym_SEMI, + [100419] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4117), 2, + sym__newline, + anon_sym_SEMI, + [100428] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3094), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100437] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4055), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100446] = 3, + ACTIONS(4119), 1, + anon_sym_COMMA, + STATE(1765), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100457] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4053), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100466] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3640), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100475] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3511), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100484] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2906), 2, + sym__newline, + anon_sym_SEMI, + [100493] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1424), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100502] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2893), 2, + sym__newline, + anon_sym_SEMI, + [100511] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2553), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100520] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3754), 2, + sym__newline, + anon_sym_SEMI, + [100529] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2545), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100538] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3478), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [100547] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100556] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1424), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100565] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100574] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4121), 2, + sym_case_wildcard_pattern, + sym_identifier, + [100583] = 3, + ACTIONS(4035), 1, + anon_sym_LPAREN, + STATE(2317), 1, + sym_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100594] = 3, + ACTIONS(4123), 1, + sym_integer, + ACTIONS(4125), 1, + sym_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100605] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4127), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100614] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2507), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100623] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4129), 2, + sym_case_wildcard_pattern, + sym_identifier, + [100632] = 3, + ACTIONS(4131), 1, + sym_integer, + ACTIONS(4133), 1, + sym_float, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100643] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3581), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100652] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(1330), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100661] = 3, + ACTIONS(3843), 1, + anon_sym_RBRACE, + ACTIONS(4135), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100672] = 3, + ACTIONS(4035), 1, + anon_sym_LPAREN, + STATE(2243), 1, + sym_parameters, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100683] = 3, + ACTIONS(4137), 1, + anon_sym_COMMA, + ACTIONS(4139), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100694] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(2726), 2, + sym__newline, + anon_sym_SEMI, + [100703] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3850), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100712] = 3, + ACTIONS(4141), 1, + anon_sym_RPAREN, + ACTIONS(4143), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100723] = 3, + ACTIONS(4145), 1, + anon_sym_RPAREN, + ACTIONS(4147), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100734] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100743] = 3, + ACTIONS(4145), 1, + anon_sym_RPAREN, + ACTIONS(4149), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100754] = 3, + ACTIONS(4151), 1, + anon_sym_COLON, + ACTIONS(4153), 1, + anon_sym_DASH_GT, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100765] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4127), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100774] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(3429), 2, + anon_sym_COMMA, + anon_sym_COLON, + [100783] = 3, + ACTIONS(3439), 1, + sym_identifier, + STATE(2312), 1, + sym_case_keyword_pattern, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100794] = 3, + ACTIONS(4155), 1, + anon_sym_RPAREN, + ACTIONS(4157), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100805] = 2, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + ACTIONS(4159), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [100814] = 2, + ACTIONS(4161), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100822] = 2, + ACTIONS(4163), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100830] = 2, + ACTIONS(4165), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100838] = 2, + ACTIONS(2680), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100846] = 2, + ACTIONS(4167), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100854] = 2, + ACTIONS(4169), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100862] = 2, + ACTIONS(4171), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100870] = 2, + ACTIONS(4173), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100878] = 2, + ACTIONS(4175), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100886] = 2, + ACTIONS(4177), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100894] = 2, + ACTIONS(4179), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100902] = 2, + ACTIONS(4181), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100910] = 2, + ACTIONS(3443), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100918] = 2, + ACTIONS(3060), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100926] = 2, + ACTIONS(4183), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100934] = 2, + ACTIONS(4185), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100942] = 2, + ACTIONS(4187), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100950] = 2, + ACTIONS(4189), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100958] = 2, + ACTIONS(4191), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100966] = 2, + ACTIONS(2980), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100974] = 2, + ACTIONS(4193), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100982] = 2, + ACTIONS(2863), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100990] = 2, + ACTIONS(4195), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [100998] = 2, + ACTIONS(4139), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101006] = 2, + ACTIONS(4197), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101014] = 2, + ACTIONS(4199), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101022] = 2, + ACTIONS(4201), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101030] = 2, + ACTIONS(4203), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101038] = 2, + ACTIONS(4205), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101046] = 2, + ACTIONS(4207), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101054] = 2, + ACTIONS(4209), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101062] = 2, + ACTIONS(4211), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101070] = 2, + ACTIONS(2988), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101078] = 2, + ACTIONS(4213), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101086] = 2, + ACTIONS(4215), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101094] = 2, + ACTIONS(4217), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101102] = 2, + ACTIONS(4219), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101110] = 2, + ACTIONS(4221), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101118] = 2, + ACTIONS(4223), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101126] = 2, + ACTIONS(4225), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101134] = 2, + ACTIONS(4223), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101142] = 2, + ACTIONS(4227), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101150] = 2, + ACTIONS(4229), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101158] = 2, + ACTIONS(4231), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101166] = 2, + ACTIONS(3486), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101174] = 2, + ACTIONS(4233), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101182] = 2, + ACTIONS(4235), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101190] = 2, + ACTIONS(4237), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101198] = 2, + ACTIONS(4239), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101206] = 2, + ACTIONS(4241), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101214] = 2, + ACTIONS(2615), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101222] = 2, + ACTIONS(4243), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101230] = 2, + ACTIONS(4245), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101238] = 2, + ACTIONS(4247), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101246] = 2, + ACTIONS(2942), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101254] = 2, + ACTIONS(4249), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101262] = 2, + ACTIONS(4251), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101270] = 2, + ACTIONS(4253), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101278] = 2, + ACTIONS(4255), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101286] = 2, + ACTIONS(4257), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101294] = 2, + ACTIONS(4259), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101302] = 2, + ACTIONS(2984), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101310] = 2, + ACTIONS(4261), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101318] = 2, + ACTIONS(4263), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101326] = 2, + ACTIONS(4265), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101334] = 2, + ACTIONS(3789), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101342] = 2, + ACTIONS(4267), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101350] = 2, + ACTIONS(4269), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101358] = 2, + ACTIONS(4271), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101366] = 2, + ACTIONS(4273), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101374] = 2, + ACTIONS(4275), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101382] = 2, + ACTIONS(2639), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101390] = 2, + ACTIONS(1292), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101398] = 2, + ACTIONS(4277), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101406] = 2, + ACTIONS(4279), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101414] = 2, + ACTIONS(4281), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101422] = 2, + ACTIONS(4283), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101430] = 2, + ACTIONS(4285), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101438] = 2, + ACTIONS(4287), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101446] = 2, + ACTIONS(4289), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101454] = 2, + ACTIONS(3831), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101462] = 2, + ACTIONS(4291), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101470] = 2, + ACTIONS(4293), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101478] = 2, + ACTIONS(2971), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101486] = 2, + ACTIONS(4295), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101494] = 2, + ACTIONS(4297), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101502] = 2, + ACTIONS(4299), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101510] = 2, + ACTIONS(4301), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101518] = 2, + ACTIONS(4303), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101526] = 2, + ACTIONS(4305), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101534] = 2, + ACTIONS(4307), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101542] = 2, + ACTIONS(4309), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101550] = 2, + ACTIONS(4311), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101558] = 2, + ACTIONS(4313), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101566] = 2, + ACTIONS(4315), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101574] = 2, + ACTIONS(4317), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101582] = 2, + ACTIONS(4319), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101590] = 2, + ACTIONS(4321), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101598] = 2, + ACTIONS(2676), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101606] = 2, + ACTIONS(3739), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101614] = 2, + ACTIONS(4323), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101622] = 2, + ACTIONS(4325), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101630] = 2, + ACTIONS(4327), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101638] = 2, + ACTIONS(4329), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101646] = 2, + ACTIONS(4331), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101654] = 2, + ACTIONS(4333), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101662] = 2, + ACTIONS(4335), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101670] = 2, + ACTIONS(4337), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101678] = 2, + ACTIONS(4339), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101686] = 2, + ACTIONS(2688), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101694] = 2, + ACTIONS(4341), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101702] = 2, + ACTIONS(4343), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101710] = 2, + ACTIONS(4345), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101718] = 2, + ACTIONS(1144), 1, + anon_sym_def, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101726] = 2, + ACTIONS(4347), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101734] = 2, + ACTIONS(4349), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101742] = 2, + ACTIONS(4351), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101750] = 2, + ACTIONS(4353), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101758] = 2, + ACTIONS(4355), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101766] = 2, + ACTIONS(2948), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101774] = 2, + ACTIONS(2967), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101782] = 2, + ACTIONS(4357), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101790] = 2, + ACTIONS(4359), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101798] = 2, + ACTIONS(4361), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101806] = 2, + ACTIONS(4363), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101814] = 2, + ACTIONS(2684), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101822] = 2, + ACTIONS(4365), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101830] = 2, + ACTIONS(4367), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101838] = 2, + ACTIONS(2631), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101846] = 2, + ACTIONS(4369), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101854] = 2, + ACTIONS(4371), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101862] = 2, + ACTIONS(4373), 1, + anon_sym_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101870] = 2, + ACTIONS(4375), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101878] = 2, + ACTIONS(4377), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101886] = 2, + ACTIONS(4379), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101894] = 2, + ACTIONS(3658), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101902] = 2, + ACTIONS(4381), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101910] = 2, + ACTIONS(3054), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101918] = 2, + ACTIONS(4383), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101926] = 2, + ACTIONS(4385), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101934] = 2, + ACTIONS(4387), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101942] = 2, + ACTIONS(4389), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101950] = 2, + ACTIONS(3636), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101958] = 2, + ACTIONS(4391), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101966] = 2, + ACTIONS(4393), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101974] = 2, + ACTIONS(4395), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101982] = 2, + ACTIONS(3035), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101990] = 2, + ACTIONS(4095), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [101998] = 2, + ACTIONS(3523), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102006] = 2, + ACTIONS(4397), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102014] = 2, + ACTIONS(4399), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102022] = 2, + ACTIONS(4401), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102030] = 2, + ACTIONS(4403), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102038] = 2, + ACTIONS(4405), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102046] = 2, + ACTIONS(4407), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102054] = 2, + ACTIONS(2664), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102062] = 2, + ACTIONS(4409), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102070] = 2, + ACTIONS(4411), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102078] = 2, + ACTIONS(4413), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102086] = 2, + ACTIONS(4415), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102094] = 2, + ACTIONS(4417), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102102] = 2, + ACTIONS(4419), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102110] = 2, + ACTIONS(4421), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102118] = 2, + ACTIONS(4423), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102126] = 2, + ACTIONS(4425), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102134] = 2, + ACTIONS(4427), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102142] = 2, + ACTIONS(4429), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102150] = 2, + ACTIONS(4431), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102158] = 2, + ACTIONS(4433), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102166] = 2, + ACTIONS(4435), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102174] = 2, + ACTIONS(4437), 1, + anon_sym_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102182] = 2, + ACTIONS(3621), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102190] = 2, + ACTIONS(4439), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102198] = 2, + ACTIONS(3619), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102206] = 2, + ACTIONS(4441), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102214] = 2, + ACTIONS(3617), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102222] = 2, + ACTIONS(4443), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102230] = 2, + ACTIONS(4445), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102238] = 2, + ACTIONS(4447), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102246] = 2, + ACTIONS(4065), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102254] = 2, + ACTIONS(4449), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102262] = 2, + ACTIONS(4451), 1, + anon_sym_import, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102270] = 2, + ACTIONS(4453), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102278] = 2, + ACTIONS(4455), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102286] = 2, + ACTIONS(4457), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102294] = 2, + ACTIONS(4459), 1, + anon_sym_COMMA, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102302] = 2, + ACTIONS(3086), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102310] = 2, + ACTIONS(4461), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102318] = 2, + ACTIONS(4463), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102326] = 2, + ACTIONS(4465), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102334] = 2, + ACTIONS(4467), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102342] = 2, + ACTIONS(3914), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102350] = 2, + ACTIONS(4469), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102358] = 2, + ACTIONS(3079), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102366] = 2, + ACTIONS(4471), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102374] = 2, + ACTIONS(4473), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102382] = 2, + ACTIONS(4475), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102390] = 2, + ACTIONS(4477), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102398] = 2, + ACTIONS(4479), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102406] = 2, + ACTIONS(4481), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102414] = 2, + ACTIONS(3441), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102422] = 2, + ACTIONS(4483), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102430] = 2, + ACTIONS(4485), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102438] = 2, + ACTIONS(4487), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102446] = 2, + ACTIONS(4489), 1, + anon_sym_COLON_EQ, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102454] = 2, + ACTIONS(4491), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102462] = 2, + ACTIONS(4493), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102470] = 2, + ACTIONS(4039), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102478] = 2, + ACTIONS(4495), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102486] = 2, + ACTIONS(4497), 1, + ts_builtin_sym_end, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102494] = 2, + ACTIONS(4499), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102502] = 2, + ACTIONS(4499), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102510] = 2, + ACTIONS(4501), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102518] = 2, + ACTIONS(4503), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102526] = 2, + ACTIONS(4505), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102534] = 2, + ACTIONS(4507), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102542] = 2, + ACTIONS(4509), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102550] = 2, + ACTIONS(4485), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102558] = 2, + ACTIONS(4511), 1, + anon_sym_for, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102566] = 2, + ACTIONS(4513), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102574] = 2, + ACTIONS(4515), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102582] = 2, + ACTIONS(4517), 1, + sym_identifier, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102590] = 2, + ACTIONS(4519), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102598] = 2, + ACTIONS(3568), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102606] = 2, + ACTIONS(1184), 1, + anon_sym_def, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102614] = 2, + ACTIONS(4521), 1, + anon_sym_for, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102622] = 2, + ACTIONS(4519), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102630] = 2, + ACTIONS(3566), 1, + anon_sym_in, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102638] = 2, + ACTIONS(4523), 1, + anon_sym_for, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102646] = 2, + ACTIONS(4525), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, + [102654] = 2, + ACTIONS(4527), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym_comment, + sym_line_continuation, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(187)] = 0, + [SMALL_STATE(188)] = 119, + [SMALL_STATE(189)] = 238, + [SMALL_STATE(190)] = 357, + [SMALL_STATE(191)] = 478, + [SMALL_STATE(192)] = 597, + [SMALL_STATE(193)] = 718, + [SMALL_STATE(194)] = 837, + [SMALL_STATE(195)] = 958, + [SMALL_STATE(196)] = 1079, + [SMALL_STATE(197)] = 1198, + [SMALL_STATE(198)] = 1317, + [SMALL_STATE(199)] = 1436, + [SMALL_STATE(200)] = 1557, + [SMALL_STATE(201)] = 1680, + [SMALL_STATE(202)] = 1799, + [SMALL_STATE(203)] = 1920, + [SMALL_STATE(204)] = 2039, + [SMALL_STATE(205)] = 2162, + [SMALL_STATE(206)] = 2281, + [SMALL_STATE(207)] = 2399, + [SMALL_STATE(208)] = 2517, + [SMALL_STATE(209)] = 2635, + [SMALL_STATE(210)] = 2753, + [SMALL_STATE(211)] = 2871, + [SMALL_STATE(212)] = 2989, + [SMALL_STATE(213)] = 3107, + [SMALL_STATE(214)] = 3225, + [SMALL_STATE(215)] = 3328, + [SMALL_STATE(216)] = 3431, + [SMALL_STATE(217)] = 3542, + [SMALL_STATE(218)] = 3653, + [SMALL_STATE(219)] = 3762, + [SMALL_STATE(220)] = 3873, + [SMALL_STATE(221)] = 3982, + [SMALL_STATE(222)] = 4091, + [SMALL_STATE(223)] = 4200, + [SMALL_STATE(224)] = 4309, + [SMALL_STATE(225)] = 4418, + [SMALL_STATE(226)] = 4527, + [SMALL_STATE(227)] = 4636, + [SMALL_STATE(228)] = 4745, + [SMALL_STATE(229)] = 4851, + [SMALL_STATE(230)] = 4957, + [SMALL_STATE(231)] = 5063, + [SMALL_STATE(232)] = 5169, + [SMALL_STATE(233)] = 5279, + [SMALL_STATE(234)] = 5385, + [SMALL_STATE(235)] = 5493, + [SMALL_STATE(236)] = 5599, + [SMALL_STATE(237)] = 5707, + [SMALL_STATE(238)] = 5813, + [SMALL_STATE(239)] = 5919, + [SMALL_STATE(240)] = 6029, + [SMALL_STATE(241)] = 6135, + [SMALL_STATE(242)] = 6243, + [SMALL_STATE(243)] = 6349, + [SMALL_STATE(244)] = 6455, + [SMALL_STATE(245)] = 6561, + [SMALL_STATE(246)] = 6667, + [SMALL_STATE(247)] = 6773, + [SMALL_STATE(248)] = 6879, + [SMALL_STATE(249)] = 6985, + [SMALL_STATE(250)] = 7091, + [SMALL_STATE(251)] = 7199, + [SMALL_STATE(252)] = 7309, + [SMALL_STATE(253)] = 7415, + [SMALL_STATE(254)] = 7521, + [SMALL_STATE(255)] = 7627, + [SMALL_STATE(256)] = 7733, + [SMALL_STATE(257)] = 7839, + [SMALL_STATE(258)] = 7945, + [SMALL_STATE(259)] = 8051, + [SMALL_STATE(260)] = 8157, + [SMALL_STATE(261)] = 8263, + [SMALL_STATE(262)] = 8373, + [SMALL_STATE(263)] = 8479, + [SMALL_STATE(264)] = 8585, + [SMALL_STATE(265)] = 8691, + [SMALL_STATE(266)] = 8797, + [SMALL_STATE(267)] = 8903, + [SMALL_STATE(268)] = 9009, + [SMALL_STATE(269)] = 9115, + [SMALL_STATE(270)] = 9223, + [SMALL_STATE(271)] = 9329, + [SMALL_STATE(272)] = 9437, + [SMALL_STATE(273)] = 9543, + [SMALL_STATE(274)] = 9649, + [SMALL_STATE(275)] = 9759, + [SMALL_STATE(276)] = 9865, + [SMALL_STATE(277)] = 9967, + [SMALL_STATE(278)] = 10073, + [SMALL_STATE(279)] = 10179, + [SMALL_STATE(280)] = 10285, + [SMALL_STATE(281)] = 10393, + [SMALL_STATE(282)] = 10501, + [SMALL_STATE(283)] = 10611, + [SMALL_STATE(284)] = 10714, + [SMALL_STATE(285)] = 10817, + [SMALL_STATE(286)] = 10920, + [SMALL_STATE(287)] = 11009, + [SMALL_STATE(288)] = 11112, + [SMALL_STATE(289)] = 11201, + [SMALL_STATE(290)] = 11304, + [SMALL_STATE(291)] = 11407, + [SMALL_STATE(292)] = 11510, + [SMALL_STATE(293)] = 11610, + [SMALL_STATE(294)] = 11710, + [SMALL_STATE(295)] = 11810, + [SMALL_STATE(296)] = 11910, + [SMALL_STATE(297)] = 12006, + [SMALL_STATE(298)] = 12102, + [SMALL_STATE(299)] = 12202, + [SMALL_STATE(300)] = 12302, + [SMALL_STATE(301)] = 12402, + [SMALL_STATE(302)] = 12502, + [SMALL_STATE(303)] = 12602, + [SMALL_STATE(304)] = 12702, + [SMALL_STATE(305)] = 12802, + [SMALL_STATE(306)] = 12902, + [SMALL_STATE(307)] = 13002, + [SMALL_STATE(308)] = 13102, + [SMALL_STATE(309)] = 13202, + [SMALL_STATE(310)] = 13302, + [SMALL_STATE(311)] = 13402, + [SMALL_STATE(312)] = 13501, + [SMALL_STATE(313)] = 13600, + [SMALL_STATE(314)] = 13699, + [SMALL_STATE(315)] = 13774, + [SMALL_STATE(316)] = 13873, + [SMALL_STATE(317)] = 13960, + [SMALL_STATE(318)] = 14047, + [SMALL_STATE(319)] = 14146, + [SMALL_STATE(320)] = 14245, + [SMALL_STATE(321)] = 14344, + [SMALL_STATE(322)] = 14443, + [SMALL_STATE(323)] = 14542, + [SMALL_STATE(324)] = 14617, + [SMALL_STATE(325)] = 14716, + [SMALL_STATE(326)] = 14815, + [SMALL_STATE(327)] = 14914, + [SMALL_STATE(328)] = 15013, + [SMALL_STATE(329)] = 15112, + [SMALL_STATE(330)] = 15211, + [SMALL_STATE(331)] = 15310, + [SMALL_STATE(332)] = 15385, + [SMALL_STATE(333)] = 15484, + [SMALL_STATE(334)] = 15583, + [SMALL_STATE(335)] = 15682, + [SMALL_STATE(336)] = 15781, + [SMALL_STATE(337)] = 15879, + [SMALL_STATE(338)] = 15977, + [SMALL_STATE(339)] = 16073, + [SMALL_STATE(340)] = 16171, + [SMALL_STATE(341)] = 16269, + [SMALL_STATE(342)] = 16365, + [SMALL_STATE(343)] = 16463, + [SMALL_STATE(344)] = 16561, + [SMALL_STATE(345)] = 16647, + [SMALL_STATE(346)] = 16733, + [SMALL_STATE(347)] = 16831, + [SMALL_STATE(348)] = 16929, + [SMALL_STATE(349)] = 17027, + [SMALL_STATE(350)] = 17125, + [SMALL_STATE(351)] = 17223, + [SMALL_STATE(352)] = 17321, + [SMALL_STATE(353)] = 17419, + [SMALL_STATE(354)] = 17515, + [SMALL_STATE(355)] = 17601, + [SMALL_STATE(356)] = 17699, + [SMALL_STATE(357)] = 17797, + [SMALL_STATE(358)] = 17895, + [SMALL_STATE(359)] = 17991, + [SMALL_STATE(360)] = 18087, + [SMALL_STATE(361)] = 18185, + [SMALL_STATE(362)] = 18283, + [SMALL_STATE(363)] = 18379, + [SMALL_STATE(364)] = 18477, + [SMALL_STATE(365)] = 18575, + [SMALL_STATE(366)] = 18671, + [SMALL_STATE(367)] = 18769, + [SMALL_STATE(368)] = 18867, + [SMALL_STATE(369)] = 18965, + [SMALL_STATE(370)] = 19051, + [SMALL_STATE(371)] = 19149, + [SMALL_STATE(372)] = 19242, + [SMALL_STATE(373)] = 19335, + [SMALL_STATE(374)] = 19406, + [SMALL_STATE(375)] = 19477, + [SMALL_STATE(376)] = 19548, + [SMALL_STATE(377)] = 19619, + [SMALL_STATE(378)] = 19712, + [SMALL_STATE(379)] = 19805, + [SMALL_STATE(380)] = 19900, + [SMALL_STATE(381)] = 19995, + [SMALL_STATE(382)] = 20088, + [SMALL_STATE(383)] = 20159, + [SMALL_STATE(384)] = 20254, + [SMALL_STATE(385)] = 20349, + [SMALL_STATE(386)] = 20442, + [SMALL_STATE(387)] = 20535, + [SMALL_STATE(388)] = 20630, + [SMALL_STATE(389)] = 20723, + [SMALL_STATE(390)] = 20816, + [SMALL_STATE(391)] = 20909, + [SMALL_STATE(392)] = 21002, + [SMALL_STATE(393)] = 21097, + [SMALL_STATE(394)] = 21192, + [SMALL_STATE(395)] = 21285, + [SMALL_STATE(396)] = 21380, + [SMALL_STATE(397)] = 21473, + [SMALL_STATE(398)] = 21568, + [SMALL_STATE(399)] = 21661, + [SMALL_STATE(400)] = 21754, + [SMALL_STATE(401)] = 21825, + [SMALL_STATE(402)] = 21920, + [SMALL_STATE(403)] = 22013, + [SMALL_STATE(404)] = 22108, + [SMALL_STATE(405)] = 22201, + [SMALL_STATE(406)] = 22296, + [SMALL_STATE(407)] = 22389, + [SMALL_STATE(408)] = 22482, + [SMALL_STATE(409)] = 22575, + [SMALL_STATE(410)] = 22668, + [SMALL_STATE(411)] = 22763, + [SMALL_STATE(412)] = 22856, + [SMALL_STATE(413)] = 22927, + [SMALL_STATE(414)] = 23020, + [SMALL_STATE(415)] = 23115, + [SMALL_STATE(416)] = 23210, + [SMALL_STATE(417)] = 23305, + [SMALL_STATE(418)] = 23398, + [SMALL_STATE(419)] = 23491, + [SMALL_STATE(420)] = 23584, + [SMALL_STATE(421)] = 23655, + [SMALL_STATE(422)] = 23750, + [SMALL_STATE(423)] = 23843, + [SMALL_STATE(424)] = 23936, + [SMALL_STATE(425)] = 23994, + [SMALL_STATE(426)] = 24060, + [SMALL_STATE(427)] = 24118, + [SMALL_STATE(428)] = 24210, + [SMALL_STATE(429)] = 24302, + [SMALL_STATE(430)] = 24368, + [SMALL_STATE(431)] = 24460, + [SMALL_STATE(432)] = 24552, + [SMALL_STATE(433)] = 24644, + [SMALL_STATE(434)] = 24736, + [SMALL_STATE(435)] = 24828, + [SMALL_STATE(436)] = 24894, + [SMALL_STATE(437)] = 24952, + [SMALL_STATE(438)] = 25044, + [SMALL_STATE(439)] = 25136, + [SMALL_STATE(440)] = 25228, + [SMALL_STATE(441)] = 25286, + [SMALL_STATE(442)] = 25344, + [SMALL_STATE(443)] = 25436, + [SMALL_STATE(444)] = 25528, + [SMALL_STATE(445)] = 25594, + [SMALL_STATE(446)] = 25686, + [SMALL_STATE(447)] = 25778, + [SMALL_STATE(448)] = 25870, + [SMALL_STATE(449)] = 25962, + [SMALL_STATE(450)] = 26054, + [SMALL_STATE(451)] = 26112, + [SMALL_STATE(452)] = 26204, + [SMALL_STATE(453)] = 26296, + [SMALL_STATE(454)] = 26354, + [SMALL_STATE(455)] = 26446, + [SMALL_STATE(456)] = 26538, + [SMALL_STATE(457)] = 26630, + [SMALL_STATE(458)] = 26719, + [SMALL_STATE(459)] = 26808, + [SMALL_STATE(460)] = 26897, + [SMALL_STATE(461)] = 26986, + [SMALL_STATE(462)] = 27075, + [SMALL_STATE(463)] = 27164, + [SMALL_STATE(464)] = 27253, + [SMALL_STATE(465)] = 27342, + [SMALL_STATE(466)] = 27431, + [SMALL_STATE(467)] = 27520, + [SMALL_STATE(468)] = 27587, + [SMALL_STATE(469)] = 27654, + [SMALL_STATE(470)] = 27721, + [SMALL_STATE(471)] = 27810, + [SMALL_STATE(472)] = 27899, + [SMALL_STATE(473)] = 27988, + [SMALL_STATE(474)] = 28077, + [SMALL_STATE(475)] = 28166, + [SMALL_STATE(476)] = 28255, + [SMALL_STATE(477)] = 28344, + [SMALL_STATE(478)] = 28433, + [SMALL_STATE(479)] = 28524, + [SMALL_STATE(480)] = 28613, + [SMALL_STATE(481)] = 28702, + [SMALL_STATE(482)] = 28791, + [SMALL_STATE(483)] = 28880, + [SMALL_STATE(484)] = 28969, + [SMALL_STATE(485)] = 29058, + [SMALL_STATE(486)] = 29147, + [SMALL_STATE(487)] = 29236, + [SMALL_STATE(488)] = 29325, + [SMALL_STATE(489)] = 29414, + [SMALL_STATE(490)] = 29503, + [SMALL_STATE(491)] = 29592, + [SMALL_STATE(492)] = 29681, + [SMALL_STATE(493)] = 29770, + [SMALL_STATE(494)] = 29859, + [SMALL_STATE(495)] = 29948, + [SMALL_STATE(496)] = 30037, + [SMALL_STATE(497)] = 30126, + [SMALL_STATE(498)] = 30215, + [SMALL_STATE(499)] = 30304, + [SMALL_STATE(500)] = 30393, + [SMALL_STATE(501)] = 30482, + [SMALL_STATE(502)] = 30571, + [SMALL_STATE(503)] = 30660, + [SMALL_STATE(504)] = 30749, + [SMALL_STATE(505)] = 30838, + [SMALL_STATE(506)] = 30927, + [SMALL_STATE(507)] = 31016, + [SMALL_STATE(508)] = 31077, + [SMALL_STATE(509)] = 31138, + [SMALL_STATE(510)] = 31201, + [SMALL_STATE(511)] = 31290, + [SMALL_STATE(512)] = 31379, + [SMALL_STATE(513)] = 31468, + [SMALL_STATE(514)] = 31557, + [SMALL_STATE(515)] = 31646, + [SMALL_STATE(516)] = 31735, + [SMALL_STATE(517)] = 31824, + [SMALL_STATE(518)] = 31913, + [SMALL_STATE(519)] = 32002, + [SMALL_STATE(520)] = 32065, + [SMALL_STATE(521)] = 32154, + [SMALL_STATE(522)] = 32243, + [SMALL_STATE(523)] = 32332, + [SMALL_STATE(524)] = 32421, + [SMALL_STATE(525)] = 32510, + [SMALL_STATE(526)] = 32599, + [SMALL_STATE(527)] = 32688, + [SMALL_STATE(528)] = 32777, + [SMALL_STATE(529)] = 32866, + [SMALL_STATE(530)] = 32955, + [SMALL_STATE(531)] = 33044, + [SMALL_STATE(532)] = 33133, + [SMALL_STATE(533)] = 33222, + [SMALL_STATE(534)] = 33311, + [SMALL_STATE(535)] = 33400, + [SMALL_STATE(536)] = 33489, + [SMALL_STATE(537)] = 33578, + [SMALL_STATE(538)] = 33667, + [SMALL_STATE(539)] = 33756, + [SMALL_STATE(540)] = 33819, + [SMALL_STATE(541)] = 33886, + [SMALL_STATE(542)] = 33953, + [SMALL_STATE(543)] = 34042, + [SMALL_STATE(544)] = 34131, + [SMALL_STATE(545)] = 34220, + [SMALL_STATE(546)] = 34309, + [SMALL_STATE(547)] = 34398, + [SMALL_STATE(548)] = 34487, + [SMALL_STATE(549)] = 34576, + [SMALL_STATE(550)] = 34665, + [SMALL_STATE(551)] = 34754, + [SMALL_STATE(552)] = 34845, + [SMALL_STATE(553)] = 34934, + [SMALL_STATE(554)] = 34997, + [SMALL_STATE(555)] = 35086, + [SMALL_STATE(556)] = 35175, + [SMALL_STATE(557)] = 35264, + [SMALL_STATE(558)] = 35353, + [SMALL_STATE(559)] = 35442, + [SMALL_STATE(560)] = 35503, + [SMALL_STATE(561)] = 35592, + [SMALL_STATE(562)] = 35681, + [SMALL_STATE(563)] = 35770, + [SMALL_STATE(564)] = 35859, + [SMALL_STATE(565)] = 35948, + [SMALL_STATE(566)] = 36037, + [SMALL_STATE(567)] = 36098, + [SMALL_STATE(568)] = 36187, + [SMALL_STATE(569)] = 36276, + [SMALL_STATE(570)] = 36365, + [SMALL_STATE(571)] = 36454, + [SMALL_STATE(572)] = 36521, + [SMALL_STATE(573)] = 36610, + [SMALL_STATE(574)] = 36699, + [SMALL_STATE(575)] = 36790, + [SMALL_STATE(576)] = 36879, + [SMALL_STATE(577)] = 36968, + [SMALL_STATE(578)] = 37057, + [SMALL_STATE(579)] = 37146, + [SMALL_STATE(580)] = 37235, + [SMALL_STATE(581)] = 37324, + [SMALL_STATE(582)] = 37413, + [SMALL_STATE(583)] = 37502, + [SMALL_STATE(584)] = 37569, + [SMALL_STATE(585)] = 37658, + [SMALL_STATE(586)] = 37747, + [SMALL_STATE(587)] = 37836, + [SMALL_STATE(588)] = 37925, + [SMALL_STATE(589)] = 38014, + [SMALL_STATE(590)] = 38103, + [SMALL_STATE(591)] = 38192, + [SMALL_STATE(592)] = 38281, + [SMALL_STATE(593)] = 38370, + [SMALL_STATE(594)] = 38459, + [SMALL_STATE(595)] = 38526, + [SMALL_STATE(596)] = 38582, + [SMALL_STATE(597)] = 38638, + [SMALL_STATE(598)] = 38700, + [SMALL_STATE(599)] = 38756, + [SMALL_STATE(600)] = 38812, + [SMALL_STATE(601)] = 38868, + [SMALL_STATE(602)] = 38924, + [SMALL_STATE(603)] = 38980, + [SMALL_STATE(604)] = 39036, + [SMALL_STATE(605)] = 39092, + [SMALL_STATE(606)] = 39148, + [SMALL_STATE(607)] = 39204, + [SMALL_STATE(608)] = 39260, + [SMALL_STATE(609)] = 39316, + [SMALL_STATE(610)] = 39372, + [SMALL_STATE(611)] = 39428, + [SMALL_STATE(612)] = 39490, + [SMALL_STATE(613)] = 39546, + [SMALL_STATE(614)] = 39602, + [SMALL_STATE(615)] = 39657, + [SMALL_STATE(616)] = 39712, + [SMALL_STATE(617)] = 39767, + [SMALL_STATE(618)] = 39828, + [SMALL_STATE(619)] = 39889, + [SMALL_STATE(620)] = 39944, + [SMALL_STATE(621)] = 40005, + [SMALL_STATE(622)] = 40060, + [SMALL_STATE(623)] = 40121, + [SMALL_STATE(624)] = 40176, + [SMALL_STATE(625)] = 40231, + [SMALL_STATE(626)] = 40286, + [SMALL_STATE(627)] = 40341, + [SMALL_STATE(628)] = 40396, + [SMALL_STATE(629)] = 40451, + [SMALL_STATE(630)] = 40506, + [SMALL_STATE(631)] = 40561, + [SMALL_STATE(632)] = 40616, + [SMALL_STATE(633)] = 40671, + [SMALL_STATE(634)] = 40732, + [SMALL_STATE(635)] = 40787, + [SMALL_STATE(636)] = 40842, + [SMALL_STATE(637)] = 40897, + [SMALL_STATE(638)] = 40952, + [SMALL_STATE(639)] = 41007, + [SMALL_STATE(640)] = 41062, + [SMALL_STATE(641)] = 41117, + [SMALL_STATE(642)] = 41178, + [SMALL_STATE(643)] = 41239, + [SMALL_STATE(644)] = 41300, + [SMALL_STATE(645)] = 41355, + [SMALL_STATE(646)] = 41410, + [SMALL_STATE(647)] = 41471, + [SMALL_STATE(648)] = 41526, + [SMALL_STATE(649)] = 41581, + [SMALL_STATE(650)] = 41642, + [SMALL_STATE(651)] = 41697, + [SMALL_STATE(652)] = 41752, + [SMALL_STATE(653)] = 41807, + [SMALL_STATE(654)] = 41862, + [SMALL_STATE(655)] = 41923, + [SMALL_STATE(656)] = 41978, + [SMALL_STATE(657)] = 42033, + [SMALL_STATE(658)] = 42088, + [SMALL_STATE(659)] = 42175, + [SMALL_STATE(660)] = 42236, + [SMALL_STATE(661)] = 42297, + [SMALL_STATE(662)] = 42352, + [SMALL_STATE(663)] = 42407, + [SMALL_STATE(664)] = 42462, + [SMALL_STATE(665)] = 42517, + [SMALL_STATE(666)] = 42604, + [SMALL_STATE(667)] = 42665, + [SMALL_STATE(668)] = 42726, + [SMALL_STATE(669)] = 42781, + [SMALL_STATE(670)] = 42836, + [SMALL_STATE(671)] = 42897, + [SMALL_STATE(672)] = 42958, + [SMALL_STATE(673)] = 43019, + [SMALL_STATE(674)] = 43074, + [SMALL_STATE(675)] = 43128, + [SMALL_STATE(676)] = 43186, + [SMALL_STATE(677)] = 43244, + [SMALL_STATE(678)] = 43302, + [SMALL_STATE(679)] = 43360, + [SMALL_STATE(680)] = 43418, + [SMALL_STATE(681)] = 43476, + [SMALL_STATE(682)] = 43534, + [SMALL_STATE(683)] = 43592, + [SMALL_STATE(684)] = 43650, + [SMALL_STATE(685)] = 43708, + [SMALL_STATE(686)] = 43762, + [SMALL_STATE(687)] = 43816, + [SMALL_STATE(688)] = 43874, + [SMALL_STATE(689)] = 43928, + [SMALL_STATE(690)] = 43986, + [SMALL_STATE(691)] = 44044, + [SMALL_STATE(692)] = 44102, + [SMALL_STATE(693)] = 44160, + [SMALL_STATE(694)] = 44214, + [SMALL_STATE(695)] = 44272, + [SMALL_STATE(696)] = 44326, + [SMALL_STATE(697)] = 44379, + [SMALL_STATE(698)] = 44432, + [SMALL_STATE(699)] = 44519, + [SMALL_STATE(700)] = 44572, + [SMALL_STATE(701)] = 44625, + [SMALL_STATE(702)] = 44678, + [SMALL_STATE(703)] = 44731, + [SMALL_STATE(704)] = 44784, + [SMALL_STATE(705)] = 44837, + [SMALL_STATE(706)] = 44890, + [SMALL_STATE(707)] = 44943, + [SMALL_STATE(708)] = 44996, + [SMALL_STATE(709)] = 45049, + [SMALL_STATE(710)] = 45102, + [SMALL_STATE(711)] = 45155, + [SMALL_STATE(712)] = 45208, + [SMALL_STATE(713)] = 45261, + [SMALL_STATE(714)] = 45314, + [SMALL_STATE(715)] = 45401, + [SMALL_STATE(716)] = 45454, + [SMALL_STATE(717)] = 45507, + [SMALL_STATE(718)] = 45560, + [SMALL_STATE(719)] = 45613, + [SMALL_STATE(720)] = 45666, + [SMALL_STATE(721)] = 45719, + [SMALL_STATE(722)] = 45772, + [SMALL_STATE(723)] = 45825, + [SMALL_STATE(724)] = 45878, + [SMALL_STATE(725)] = 45931, + [SMALL_STATE(726)] = 45984, + [SMALL_STATE(727)] = 46037, + [SMALL_STATE(728)] = 46090, + [SMALL_STATE(729)] = 46143, + [SMALL_STATE(730)] = 46196, + [SMALL_STATE(731)] = 46249, + [SMALL_STATE(732)] = 46302, + [SMALL_STATE(733)] = 46355, + [SMALL_STATE(734)] = 46408, + [SMALL_STATE(735)] = 46461, + [SMALL_STATE(736)] = 46514, + [SMALL_STATE(737)] = 46567, + [SMALL_STATE(738)] = 46620, + [SMALL_STATE(739)] = 46673, + [SMALL_STATE(740)] = 46726, + [SMALL_STATE(741)] = 46779, + [SMALL_STATE(742)] = 46832, + [SMALL_STATE(743)] = 46885, + [SMALL_STATE(744)] = 46938, + [SMALL_STATE(745)] = 46991, + [SMALL_STATE(746)] = 47044, + [SMALL_STATE(747)] = 47097, + [SMALL_STATE(748)] = 47150, + [SMALL_STATE(749)] = 47203, + [SMALL_STATE(750)] = 47256, + [SMALL_STATE(751)] = 47309, + [SMALL_STATE(752)] = 47362, + [SMALL_STATE(753)] = 47415, + [SMALL_STATE(754)] = 47468, + [SMALL_STATE(755)] = 47521, + [SMALL_STATE(756)] = 47574, + [SMALL_STATE(757)] = 47627, + [SMALL_STATE(758)] = 47680, + [SMALL_STATE(759)] = 47733, + [SMALL_STATE(760)] = 47786, + [SMALL_STATE(761)] = 47839, + [SMALL_STATE(762)] = 47892, + [SMALL_STATE(763)] = 47945, + [SMALL_STATE(764)] = 47998, + [SMALL_STATE(765)] = 48051, + [SMALL_STATE(766)] = 48104, + [SMALL_STATE(767)] = 48157, + [SMALL_STATE(768)] = 48210, + [SMALL_STATE(769)] = 48262, + [SMALL_STATE(770)] = 48314, + [SMALL_STATE(771)] = 48366, + [SMALL_STATE(772)] = 48450, + [SMALL_STATE(773)] = 48502, + [SMALL_STATE(774)] = 48554, + [SMALL_STATE(775)] = 48638, + [SMALL_STATE(776)] = 48690, + [SMALL_STATE(777)] = 48774, + [SMALL_STATE(778)] = 48826, + [SMALL_STATE(779)] = 48878, + [SMALL_STATE(780)] = 48962, + [SMALL_STATE(781)] = 49014, + [SMALL_STATE(782)] = 49098, + [SMALL_STATE(783)] = 49150, + [SMALL_STATE(784)] = 49202, + [SMALL_STATE(785)] = 49286, + [SMALL_STATE(786)] = 49338, + [SMALL_STATE(787)] = 49390, + [SMALL_STATE(788)] = 49442, + [SMALL_STATE(789)] = 49494, + [SMALL_STATE(790)] = 49546, + [SMALL_STATE(791)] = 49598, + [SMALL_STATE(792)] = 49650, + [SMALL_STATE(793)] = 49702, + [SMALL_STATE(794)] = 49754, + [SMALL_STATE(795)] = 49806, + [SMALL_STATE(796)] = 49858, + [SMALL_STATE(797)] = 49910, + [SMALL_STATE(798)] = 49962, + [SMALL_STATE(799)] = 50014, + [SMALL_STATE(800)] = 50066, + [SMALL_STATE(801)] = 50118, + [SMALL_STATE(802)] = 50170, + [SMALL_STATE(803)] = 50222, + [SMALL_STATE(804)] = 50274, + [SMALL_STATE(805)] = 50326, + [SMALL_STATE(806)] = 50378, + [SMALL_STATE(807)] = 50430, + [SMALL_STATE(808)] = 50482, + [SMALL_STATE(809)] = 50534, + [SMALL_STATE(810)] = 50586, + [SMALL_STATE(811)] = 50638, + [SMALL_STATE(812)] = 50722, + [SMALL_STATE(813)] = 50774, + [SMALL_STATE(814)] = 50858, + [SMALL_STATE(815)] = 50910, + [SMALL_STATE(816)] = 50962, + [SMALL_STATE(817)] = 51014, + [SMALL_STATE(818)] = 51066, + [SMALL_STATE(819)] = 51118, + [SMALL_STATE(820)] = 51170, + [SMALL_STATE(821)] = 51222, + [SMALL_STATE(822)] = 51306, + [SMALL_STATE(823)] = 51358, + [SMALL_STATE(824)] = 51410, + [SMALL_STATE(825)] = 51462, + [SMALL_STATE(826)] = 51514, + [SMALL_STATE(827)] = 51598, + [SMALL_STATE(828)] = 51650, + [SMALL_STATE(829)] = 51734, + [SMALL_STATE(830)] = 51786, + [SMALL_STATE(831)] = 51838, + [SMALL_STATE(832)] = 51922, + [SMALL_STATE(833)] = 51974, + [SMALL_STATE(834)] = 52026, + [SMALL_STATE(835)] = 52078, + [SMALL_STATE(836)] = 52130, + [SMALL_STATE(837)] = 52182, + [SMALL_STATE(838)] = 52266, + [SMALL_STATE(839)] = 52318, + [SMALL_STATE(840)] = 52370, + [SMALL_STATE(841)] = 52422, + [SMALL_STATE(842)] = 52506, + [SMALL_STATE(843)] = 52558, + [SMALL_STATE(844)] = 52610, + [SMALL_STATE(845)] = 52662, + [SMALL_STATE(846)] = 52714, + [SMALL_STATE(847)] = 52766, + [SMALL_STATE(848)] = 52818, + [SMALL_STATE(849)] = 52870, + [SMALL_STATE(850)] = 52922, + [SMALL_STATE(851)] = 52974, + [SMALL_STATE(852)] = 53026, + [SMALL_STATE(853)] = 53107, + [SMALL_STATE(854)] = 53188, + [SMALL_STATE(855)] = 53269, + [SMALL_STATE(856)] = 53350, + [SMALL_STATE(857)] = 53424, + [SMALL_STATE(858)] = 53498, + [SMALL_STATE(859)] = 53579, + [SMALL_STATE(860)] = 53660, + [SMALL_STATE(861)] = 53711, + [SMALL_STATE(862)] = 53762, + [SMALL_STATE(863)] = 53813, + [SMALL_STATE(864)] = 53864, + [SMALL_STATE(865)] = 53945, + [SMALL_STATE(866)] = 53996, + [SMALL_STATE(867)] = 54047, + [SMALL_STATE(868)] = 54116, + [SMALL_STATE(869)] = 54185, + [SMALL_STATE(870)] = 54254, + [SMALL_STATE(871)] = 54305, + [SMALL_STATE(872)] = 54374, + [SMALL_STATE(873)] = 54443, + [SMALL_STATE(874)] = 54512, + [SMALL_STATE(875)] = 54563, + [SMALL_STATE(876)] = 54632, + [SMALL_STATE(877)] = 54683, + [SMALL_STATE(878)] = 54752, + [SMALL_STATE(879)] = 54798, + [SMALL_STATE(880)] = 54864, + [SMALL_STATE(881)] = 54930, + [SMALL_STATE(882)] = 54996, + [SMALL_STATE(883)] = 55062, + [SMALL_STATE(884)] = 55132, + [SMALL_STATE(885)] = 55178, + [SMALL_STATE(886)] = 55244, + [SMALL_STATE(887)] = 55314, + [SMALL_STATE(888)] = 55380, + [SMALL_STATE(889)] = 55450, + [SMALL_STATE(890)] = 55520, + [SMALL_STATE(891)] = 55570, + [SMALL_STATE(892)] = 55636, + [SMALL_STATE(893)] = 55700, + [SMALL_STATE(894)] = 55766, + [SMALL_STATE(895)] = 55832, + [SMALL_STATE(896)] = 55898, + [SMALL_STATE(897)] = 55964, + [SMALL_STATE(898)] = 56010, + [SMALL_STATE(899)] = 56066, + [SMALL_STATE(900)] = 56126, + [SMALL_STATE(901)] = 56192, + [SMALL_STATE(902)] = 56260, + [SMALL_STATE(903)] = 56316, + [SMALL_STATE(904)] = 56386, + [SMALL_STATE(905)] = 56448, + [SMALL_STATE(906)] = 56504, + [SMALL_STATE(907)] = 56570, + [SMALL_STATE(908)] = 56616, + [SMALL_STATE(909)] = 56682, + [SMALL_STATE(910)] = 56748, + [SMALL_STATE(911)] = 56814, + [SMALL_STATE(912)] = 56880, + [SMALL_STATE(913)] = 56946, + [SMALL_STATE(914)] = 57012, + [SMALL_STATE(915)] = 57078, + [SMALL_STATE(916)] = 57144, + [SMALL_STATE(917)] = 57210, + [SMALL_STATE(918)] = 57276, + [SMALL_STATE(919)] = 57342, + [SMALL_STATE(920)] = 57408, + [SMALL_STATE(921)] = 57474, + [SMALL_STATE(922)] = 57540, + [SMALL_STATE(923)] = 57606, + [SMALL_STATE(924)] = 57672, + [SMALL_STATE(925)] = 57738, + [SMALL_STATE(926)] = 57804, + [SMALL_STATE(927)] = 57870, + [SMALL_STATE(928)] = 57936, + [SMALL_STATE(929)] = 58002, + [SMALL_STATE(930)] = 58068, + [SMALL_STATE(931)] = 58138, + [SMALL_STATE(932)] = 58204, + [SMALL_STATE(933)] = 58284, + [SMALL_STATE(934)] = 58334, + [SMALL_STATE(935)] = 58400, + [SMALL_STATE(936)] = 58470, + [SMALL_STATE(937)] = 58536, + [SMALL_STATE(938)] = 58606, + [SMALL_STATE(939)] = 58676, + [SMALL_STATE(940)] = 58742, + [SMALL_STATE(941)] = 58808, + [SMALL_STATE(942)] = 58858, + [SMALL_STATE(943)] = 58924, + [SMALL_STATE(944)] = 58970, + [SMALL_STATE(945)] = 59038, + [SMALL_STATE(946)] = 59108, + [SMALL_STATE(947)] = 59158, + [SMALL_STATE(948)] = 59228, + [SMALL_STATE(949)] = 59284, + [SMALL_STATE(950)] = 59350, + [SMALL_STATE(951)] = 59416, + [SMALL_STATE(952)] = 59472, + [SMALL_STATE(953)] = 59528, + [SMALL_STATE(954)] = 59594, + [SMALL_STATE(955)] = 59656, + [SMALL_STATE(956)] = 59722, + [SMALL_STATE(957)] = 59772, + [SMALL_STATE(958)] = 59828, + [SMALL_STATE(959)] = 59898, + [SMALL_STATE(960)] = 59978, + [SMALL_STATE(961)] = 60044, + [SMALL_STATE(962)] = 60094, + [SMALL_STATE(963)] = 60140, + [SMALL_STATE(964)] = 60186, + [SMALL_STATE(965)] = 60252, + [SMALL_STATE(966)] = 60318, + [SMALL_STATE(967)] = 60384, + [SMALL_STATE(968)] = 60450, + [SMALL_STATE(969)] = 60516, + [SMALL_STATE(970)] = 60582, + [SMALL_STATE(971)] = 60648, + [SMALL_STATE(972)] = 60714, + [SMALL_STATE(973)] = 60780, + [SMALL_STATE(974)] = 60846, + [SMALL_STATE(975)] = 60912, + [SMALL_STATE(976)] = 60976, + [SMALL_STATE(977)] = 61026, + [SMALL_STATE(978)] = 61092, + [SMALL_STATE(979)] = 61162, + [SMALL_STATE(980)] = 61218, + [SMALL_STATE(981)] = 61282, + [SMALL_STATE(982)] = 61362, + [SMALL_STATE(983)] = 61418, + [SMALL_STATE(984)] = 61484, + [SMALL_STATE(985)] = 61550, + [SMALL_STATE(986)] = 61616, + [SMALL_STATE(987)] = 61666, + [SMALL_STATE(988)] = 61732, + [SMALL_STATE(989)] = 61788, + [SMALL_STATE(990)] = 61844, + [SMALL_STATE(991)] = 61904, + [SMALL_STATE(992)] = 61972, + [SMALL_STATE(993)] = 62028, + [SMALL_STATE(994)] = 62098, + [SMALL_STATE(995)] = 62160, + [SMALL_STATE(996)] = 62226, + [SMALL_STATE(997)] = 62296, + [SMALL_STATE(998)] = 62362, + [SMALL_STATE(999)] = 62428, + [SMALL_STATE(1000)] = 62494, + [SMALL_STATE(1001)] = 62560, + [SMALL_STATE(1002)] = 62626, + [SMALL_STATE(1003)] = 62692, + [SMALL_STATE(1004)] = 62758, + [SMALL_STATE(1005)] = 62824, + [SMALL_STATE(1006)] = 62890, + [SMALL_STATE(1007)] = 62956, + [SMALL_STATE(1008)] = 63022, + [SMALL_STATE(1009)] = 63088, + [SMALL_STATE(1010)] = 63154, + [SMALL_STATE(1011)] = 63204, + [SMALL_STATE(1012)] = 63270, + [SMALL_STATE(1013)] = 63336, + [SMALL_STATE(1014)] = 63402, + [SMALL_STATE(1015)] = 63468, + [SMALL_STATE(1016)] = 63534, + [SMALL_STATE(1017)] = 63600, + [SMALL_STATE(1018)] = 63666, + [SMALL_STATE(1019)] = 63732, + [SMALL_STATE(1020)] = 63798, + [SMALL_STATE(1021)] = 63858, + [SMALL_STATE(1022)] = 63924, + [SMALL_STATE(1023)] = 63990, + [SMALL_STATE(1024)] = 64056, + [SMALL_STATE(1025)] = 64122, + [SMALL_STATE(1026)] = 64188, + [SMALL_STATE(1027)] = 64254, + [SMALL_STATE(1028)] = 64303, + [SMALL_STATE(1029)] = 64366, + [SMALL_STATE(1030)] = 64411, + [SMALL_STATE(1031)] = 64470, + [SMALL_STATE(1032)] = 64537, + [SMALL_STATE(1033)] = 64602, + [SMALL_STATE(1034)] = 64665, + [SMALL_STATE(1035)] = 64720, + [SMALL_STATE(1036)] = 64799, + [SMALL_STATE(1037)] = 64860, + [SMALL_STATE(1038)] = 64929, + [SMALL_STATE(1039)] = 64978, + [SMALL_STATE(1040)] = 65033, + [SMALL_STATE(1041)] = 65100, + [SMALL_STATE(1042)] = 65159, + [SMALL_STATE(1043)] = 65204, + [SMALL_STATE(1044)] = 65253, + [SMALL_STATE(1045)] = 65322, + [SMALL_STATE(1046)] = 65391, + [SMALL_STATE(1047)] = 65446, + [SMALL_STATE(1048)] = 65495, + [SMALL_STATE(1049)] = 65560, + [SMALL_STATE(1050)] = 65623, + [SMALL_STATE(1051)] = 65670, + [SMALL_STATE(1052)] = 65717, + [SMALL_STATE(1053)] = 65772, + [SMALL_STATE(1054)] = 65841, + [SMALL_STATE(1055)] = 65910, + [SMALL_STATE(1056)] = 65955, + [SMALL_STATE(1057)] = 66002, + [SMALL_STATE(1058)] = 66079, + [SMALL_STATE(1059)] = 66126, + [SMALL_STATE(1060)] = 66171, + [SMALL_STATE(1061)] = 66226, + [SMALL_STATE(1062)] = 66275, + [SMALL_STATE(1063)] = 66322, + [SMALL_STATE(1064)] = 66369, + [SMALL_STATE(1065)] = 66424, + [SMALL_STATE(1066)] = 66479, + [SMALL_STATE(1067)] = 66524, + [SMALL_STATE(1068)] = 66573, + [SMALL_STATE(1069)] = 66622, + [SMALL_STATE(1070)] = 66687, + [SMALL_STATE(1071)] = 66746, + [SMALL_STATE(1072)] = 66813, + [SMALL_STATE(1073)] = 66868, + [SMALL_STATE(1074)] = 66937, + [SMALL_STATE(1075)] = 66998, + [SMALL_STATE(1076)] = 67053, + [SMALL_STATE(1077)] = 67108, + [SMALL_STATE(1078)] = 67157, + [SMALL_STATE(1079)] = 67212, + [SMALL_STATE(1080)] = 67261, + [SMALL_STATE(1081)] = 67316, + [SMALL_STATE(1082)] = 67377, + [SMALL_STATE(1083)] = 67446, + [SMALL_STATE(1084)] = 67515, + [SMALL_STATE(1085)] = 67584, + [SMALL_STATE(1086)] = 67629, + [SMALL_STATE(1087)] = 67678, + [SMALL_STATE(1088)] = 67722, + [SMALL_STATE(1089)] = 67766, + [SMALL_STATE(1090)] = 67810, + [SMALL_STATE(1091)] = 67854, + [SMALL_STATE(1092)] = 67908, + [SMALL_STATE(1093)] = 67962, + [SMALL_STATE(1094)] = 68006, + [SMALL_STATE(1095)] = 68050, + [SMALL_STATE(1096)] = 68094, + [SMALL_STATE(1097)] = 68138, + [SMALL_STATE(1098)] = 68182, + [SMALL_STATE(1099)] = 68226, + [SMALL_STATE(1100)] = 68270, + [SMALL_STATE(1101)] = 68314, + [SMALL_STATE(1102)] = 68358, + [SMALL_STATE(1103)] = 68402, + [SMALL_STATE(1104)] = 68446, + [SMALL_STATE(1105)] = 68490, + [SMALL_STATE(1106)] = 68534, + [SMALL_STATE(1107)] = 68578, + [SMALL_STATE(1108)] = 68622, + [SMALL_STATE(1109)] = 68666, + [SMALL_STATE(1110)] = 68710, + [SMALL_STATE(1111)] = 68754, + [SMALL_STATE(1112)] = 68798, + [SMALL_STATE(1113)] = 68842, + [SMALL_STATE(1114)] = 68886, + [SMALL_STATE(1115)] = 68930, + [SMALL_STATE(1116)] = 68974, + [SMALL_STATE(1117)] = 69018, + [SMALL_STATE(1118)] = 69062, + [SMALL_STATE(1119)] = 69108, + [SMALL_STATE(1120)] = 69154, + [SMALL_STATE(1121)] = 69198, + [SMALL_STATE(1122)] = 69242, + [SMALL_STATE(1123)] = 69296, + [SMALL_STATE(1124)] = 69356, + [SMALL_STATE(1125)] = 69424, + [SMALL_STATE(1126)] = 69468, + [SMALL_STATE(1127)] = 69522, + [SMALL_STATE(1128)] = 69588, + [SMALL_STATE(1129)] = 69646, + [SMALL_STATE(1130)] = 69690, + [SMALL_STATE(1131)] = 69754, + [SMALL_STATE(1132)] = 69816, + [SMALL_STATE(1133)] = 69860, + [SMALL_STATE(1134)] = 69904, + [SMALL_STATE(1135)] = 69948, + [SMALL_STATE(1136)] = 69992, + [SMALL_STATE(1137)] = 70060, + [SMALL_STATE(1138)] = 70104, + [SMALL_STATE(1139)] = 70148, + [SMALL_STATE(1140)] = 70192, + [SMALL_STATE(1141)] = 70260, + [SMALL_STATE(1142)] = 70304, + [SMALL_STATE(1143)] = 70348, + [SMALL_STATE(1144)] = 70392, + [SMALL_STATE(1145)] = 70436, + [SMALL_STATE(1146)] = 70484, + [SMALL_STATE(1147)] = 70532, + [SMALL_STATE(1148)] = 70576, + [SMALL_STATE(1149)] = 70630, + [SMALL_STATE(1150)] = 70684, + [SMALL_STATE(1151)] = 70728, + [SMALL_STATE(1152)] = 70774, + [SMALL_STATE(1153)] = 70818, + [SMALL_STATE(1154)] = 70862, + [SMALL_STATE(1155)] = 70906, + [SMALL_STATE(1156)] = 70952, + [SMALL_STATE(1157)] = 70996, + [SMALL_STATE(1158)] = 71042, + [SMALL_STATE(1159)] = 71086, + [SMALL_STATE(1160)] = 71134, + [SMALL_STATE(1161)] = 71178, + [SMALL_STATE(1162)] = 71224, + [SMALL_STATE(1163)] = 71268, + [SMALL_STATE(1164)] = 71314, + [SMALL_STATE(1165)] = 71358, + [SMALL_STATE(1166)] = 71402, + [SMALL_STATE(1167)] = 71456, + [SMALL_STATE(1168)] = 71516, + [SMALL_STATE(1169)] = 71584, + [SMALL_STATE(1170)] = 71628, + [SMALL_STATE(1171)] = 71682, + [SMALL_STATE(1172)] = 71730, + [SMALL_STATE(1173)] = 71796, + [SMALL_STATE(1174)] = 71840, + [SMALL_STATE(1175)] = 71886, + [SMALL_STATE(1176)] = 71930, + [SMALL_STATE(1177)] = 71974, + [SMALL_STATE(1178)] = 72032, + [SMALL_STATE(1179)] = 72076, + [SMALL_STATE(1180)] = 72120, + [SMALL_STATE(1181)] = 72166, + [SMALL_STATE(1182)] = 72230, + [SMALL_STATE(1183)] = 72274, + [SMALL_STATE(1184)] = 72318, + [SMALL_STATE(1185)] = 72380, + [SMALL_STATE(1186)] = 72424, + [SMALL_STATE(1187)] = 72468, + [SMALL_STATE(1188)] = 72512, + [SMALL_STATE(1189)] = 72556, + [SMALL_STATE(1190)] = 72600, + [SMALL_STATE(1191)] = 72644, + [SMALL_STATE(1192)] = 72688, + [SMALL_STATE(1193)] = 72732, + [SMALL_STATE(1194)] = 72776, + [SMALL_STATE(1195)] = 72820, + [SMALL_STATE(1196)] = 72864, + [SMALL_STATE(1197)] = 72908, + [SMALL_STATE(1198)] = 72952, + [SMALL_STATE(1199)] = 72996, + [SMALL_STATE(1200)] = 73040, + [SMALL_STATE(1201)] = 73084, + [SMALL_STATE(1202)] = 73128, + [SMALL_STATE(1203)] = 73196, + [SMALL_STATE(1204)] = 73264, + [SMALL_STATE(1205)] = 73308, + [SMALL_STATE(1206)] = 73352, + [SMALL_STATE(1207)] = 73396, + [SMALL_STATE(1208)] = 73440, + [SMALL_STATE(1209)] = 73484, + [SMALL_STATE(1210)] = 73528, + [SMALL_STATE(1211)] = 73572, + [SMALL_STATE(1212)] = 73616, + [SMALL_STATE(1213)] = 73660, + [SMALL_STATE(1214)] = 73704, + [SMALL_STATE(1215)] = 73748, + [SMALL_STATE(1216)] = 73792, + [SMALL_STATE(1217)] = 73835, + [SMALL_STATE(1218)] = 73878, + [SMALL_STATE(1219)] = 73921, + [SMALL_STATE(1220)] = 73964, + [SMALL_STATE(1221)] = 74007, + [SMALL_STATE(1222)] = 74050, + [SMALL_STATE(1223)] = 74097, + [SMALL_STATE(1224)] = 74144, + [SMALL_STATE(1225)] = 74187, + [SMALL_STATE(1226)] = 74232, + [SMALL_STATE(1227)] = 74277, + [SMALL_STATE(1228)] = 74320, + [SMALL_STATE(1229)] = 74363, + [SMALL_STATE(1230)] = 74406, + [SMALL_STATE(1231)] = 74449, + [SMALL_STATE(1232)] = 74492, + [SMALL_STATE(1233)] = 74535, + [SMALL_STATE(1234)] = 74578, + [SMALL_STATE(1235)] = 74621, + [SMALL_STATE(1236)] = 74664, + [SMALL_STATE(1237)] = 74707, + [SMALL_STATE(1238)] = 74750, + [SMALL_STATE(1239)] = 74793, + [SMALL_STATE(1240)] = 74836, + [SMALL_STATE(1241)] = 74879, + [SMALL_STATE(1242)] = 74922, + [SMALL_STATE(1243)] = 74965, + [SMALL_STATE(1244)] = 75008, + [SMALL_STATE(1245)] = 75051, + [SMALL_STATE(1246)] = 75094, + [SMALL_STATE(1247)] = 75137, + [SMALL_STATE(1248)] = 75180, + [SMALL_STATE(1249)] = 75223, + [SMALL_STATE(1250)] = 75266, + [SMALL_STATE(1251)] = 75309, + [SMALL_STATE(1252)] = 75352, + [SMALL_STATE(1253)] = 75395, + [SMALL_STATE(1254)] = 75438, + [SMALL_STATE(1255)] = 75481, + [SMALL_STATE(1256)] = 75524, + [SMALL_STATE(1257)] = 75567, + [SMALL_STATE(1258)] = 75610, + [SMALL_STATE(1259)] = 75653, + [SMALL_STATE(1260)] = 75696, + [SMALL_STATE(1261)] = 75739, + [SMALL_STATE(1262)] = 75782, + [SMALL_STATE(1263)] = 75825, + [SMALL_STATE(1264)] = 75868, + [SMALL_STATE(1265)] = 75913, + [SMALL_STATE(1266)] = 75956, + [SMALL_STATE(1267)] = 75999, + [SMALL_STATE(1268)] = 76042, + [SMALL_STATE(1269)] = 76085, + [SMALL_STATE(1270)] = 76128, + [SMALL_STATE(1271)] = 76171, + [SMALL_STATE(1272)] = 76216, + [SMALL_STATE(1273)] = 76261, + [SMALL_STATE(1274)] = 76304, + [SMALL_STATE(1275)] = 76347, + [SMALL_STATE(1276)] = 76390, + [SMALL_STATE(1277)] = 76433, + [SMALL_STATE(1278)] = 76476, + [SMALL_STATE(1279)] = 76519, + [SMALL_STATE(1280)] = 76562, + [SMALL_STATE(1281)] = 76605, + [SMALL_STATE(1282)] = 76648, + [SMALL_STATE(1283)] = 76691, + [SMALL_STATE(1284)] = 76734, + [SMALL_STATE(1285)] = 76777, + [SMALL_STATE(1286)] = 76820, + [SMALL_STATE(1287)] = 76863, + [SMALL_STATE(1288)] = 76906, + [SMALL_STATE(1289)] = 76949, + [SMALL_STATE(1290)] = 76992, + [SMALL_STATE(1291)] = 77035, + [SMALL_STATE(1292)] = 77080, + [SMALL_STATE(1293)] = 77123, + [SMALL_STATE(1294)] = 77166, + [SMALL_STATE(1295)] = 77211, + [SMALL_STATE(1296)] = 77254, + [SMALL_STATE(1297)] = 77299, + [SMALL_STATE(1298)] = 77342, + [SMALL_STATE(1299)] = 77387, + [SMALL_STATE(1300)] = 77430, + [SMALL_STATE(1301)] = 77475, + [SMALL_STATE(1302)] = 77518, + [SMALL_STATE(1303)] = 77561, + [SMALL_STATE(1304)] = 77604, + [SMALL_STATE(1305)] = 77647, + [SMALL_STATE(1306)] = 77690, + [SMALL_STATE(1307)] = 77733, + [SMALL_STATE(1308)] = 77776, + [SMALL_STATE(1309)] = 77819, + [SMALL_STATE(1310)] = 77862, + [SMALL_STATE(1311)] = 77905, + [SMALL_STATE(1312)] = 77947, + [SMALL_STATE(1313)] = 77989, + [SMALL_STATE(1314)] = 78031, + [SMALL_STATE(1315)] = 78073, + [SMALL_STATE(1316)] = 78115, + [SMALL_STATE(1317)] = 78157, + [SMALL_STATE(1318)] = 78199, + [SMALL_STATE(1319)] = 78241, + [SMALL_STATE(1320)] = 78283, + [SMALL_STATE(1321)] = 78373, + [SMALL_STATE(1322)] = 78415, + [SMALL_STATE(1323)] = 78459, + [SMALL_STATE(1324)] = 78503, + [SMALL_STATE(1325)] = 78545, + [SMALL_STATE(1326)] = 78587, + [SMALL_STATE(1327)] = 78629, + [SMALL_STATE(1328)] = 78671, + [SMALL_STATE(1329)] = 78713, + [SMALL_STATE(1330)] = 78755, + [SMALL_STATE(1331)] = 78797, + [SMALL_STATE(1332)] = 78839, + [SMALL_STATE(1333)] = 78881, + [SMALL_STATE(1334)] = 78923, + [SMALL_STATE(1335)] = 78965, + [SMALL_STATE(1336)] = 79007, + [SMALL_STATE(1337)] = 79049, + [SMALL_STATE(1338)] = 79091, + [SMALL_STATE(1339)] = 79133, + [SMALL_STATE(1340)] = 79223, + [SMALL_STATE(1341)] = 79267, + [SMALL_STATE(1342)] = 79357, + [SMALL_STATE(1343)] = 79399, + [SMALL_STATE(1344)] = 79441, + [SMALL_STATE(1345)] = 79483, + [SMALL_STATE(1346)] = 79573, + [SMALL_STATE(1347)] = 79615, + [SMALL_STATE(1348)] = 79657, + [SMALL_STATE(1349)] = 79699, + [SMALL_STATE(1350)] = 79741, + [SMALL_STATE(1351)] = 79783, + [SMALL_STATE(1352)] = 79825, + [SMALL_STATE(1353)] = 79867, + [SMALL_STATE(1354)] = 79909, + [SMALL_STATE(1355)] = 79955, + [SMALL_STATE(1356)] = 80001, + [SMALL_STATE(1357)] = 80091, + [SMALL_STATE(1358)] = 80181, + [SMALL_STATE(1359)] = 80223, + [SMALL_STATE(1360)] = 80265, + [SMALL_STATE(1361)] = 80311, + [SMALL_STATE(1362)] = 80353, + [SMALL_STATE(1363)] = 80395, + [SMALL_STATE(1364)] = 80441, + [SMALL_STATE(1365)] = 80483, + [SMALL_STATE(1366)] = 80525, + [SMALL_STATE(1367)] = 80567, + [SMALL_STATE(1368)] = 80609, + [SMALL_STATE(1369)] = 80651, + [SMALL_STATE(1370)] = 80693, + [SMALL_STATE(1371)] = 80735, + [SMALL_STATE(1372)] = 80777, + [SMALL_STATE(1373)] = 80819, + [SMALL_STATE(1374)] = 80863, + [SMALL_STATE(1375)] = 80907, + [SMALL_STATE(1376)] = 80949, + [SMALL_STATE(1377)] = 80991, + [SMALL_STATE(1378)] = 81033, + [SMALL_STATE(1379)] = 81075, + [SMALL_STATE(1380)] = 81119, + [SMALL_STATE(1381)] = 81161, + [SMALL_STATE(1382)] = 81203, + [SMALL_STATE(1383)] = 81289, + [SMALL_STATE(1384)] = 81331, + [SMALL_STATE(1385)] = 81373, + [SMALL_STATE(1386)] = 81415, + [SMALL_STATE(1387)] = 81457, + [SMALL_STATE(1388)] = 81499, + [SMALL_STATE(1389)] = 81541, + [SMALL_STATE(1390)] = 81583, + [SMALL_STATE(1391)] = 81626, + [SMALL_STATE(1392)] = 81669, + [SMALL_STATE(1393)] = 81752, + [SMALL_STATE(1394)] = 81835, + [SMALL_STATE(1395)] = 81919, + [SMALL_STATE(1396)] = 82003, + [SMALL_STATE(1397)] = 82085, + [SMALL_STATE(1398)] = 82169, + [SMALL_STATE(1399)] = 82251, + [SMALL_STATE(1400)] = 82333, + [SMALL_STATE(1401)] = 82415, + [SMALL_STATE(1402)] = 82497, + [SMALL_STATE(1403)] = 82581, + [SMALL_STATE(1404)] = 82662, + [SMALL_STATE(1405)] = 82741, + [SMALL_STATE(1406)] = 82820, + [SMALL_STATE(1407)] = 82901, + [SMALL_STATE(1408)] = 82982, + [SMALL_STATE(1409)] = 83063, + [SMALL_STATE(1410)] = 83144, + [SMALL_STATE(1411)] = 83223, + [SMALL_STATE(1412)] = 83302, + [SMALL_STATE(1413)] = 83383, + [SMALL_STATE(1414)] = 83464, + [SMALL_STATE(1415)] = 83540, + [SMALL_STATE(1416)] = 83616, + [SMALL_STATE(1417)] = 83692, + [SMALL_STATE(1418)] = 83761, + [SMALL_STATE(1419)] = 83830, + [SMALL_STATE(1420)] = 83899, + [SMALL_STATE(1421)] = 83959, + [SMALL_STATE(1422)] = 84019, + [SMALL_STATE(1423)] = 84079, + [SMALL_STATE(1424)] = 84139, + [SMALL_STATE(1425)] = 84171, + [SMALL_STATE(1426)] = 84203, + [SMALL_STATE(1427)] = 84235, + [SMALL_STATE(1428)] = 84267, + [SMALL_STATE(1429)] = 84299, + [SMALL_STATE(1430)] = 84331, + [SMALL_STATE(1431)] = 84370, + [SMALL_STATE(1432)] = 84409, + [SMALL_STATE(1433)] = 84448, + [SMALL_STATE(1434)] = 84487, + [SMALL_STATE(1435)] = 84526, + [SMALL_STATE(1436)] = 84565, + [SMALL_STATE(1437)] = 84603, + [SMALL_STATE(1438)] = 84657, + [SMALL_STATE(1439)] = 84687, + [SMALL_STATE(1440)] = 84741, + [SMALL_STATE(1441)] = 84771, + [SMALL_STATE(1442)] = 84809, + [SMALL_STATE(1443)] = 84847, + [SMALL_STATE(1444)] = 84877, + [SMALL_STATE(1445)] = 84907, + [SMALL_STATE(1446)] = 84945, + [SMALL_STATE(1447)] = 84999, + [SMALL_STATE(1448)] = 85037, + [SMALL_STATE(1449)] = 85091, + [SMALL_STATE(1450)] = 85129, + [SMALL_STATE(1451)] = 85158, + [SMALL_STATE(1452)] = 85187, + [SMALL_STATE(1453)] = 85234, + [SMALL_STATE(1454)] = 85271, + [SMALL_STATE(1455)] = 85300, + [SMALL_STATE(1456)] = 85329, + [SMALL_STATE(1457)] = 85376, + [SMALL_STATE(1458)] = 85411, + [SMALL_STATE(1459)] = 85440, + [SMALL_STATE(1460)] = 85469, + [SMALL_STATE(1461)] = 85498, + [SMALL_STATE(1462)] = 85527, + [SMALL_STATE(1463)] = 85556, + [SMALL_STATE(1464)] = 85585, + [SMALL_STATE(1465)] = 85620, + [SMALL_STATE(1466)] = 85649, + [SMALL_STATE(1467)] = 85696, + [SMALL_STATE(1468)] = 85725, + [SMALL_STATE(1469)] = 85772, + [SMALL_STATE(1470)] = 85801, + [SMALL_STATE(1471)] = 85838, + [SMALL_STATE(1472)] = 85867, + [SMALL_STATE(1473)] = 85911, + [SMALL_STATE(1474)] = 85935, + [SMALL_STATE(1475)] = 85979, + [SMALL_STATE(1476)] = 86023, + [SMALL_STATE(1477)] = 86067, + [SMALL_STATE(1478)] = 86091, + [SMALL_STATE(1479)] = 86135, + [SMALL_STATE(1480)] = 86179, + [SMALL_STATE(1481)] = 86225, + [SMALL_STATE(1482)] = 86249, + [SMALL_STATE(1483)] = 86273, + [SMALL_STATE(1484)] = 86319, + [SMALL_STATE(1485)] = 86351, + [SMALL_STATE(1486)] = 86395, + [SMALL_STATE(1487)] = 86439, + [SMALL_STATE(1488)] = 86483, + [SMALL_STATE(1489)] = 86527, + [SMALL_STATE(1490)] = 86571, + [SMALL_STATE(1491)] = 86612, + [SMALL_STATE(1492)] = 86650, + [SMALL_STATE(1493)] = 86688, + [SMALL_STATE(1494)] = 86726, + [SMALL_STATE(1495)] = 86768, + [SMALL_STATE(1496)] = 86806, + [SMALL_STATE(1497)] = 86832, + [SMALL_STATE(1498)] = 86867, + [SMALL_STATE(1499)] = 86902, + [SMALL_STATE(1500)] = 86943, + [SMALL_STATE(1501)] = 86984, + [SMALL_STATE(1502)] = 87025, + [SMALL_STATE(1503)] = 87066, + [SMALL_STATE(1504)] = 87107, + [SMALL_STATE(1505)] = 87148, + [SMALL_STATE(1506)] = 87189, + [SMALL_STATE(1507)] = 87230, + [SMALL_STATE(1508)] = 87268, + [SMALL_STATE(1509)] = 87306, + [SMALL_STATE(1510)] = 87344, + [SMALL_STATE(1511)] = 87382, + [SMALL_STATE(1512)] = 87420, + [SMALL_STATE(1513)] = 87458, + [SMALL_STATE(1514)] = 87496, + [SMALL_STATE(1515)] = 87534, + [SMALL_STATE(1516)] = 87572, + [SMALL_STATE(1517)] = 87610, + [SMALL_STATE(1518)] = 87648, + [SMALL_STATE(1519)] = 87686, + [SMALL_STATE(1520)] = 87724, + [SMALL_STATE(1521)] = 87762, + [SMALL_STATE(1522)] = 87800, + [SMALL_STATE(1523)] = 87838, + [SMALL_STATE(1524)] = 87876, + [SMALL_STATE(1525)] = 87914, + [SMALL_STATE(1526)] = 87952, + [SMALL_STATE(1527)] = 87990, + [SMALL_STATE(1528)] = 88028, + [SMALL_STATE(1529)] = 88066, + [SMALL_STATE(1530)] = 88104, + [SMALL_STATE(1531)] = 88142, + [SMALL_STATE(1532)] = 88180, + [SMALL_STATE(1533)] = 88213, + [SMALL_STATE(1534)] = 88242, + [SMALL_STATE(1535)] = 88275, + [SMALL_STATE(1536)] = 88308, + [SMALL_STATE(1537)] = 88341, + [SMALL_STATE(1538)] = 88374, + [SMALL_STATE(1539)] = 88407, + [SMALL_STATE(1540)] = 88440, + [SMALL_STATE(1541)] = 88469, + [SMALL_STATE(1542)] = 88502, + [SMALL_STATE(1543)] = 88535, + [SMALL_STATE(1544)] = 88568, + [SMALL_STATE(1545)] = 88601, + [SMALL_STATE(1546)] = 88634, + [SMALL_STATE(1547)] = 88667, + [SMALL_STATE(1548)] = 88700, + [SMALL_STATE(1549)] = 88733, + [SMALL_STATE(1550)] = 88766, + [SMALL_STATE(1551)] = 88799, + [SMALL_STATE(1552)] = 88832, + [SMALL_STATE(1553)] = 88865, + [SMALL_STATE(1554)] = 88881, + [SMALL_STATE(1555)] = 88901, + [SMALL_STATE(1556)] = 88925, + [SMALL_STATE(1557)] = 88949, + [SMALL_STATE(1558)] = 88965, + [SMALL_STATE(1559)] = 88981, + [SMALL_STATE(1560)] = 89003, + [SMALL_STATE(1561)] = 89027, + [SMALL_STATE(1562)] = 89049, + [SMALL_STATE(1563)] = 89067, + [SMALL_STATE(1564)] = 89087, + [SMALL_STATE(1565)] = 89105, + [SMALL_STATE(1566)] = 89129, + [SMALL_STATE(1567)] = 89153, + [SMALL_STATE(1568)] = 89177, + [SMALL_STATE(1569)] = 89199, + [SMALL_STATE(1570)] = 89217, + [SMALL_STATE(1571)] = 89237, + [SMALL_STATE(1572)] = 89257, + [SMALL_STATE(1573)] = 89281, + [SMALL_STATE(1574)] = 89297, + [SMALL_STATE(1575)] = 89321, + [SMALL_STATE(1576)] = 89337, + [SMALL_STATE(1577)] = 89359, + [SMALL_STATE(1578)] = 89377, + [SMALL_STATE(1579)] = 89395, + [SMALL_STATE(1580)] = 89415, + [SMALL_STATE(1581)] = 89439, + [SMALL_STATE(1582)] = 89463, + [SMALL_STATE(1583)] = 89493, + [SMALL_STATE(1584)] = 89517, + [SMALL_STATE(1585)] = 89533, + [SMALL_STATE(1586)] = 89553, + [SMALL_STATE(1587)] = 89568, + [SMALL_STATE(1588)] = 89587, + [SMALL_STATE(1589)] = 89604, + [SMALL_STATE(1590)] = 89631, + [SMALL_STATE(1591)] = 89648, + [SMALL_STATE(1592)] = 89667, + [SMALL_STATE(1593)] = 89686, + [SMALL_STATE(1594)] = 89715, + [SMALL_STATE(1595)] = 89736, + [SMALL_STATE(1596)] = 89757, + [SMALL_STATE(1597)] = 89778, + [SMALL_STATE(1598)] = 89805, + [SMALL_STATE(1599)] = 89828, + [SMALL_STATE(1600)] = 89847, + [SMALL_STATE(1601)] = 89870, + [SMALL_STATE(1602)] = 89885, + [SMALL_STATE(1603)] = 89902, + [SMALL_STATE(1604)] = 89923, + [SMALL_STATE(1605)] = 89952, + [SMALL_STATE(1606)] = 89973, + [SMALL_STATE(1607)] = 89996, + [SMALL_STATE(1608)] = 90013, + [SMALL_STATE(1609)] = 90034, + [SMALL_STATE(1610)] = 90057, + [SMALL_STATE(1611)] = 90086, + [SMALL_STATE(1612)] = 90109, + [SMALL_STATE(1613)] = 90130, + [SMALL_STATE(1614)] = 90155, + [SMALL_STATE(1615)] = 90176, + [SMALL_STATE(1616)] = 90201, + [SMALL_STATE(1617)] = 90226, + [SMALL_STATE(1618)] = 90247, + [SMALL_STATE(1619)] = 90276, + [SMALL_STATE(1620)] = 90299, + [SMALL_STATE(1621)] = 90320, + [SMALL_STATE(1622)] = 90343, + [SMALL_STATE(1623)] = 90368, + [SMALL_STATE(1624)] = 90393, + [SMALL_STATE(1625)] = 90412, + [SMALL_STATE(1626)] = 90429, + [SMALL_STATE(1627)] = 90444, + [SMALL_STATE(1628)] = 90471, + [SMALL_STATE(1629)] = 90498, + [SMALL_STATE(1630)] = 90521, + [SMALL_STATE(1631)] = 90550, + [SMALL_STATE(1632)] = 90579, + [SMALL_STATE(1633)] = 90600, + [SMALL_STATE(1634)] = 90623, + [SMALL_STATE(1635)] = 90650, + [SMALL_STATE(1636)] = 90675, + [SMALL_STATE(1637)] = 90702, + [SMALL_STATE(1638)] = 90725, + [SMALL_STATE(1639)] = 90744, + [SMALL_STATE(1640)] = 90763, + [SMALL_STATE(1641)] = 90780, + [SMALL_STATE(1642)] = 90801, + [SMALL_STATE(1643)] = 90822, + [SMALL_STATE(1644)] = 90843, + [SMALL_STATE(1645)] = 90872, + [SMALL_STATE(1646)] = 90895, + [SMALL_STATE(1647)] = 90924, + [SMALL_STATE(1648)] = 90945, + [SMALL_STATE(1649)] = 90964, + [SMALL_STATE(1650)] = 90979, + [SMALL_STATE(1651)] = 91006, + [SMALL_STATE(1652)] = 91023, + [SMALL_STATE(1653)] = 91045, + [SMALL_STATE(1654)] = 91071, + [SMALL_STATE(1655)] = 91097, + [SMALL_STATE(1656)] = 91119, + [SMALL_STATE(1657)] = 91145, + [SMALL_STATE(1658)] = 91167, + [SMALL_STATE(1659)] = 91187, + [SMALL_STATE(1660)] = 91207, + [SMALL_STATE(1661)] = 91229, + [SMALL_STATE(1662)] = 91251, + [SMALL_STATE(1663)] = 91277, + [SMALL_STATE(1664)] = 91303, + [SMALL_STATE(1665)] = 91321, + [SMALL_STATE(1666)] = 91343, + [SMALL_STATE(1667)] = 91369, + [SMALL_STATE(1668)] = 91391, + [SMALL_STATE(1669)] = 91417, + [SMALL_STATE(1670)] = 91443, + [SMALL_STATE(1671)] = 91459, + [SMALL_STATE(1672)] = 91473, + [SMALL_STATE(1673)] = 91491, + [SMALL_STATE(1674)] = 91511, + [SMALL_STATE(1675)] = 91531, + [SMALL_STATE(1676)] = 91555, + [SMALL_STATE(1677)] = 91577, + [SMALL_STATE(1678)] = 91599, + [SMALL_STATE(1679)] = 91617, + [SMALL_STATE(1680)] = 91641, + [SMALL_STATE(1681)] = 91657, + [SMALL_STATE(1682)] = 91673, + [SMALL_STATE(1683)] = 91697, + [SMALL_STATE(1684)] = 91719, + [SMALL_STATE(1685)] = 91741, + [SMALL_STATE(1686)] = 91765, + [SMALL_STATE(1687)] = 91789, + [SMALL_STATE(1688)] = 91811, + [SMALL_STATE(1689)] = 91833, + [SMALL_STATE(1690)] = 91855, + [SMALL_STATE(1691)] = 91873, + [SMALL_STATE(1692)] = 91891, + [SMALL_STATE(1693)] = 91909, + [SMALL_STATE(1694)] = 91923, + [SMALL_STATE(1695)] = 91945, + [SMALL_STATE(1696)] = 91969, + [SMALL_STATE(1697)] = 91995, + [SMALL_STATE(1698)] = 92009, + [SMALL_STATE(1699)] = 92027, + [SMALL_STATE(1700)] = 92049, + [SMALL_STATE(1701)] = 92063, + [SMALL_STATE(1702)] = 92089, + [SMALL_STATE(1703)] = 92103, + [SMALL_STATE(1704)] = 92129, + [SMALL_STATE(1705)] = 92143, + [SMALL_STATE(1706)] = 92165, + [SMALL_STATE(1707)] = 92183, + [SMALL_STATE(1708)] = 92201, + [SMALL_STATE(1709)] = 92227, + [SMALL_STATE(1710)] = 92253, + [SMALL_STATE(1711)] = 92275, + [SMALL_STATE(1712)] = 92297, + [SMALL_STATE(1713)] = 92319, + [SMALL_STATE(1714)] = 92345, + [SMALL_STATE(1715)] = 92359, + [SMALL_STATE(1716)] = 92373, + [SMALL_STATE(1717)] = 92387, + [SMALL_STATE(1718)] = 92409, + [SMALL_STATE(1719)] = 92435, + [SMALL_STATE(1720)] = 92449, + [SMALL_STATE(1721)] = 92475, + [SMALL_STATE(1722)] = 92495, + [SMALL_STATE(1723)] = 92521, + [SMALL_STATE(1724)] = 92539, + [SMALL_STATE(1725)] = 92553, + [SMALL_STATE(1726)] = 92579, + [SMALL_STATE(1727)] = 92595, + [SMALL_STATE(1728)] = 92617, + [SMALL_STATE(1729)] = 92638, + [SMALL_STATE(1730)] = 92655, + [SMALL_STATE(1731)] = 92672, + [SMALL_STATE(1732)] = 92693, + [SMALL_STATE(1733)] = 92714, + [SMALL_STATE(1734)] = 92735, + [SMALL_STATE(1735)] = 92756, + [SMALL_STATE(1736)] = 92777, + [SMALL_STATE(1737)] = 92798, + [SMALL_STATE(1738)] = 92815, + [SMALL_STATE(1739)] = 92832, + [SMALL_STATE(1740)] = 92849, + [SMALL_STATE(1741)] = 92866, + [SMALL_STATE(1742)] = 92887, + [SMALL_STATE(1743)] = 92908, + [SMALL_STATE(1744)] = 92929, + [SMALL_STATE(1745)] = 92942, + [SMALL_STATE(1746)] = 92959, + [SMALL_STATE(1747)] = 92976, + [SMALL_STATE(1748)] = 92993, + [SMALL_STATE(1749)] = 93010, + [SMALL_STATE(1750)] = 93027, + [SMALL_STATE(1751)] = 93048, + [SMALL_STATE(1752)] = 93069, + [SMALL_STATE(1753)] = 93086, + [SMALL_STATE(1754)] = 93103, + [SMALL_STATE(1755)] = 93120, + [SMALL_STATE(1756)] = 93137, + [SMALL_STATE(1757)] = 93154, + [SMALL_STATE(1758)] = 93175, + [SMALL_STATE(1759)] = 93196, + [SMALL_STATE(1760)] = 93217, + [SMALL_STATE(1761)] = 93234, + [SMALL_STATE(1762)] = 93249, + [SMALL_STATE(1763)] = 93270, + [SMALL_STATE(1764)] = 93291, + [SMALL_STATE(1765)] = 93312, + [SMALL_STATE(1766)] = 93329, + [SMALL_STATE(1767)] = 93350, + [SMALL_STATE(1768)] = 93371, + [SMALL_STATE(1769)] = 93392, + [SMALL_STATE(1770)] = 93409, + [SMALL_STATE(1771)] = 93430, + [SMALL_STATE(1772)] = 93445, + [SMALL_STATE(1773)] = 93458, + [SMALL_STATE(1774)] = 93481, + [SMALL_STATE(1775)] = 93496, + [SMALL_STATE(1776)] = 93513, + [SMALL_STATE(1777)] = 93526, + [SMALL_STATE(1778)] = 93543, + [SMALL_STATE(1779)] = 93556, + [SMALL_STATE(1780)] = 93577, + [SMALL_STATE(1781)] = 93594, + [SMALL_STATE(1782)] = 93611, + [SMALL_STATE(1783)] = 93632, + [SMALL_STATE(1784)] = 93649, + [SMALL_STATE(1785)] = 93666, + [SMALL_STATE(1786)] = 93687, + [SMALL_STATE(1787)] = 93704, + [SMALL_STATE(1788)] = 93721, + [SMALL_STATE(1789)] = 93738, + [SMALL_STATE(1790)] = 93753, + [SMALL_STATE(1791)] = 93770, + [SMALL_STATE(1792)] = 93787, + [SMALL_STATE(1793)] = 93808, + [SMALL_STATE(1794)] = 93825, + [SMALL_STATE(1795)] = 93846, + [SMALL_STATE(1796)] = 93867, + [SMALL_STATE(1797)] = 93884, + [SMALL_STATE(1798)] = 93897, + [SMALL_STATE(1799)] = 93920, + [SMALL_STATE(1800)] = 93937, + [SMALL_STATE(1801)] = 93954, + [SMALL_STATE(1802)] = 93967, + [SMALL_STATE(1803)] = 93984, + [SMALL_STATE(1804)] = 94005, + [SMALL_STATE(1805)] = 94022, + [SMALL_STATE(1806)] = 94039, + [SMALL_STATE(1807)] = 94060, + [SMALL_STATE(1808)] = 94077, + [SMALL_STATE(1809)] = 94094, + [SMALL_STATE(1810)] = 94111, + [SMALL_STATE(1811)] = 94123, + [SMALL_STATE(1812)] = 94143, + [SMALL_STATE(1813)] = 94155, + [SMALL_STATE(1814)] = 94175, + [SMALL_STATE(1815)] = 94187, + [SMALL_STATE(1816)] = 94207, + [SMALL_STATE(1817)] = 94227, + [SMALL_STATE(1818)] = 94239, + [SMALL_STATE(1819)] = 94251, + [SMALL_STATE(1820)] = 94263, + [SMALL_STATE(1821)] = 94279, + [SMALL_STATE(1822)] = 94299, + [SMALL_STATE(1823)] = 94317, + [SMALL_STATE(1824)] = 94329, + [SMALL_STATE(1825)] = 94341, + [SMALL_STATE(1826)] = 94361, + [SMALL_STATE(1827)] = 94381, + [SMALL_STATE(1828)] = 94401, + [SMALL_STATE(1829)] = 94413, + [SMALL_STATE(1830)] = 94425, + [SMALL_STATE(1831)] = 94437, + [SMALL_STATE(1832)] = 94449, + [SMALL_STATE(1833)] = 94467, + [SMALL_STATE(1834)] = 94483, + [SMALL_STATE(1835)] = 94495, + [SMALL_STATE(1836)] = 94515, + [SMALL_STATE(1837)] = 94533, + [SMALL_STATE(1838)] = 94549, + [SMALL_STATE(1839)] = 94565, + [SMALL_STATE(1840)] = 94577, + [SMALL_STATE(1841)] = 94589, + [SMALL_STATE(1842)] = 94609, + [SMALL_STATE(1843)] = 94621, + [SMALL_STATE(1844)] = 94635, + [SMALL_STATE(1845)] = 94647, + [SMALL_STATE(1846)] = 94659, + [SMALL_STATE(1847)] = 94679, + [SMALL_STATE(1848)] = 94691, + [SMALL_STATE(1849)] = 94711, + [SMALL_STATE(1850)] = 94731, + [SMALL_STATE(1851)] = 94747, + [SMALL_STATE(1852)] = 94761, + [SMALL_STATE(1853)] = 94781, + [SMALL_STATE(1854)] = 94801, + [SMALL_STATE(1855)] = 94821, + [SMALL_STATE(1856)] = 94833, + [SMALL_STATE(1857)] = 94845, + [SMALL_STATE(1858)] = 94857, + [SMALL_STATE(1859)] = 94869, + [SMALL_STATE(1860)] = 94889, + [SMALL_STATE(1861)] = 94901, + [SMALL_STATE(1862)] = 94917, + [SMALL_STATE(1863)] = 94929, + [SMALL_STATE(1864)] = 94941, + [SMALL_STATE(1865)] = 94953, + [SMALL_STATE(1866)] = 94969, + [SMALL_STATE(1867)] = 94981, + [SMALL_STATE(1868)] = 94993, + [SMALL_STATE(1869)] = 95005, + [SMALL_STATE(1870)] = 95017, + [SMALL_STATE(1871)] = 95029, + [SMALL_STATE(1872)] = 95045, + [SMALL_STATE(1873)] = 95065, + [SMALL_STATE(1874)] = 95077, + [SMALL_STATE(1875)] = 95093, + [SMALL_STATE(1876)] = 95113, + [SMALL_STATE(1877)] = 95133, + [SMALL_STATE(1878)] = 95153, + [SMALL_STATE(1879)] = 95165, + [SMALL_STATE(1880)] = 95185, + [SMALL_STATE(1881)] = 95205, + [SMALL_STATE(1882)] = 95217, + [SMALL_STATE(1883)] = 95237, + [SMALL_STATE(1884)] = 95249, + [SMALL_STATE(1885)] = 95261, + [SMALL_STATE(1886)] = 95273, + [SMALL_STATE(1887)] = 95293, + [SMALL_STATE(1888)] = 95305, + [SMALL_STATE(1889)] = 95317, + [SMALL_STATE(1890)] = 95337, + [SMALL_STATE(1891)] = 95357, + [SMALL_STATE(1892)] = 95377, + [SMALL_STATE(1893)] = 95389, + [SMALL_STATE(1894)] = 95401, + [SMALL_STATE(1895)] = 95413, + [SMALL_STATE(1896)] = 95425, + [SMALL_STATE(1897)] = 95445, + [SMALL_STATE(1898)] = 95465, + [SMALL_STATE(1899)] = 95477, + [SMALL_STATE(1900)] = 95497, + [SMALL_STATE(1901)] = 95515, + [SMALL_STATE(1902)] = 95527, + [SMALL_STATE(1903)] = 95547, + [SMALL_STATE(1904)] = 95567, + [SMALL_STATE(1905)] = 95587, + [SMALL_STATE(1906)] = 95607, + [SMALL_STATE(1907)] = 95619, + [SMALL_STATE(1908)] = 95634, + [SMALL_STATE(1909)] = 95649, + [SMALL_STATE(1910)] = 95664, + [SMALL_STATE(1911)] = 95675, + [SMALL_STATE(1912)] = 95686, + [SMALL_STATE(1913)] = 95697, + [SMALL_STATE(1914)] = 95708, + [SMALL_STATE(1915)] = 95719, + [SMALL_STATE(1916)] = 95736, + [SMALL_STATE(1917)] = 95747, + [SMALL_STATE(1918)] = 95758, + [SMALL_STATE(1919)] = 95775, + [SMALL_STATE(1920)] = 95792, + [SMALL_STATE(1921)] = 95803, + [SMALL_STATE(1922)] = 95818, + [SMALL_STATE(1923)] = 95829, + [SMALL_STATE(1924)] = 95842, + [SMALL_STATE(1925)] = 95857, + [SMALL_STATE(1926)] = 95872, + [SMALL_STATE(1927)] = 95883, + [SMALL_STATE(1928)] = 95894, + [SMALL_STATE(1929)] = 95909, + [SMALL_STATE(1930)] = 95920, + [SMALL_STATE(1931)] = 95931, + [SMALL_STATE(1932)] = 95946, + [SMALL_STATE(1933)] = 95961, + [SMALL_STATE(1934)] = 95972, + [SMALL_STATE(1935)] = 95983, + [SMALL_STATE(1936)] = 96000, + [SMALL_STATE(1937)] = 96015, + [SMALL_STATE(1938)] = 96028, + [SMALL_STATE(1939)] = 96045, + [SMALL_STATE(1940)] = 96056, + [SMALL_STATE(1941)] = 96067, + [SMALL_STATE(1942)] = 96078, + [SMALL_STATE(1943)] = 96089, + [SMALL_STATE(1944)] = 96104, + [SMALL_STATE(1945)] = 96119, + [SMALL_STATE(1946)] = 96136, + [SMALL_STATE(1947)] = 96147, + [SMALL_STATE(1948)] = 96158, + [SMALL_STATE(1949)] = 96175, + [SMALL_STATE(1950)] = 96186, + [SMALL_STATE(1951)] = 96201, + [SMALL_STATE(1952)] = 96218, + [SMALL_STATE(1953)] = 96229, + [SMALL_STATE(1954)] = 96240, + [SMALL_STATE(1955)] = 96251, + [SMALL_STATE(1956)] = 96266, + [SMALL_STATE(1957)] = 96283, + [SMALL_STATE(1958)] = 96298, + [SMALL_STATE(1959)] = 96313, + [SMALL_STATE(1960)] = 96328, + [SMALL_STATE(1961)] = 96343, + [SMALL_STATE(1962)] = 96358, + [SMALL_STATE(1963)] = 96369, + [SMALL_STATE(1964)] = 96382, + [SMALL_STATE(1965)] = 96397, + [SMALL_STATE(1966)] = 96412, + [SMALL_STATE(1967)] = 96423, + [SMALL_STATE(1968)] = 96440, + [SMALL_STATE(1969)] = 96457, + [SMALL_STATE(1970)] = 96474, + [SMALL_STATE(1971)] = 96491, + [SMALL_STATE(1972)] = 96502, + [SMALL_STATE(1973)] = 96517, + [SMALL_STATE(1974)] = 96532, + [SMALL_STATE(1975)] = 96547, + [SMALL_STATE(1976)] = 96564, + [SMALL_STATE(1977)] = 96575, + [SMALL_STATE(1978)] = 96590, + [SMALL_STATE(1979)] = 96605, + [SMALL_STATE(1980)] = 96616, + [SMALL_STATE(1981)] = 96633, + [SMALL_STATE(1982)] = 96644, + [SMALL_STATE(1983)] = 96655, + [SMALL_STATE(1984)] = 96670, + [SMALL_STATE(1985)] = 96685, + [SMALL_STATE(1986)] = 96700, + [SMALL_STATE(1987)] = 96717, + [SMALL_STATE(1988)] = 96728, + [SMALL_STATE(1989)] = 96745, + [SMALL_STATE(1990)] = 96759, + [SMALL_STATE(1991)] = 96769, + [SMALL_STATE(1992)] = 96783, + [SMALL_STATE(1993)] = 96797, + [SMALL_STATE(1994)] = 96811, + [SMALL_STATE(1995)] = 96825, + [SMALL_STATE(1996)] = 96839, + [SMALL_STATE(1997)] = 96853, + [SMALL_STATE(1998)] = 96867, + [SMALL_STATE(1999)] = 96881, + [SMALL_STATE(2000)] = 96895, + [SMALL_STATE(2001)] = 96909, + [SMALL_STATE(2002)] = 96923, + [SMALL_STATE(2003)] = 96935, + [SMALL_STATE(2004)] = 96949, + [SMALL_STATE(2005)] = 96963, + [SMALL_STATE(2006)] = 96973, + [SMALL_STATE(2007)] = 96985, + [SMALL_STATE(2008)] = 96999, + [SMALL_STATE(2009)] = 97013, + [SMALL_STATE(2010)] = 97023, + [SMALL_STATE(2011)] = 97037, + [SMALL_STATE(2012)] = 97051, + [SMALL_STATE(2013)] = 97063, + [SMALL_STATE(2014)] = 97075, + [SMALL_STATE(2015)] = 97085, + [SMALL_STATE(2016)] = 97099, + [SMALL_STATE(2017)] = 97113, + [SMALL_STATE(2018)] = 97125, + [SMALL_STATE(2019)] = 97137, + [SMALL_STATE(2020)] = 97151, + [SMALL_STATE(2021)] = 97165, + [SMALL_STATE(2022)] = 97177, + [SMALL_STATE(2023)] = 97189, + [SMALL_STATE(2024)] = 97201, + [SMALL_STATE(2025)] = 97211, + [SMALL_STATE(2026)] = 97225, + [SMALL_STATE(2027)] = 97239, + [SMALL_STATE(2028)] = 97253, + [SMALL_STATE(2029)] = 97265, + [SMALL_STATE(2030)] = 97277, + [SMALL_STATE(2031)] = 97289, + [SMALL_STATE(2032)] = 97301, + [SMALL_STATE(2033)] = 97315, + [SMALL_STATE(2034)] = 97329, + [SMALL_STATE(2035)] = 97343, + [SMALL_STATE(2036)] = 97353, + [SMALL_STATE(2037)] = 97367, + [SMALL_STATE(2038)] = 97381, + [SMALL_STATE(2039)] = 97395, + [SMALL_STATE(2040)] = 97405, + [SMALL_STATE(2041)] = 97419, + [SMALL_STATE(2042)] = 97433, + [SMALL_STATE(2043)] = 97443, + [SMALL_STATE(2044)] = 97457, + [SMALL_STATE(2045)] = 97471, + [SMALL_STATE(2046)] = 97483, + [SMALL_STATE(2047)] = 97497, + [SMALL_STATE(2048)] = 97511, + [SMALL_STATE(2049)] = 97525, + [SMALL_STATE(2050)] = 97539, + [SMALL_STATE(2051)] = 97553, + [SMALL_STATE(2052)] = 97565, + [SMALL_STATE(2053)] = 97579, + [SMALL_STATE(2054)] = 97593, + [SMALL_STATE(2055)] = 97607, + [SMALL_STATE(2056)] = 97621, + [SMALL_STATE(2057)] = 97631, + [SMALL_STATE(2058)] = 97645, + [SMALL_STATE(2059)] = 97659, + [SMALL_STATE(2060)] = 97673, + [SMALL_STATE(2061)] = 97687, + [SMALL_STATE(2062)] = 97701, + [SMALL_STATE(2063)] = 97715, + [SMALL_STATE(2064)] = 97729, + [SMALL_STATE(2065)] = 97743, + [SMALL_STATE(2066)] = 97757, + [SMALL_STATE(2067)] = 97771, + [SMALL_STATE(2068)] = 97785, + [SMALL_STATE(2069)] = 97799, + [SMALL_STATE(2070)] = 97813, + [SMALL_STATE(2071)] = 97827, + [SMALL_STATE(2072)] = 97841, + [SMALL_STATE(2073)] = 97855, + [SMALL_STATE(2074)] = 97867, + [SMALL_STATE(2075)] = 97881, + [SMALL_STATE(2076)] = 97895, + [SMALL_STATE(2077)] = 97909, + [SMALL_STATE(2078)] = 97921, + [SMALL_STATE(2079)] = 97935, + [SMALL_STATE(2080)] = 97945, + [SMALL_STATE(2081)] = 97959, + [SMALL_STATE(2082)] = 97973, + [SMALL_STATE(2083)] = 97985, + [SMALL_STATE(2084)] = 97999, + [SMALL_STATE(2085)] = 98013, + [SMALL_STATE(2086)] = 98027, + [SMALL_STATE(2087)] = 98041, + [SMALL_STATE(2088)] = 98055, + [SMALL_STATE(2089)] = 98069, + [SMALL_STATE(2090)] = 98083, + [SMALL_STATE(2091)] = 98097, + [SMALL_STATE(2092)] = 98111, + [SMALL_STATE(2093)] = 98125, + [SMALL_STATE(2094)] = 98139, + [SMALL_STATE(2095)] = 98153, + [SMALL_STATE(2096)] = 98167, + [SMALL_STATE(2097)] = 98181, + [SMALL_STATE(2098)] = 98195, + [SMALL_STATE(2099)] = 98209, + [SMALL_STATE(2100)] = 98221, + [SMALL_STATE(2101)] = 98235, + [SMALL_STATE(2102)] = 98249, + [SMALL_STATE(2103)] = 98263, + [SMALL_STATE(2104)] = 98275, + [SMALL_STATE(2105)] = 98289, + [SMALL_STATE(2106)] = 98303, + [SMALL_STATE(2107)] = 98315, + [SMALL_STATE(2108)] = 98329, + [SMALL_STATE(2109)] = 98343, + [SMALL_STATE(2110)] = 98357, + [SMALL_STATE(2111)] = 98371, + [SMALL_STATE(2112)] = 98385, + [SMALL_STATE(2113)] = 98399, + [SMALL_STATE(2114)] = 98413, + [SMALL_STATE(2115)] = 98427, + [SMALL_STATE(2116)] = 98441, + [SMALL_STATE(2117)] = 98455, + [SMALL_STATE(2118)] = 98469, + [SMALL_STATE(2119)] = 98483, + [SMALL_STATE(2120)] = 98497, + [SMALL_STATE(2121)] = 98511, + [SMALL_STATE(2122)] = 98525, + [SMALL_STATE(2123)] = 98539, + [SMALL_STATE(2124)] = 98553, + [SMALL_STATE(2125)] = 98567, + [SMALL_STATE(2126)] = 98581, + [SMALL_STATE(2127)] = 98595, + [SMALL_STATE(2128)] = 98609, + [SMALL_STATE(2129)] = 98623, + [SMALL_STATE(2130)] = 98637, + [SMALL_STATE(2131)] = 98651, + [SMALL_STATE(2132)] = 98663, + [SMALL_STATE(2133)] = 98677, + [SMALL_STATE(2134)] = 98691, + [SMALL_STATE(2135)] = 98705, + [SMALL_STATE(2136)] = 98719, + [SMALL_STATE(2137)] = 98733, + [SMALL_STATE(2138)] = 98747, + [SMALL_STATE(2139)] = 98761, + [SMALL_STATE(2140)] = 98775, + [SMALL_STATE(2141)] = 98789, + [SMALL_STATE(2142)] = 98803, + [SMALL_STATE(2143)] = 98817, + [SMALL_STATE(2144)] = 98831, + [SMALL_STATE(2145)] = 98845, + [SMALL_STATE(2146)] = 98859, + [SMALL_STATE(2147)] = 98871, + [SMALL_STATE(2148)] = 98885, + [SMALL_STATE(2149)] = 98899, + [SMALL_STATE(2150)] = 98913, + [SMALL_STATE(2151)] = 98927, + [SMALL_STATE(2152)] = 98941, + [SMALL_STATE(2153)] = 98955, + [SMALL_STATE(2154)] = 98969, + [SMALL_STATE(2155)] = 98983, + [SMALL_STATE(2156)] = 98997, + [SMALL_STATE(2157)] = 99011, + [SMALL_STATE(2158)] = 99025, + [SMALL_STATE(2159)] = 99035, + [SMALL_STATE(2160)] = 99045, + [SMALL_STATE(2161)] = 99059, + [SMALL_STATE(2162)] = 99073, + [SMALL_STATE(2163)] = 99087, + [SMALL_STATE(2164)] = 99101, + [SMALL_STATE(2165)] = 99115, + [SMALL_STATE(2166)] = 99129, + [SMALL_STATE(2167)] = 99143, + [SMALL_STATE(2168)] = 99157, + [SMALL_STATE(2169)] = 99167, + [SMALL_STATE(2170)] = 99177, + [SMALL_STATE(2171)] = 99187, + [SMALL_STATE(2172)] = 99199, + [SMALL_STATE(2173)] = 99213, + [SMALL_STATE(2174)] = 99227, + [SMALL_STATE(2175)] = 99241, + [SMALL_STATE(2176)] = 99255, + [SMALL_STATE(2177)] = 99269, + [SMALL_STATE(2178)] = 99283, + [SMALL_STATE(2179)] = 99297, + [SMALL_STATE(2180)] = 99311, + [SMALL_STATE(2181)] = 99323, + [SMALL_STATE(2182)] = 99337, + [SMALL_STATE(2183)] = 99351, + [SMALL_STATE(2184)] = 99365, + [SMALL_STATE(2185)] = 99379, + [SMALL_STATE(2186)] = 99393, + [SMALL_STATE(2187)] = 99407, + [SMALL_STATE(2188)] = 99421, + [SMALL_STATE(2189)] = 99435, + [SMALL_STATE(2190)] = 99449, + [SMALL_STATE(2191)] = 99463, + [SMALL_STATE(2192)] = 99477, + [SMALL_STATE(2193)] = 99491, + [SMALL_STATE(2194)] = 99505, + [SMALL_STATE(2195)] = 99519, + [SMALL_STATE(2196)] = 99529, + [SMALL_STATE(2197)] = 99543, + [SMALL_STATE(2198)] = 99557, + [SMALL_STATE(2199)] = 99571, + [SMALL_STATE(2200)] = 99585, + [SMALL_STATE(2201)] = 99599, + [SMALL_STATE(2202)] = 99613, + [SMALL_STATE(2203)] = 99627, + [SMALL_STATE(2204)] = 99641, + [SMALL_STATE(2205)] = 99655, + [SMALL_STATE(2206)] = 99669, + [SMALL_STATE(2207)] = 99683, + [SMALL_STATE(2208)] = 99697, + [SMALL_STATE(2209)] = 99711, + [SMALL_STATE(2210)] = 99721, + [SMALL_STATE(2211)] = 99732, + [SMALL_STATE(2212)] = 99741, + [SMALL_STATE(2213)] = 99752, + [SMALL_STATE(2214)] = 99761, + [SMALL_STATE(2215)] = 99770, + [SMALL_STATE(2216)] = 99779, + [SMALL_STATE(2217)] = 99788, + [SMALL_STATE(2218)] = 99797, + [SMALL_STATE(2219)] = 99806, + [SMALL_STATE(2220)] = 99817, + [SMALL_STATE(2221)] = 99826, + [SMALL_STATE(2222)] = 99835, + [SMALL_STATE(2223)] = 99844, + [SMALL_STATE(2224)] = 99853, + [SMALL_STATE(2225)] = 99862, + [SMALL_STATE(2226)] = 99873, + [SMALL_STATE(2227)] = 99882, + [SMALL_STATE(2228)] = 99893, + [SMALL_STATE(2229)] = 99904, + [SMALL_STATE(2230)] = 99915, + [SMALL_STATE(2231)] = 99926, + [SMALL_STATE(2232)] = 99937, + [SMALL_STATE(2233)] = 99948, + [SMALL_STATE(2234)] = 99959, + [SMALL_STATE(2235)] = 99968, + [SMALL_STATE(2236)] = 99977, + [SMALL_STATE(2237)] = 99986, + [SMALL_STATE(2238)] = 99997, + [SMALL_STATE(2239)] = 100006, + [SMALL_STATE(2240)] = 100015, + [SMALL_STATE(2241)] = 100024, + [SMALL_STATE(2242)] = 100035, + [SMALL_STATE(2243)] = 100044, + [SMALL_STATE(2244)] = 100055, + [SMALL_STATE(2245)] = 100064, + [SMALL_STATE(2246)] = 100073, + [SMALL_STATE(2247)] = 100082, + [SMALL_STATE(2248)] = 100091, + [SMALL_STATE(2249)] = 100100, + [SMALL_STATE(2250)] = 100111, + [SMALL_STATE(2251)] = 100120, + [SMALL_STATE(2252)] = 100129, + [SMALL_STATE(2253)] = 100138, + [SMALL_STATE(2254)] = 100147, + [SMALL_STATE(2255)] = 100158, + [SMALL_STATE(2256)] = 100167, + [SMALL_STATE(2257)] = 100178, + [SMALL_STATE(2258)] = 100189, + [SMALL_STATE(2259)] = 100200, + [SMALL_STATE(2260)] = 100209, + [SMALL_STATE(2261)] = 100218, + [SMALL_STATE(2262)] = 100227, + [SMALL_STATE(2263)] = 100236, + [SMALL_STATE(2264)] = 100245, + [SMALL_STATE(2265)] = 100254, + [SMALL_STATE(2266)] = 100263, + [SMALL_STATE(2267)] = 100272, + [SMALL_STATE(2268)] = 100281, + [SMALL_STATE(2269)] = 100290, + [SMALL_STATE(2270)] = 100299, + [SMALL_STATE(2271)] = 100310, + [SMALL_STATE(2272)] = 100319, + [SMALL_STATE(2273)] = 100328, + [SMALL_STATE(2274)] = 100337, + [SMALL_STATE(2275)] = 100348, + [SMALL_STATE(2276)] = 100359, + [SMALL_STATE(2277)] = 100368, + [SMALL_STATE(2278)] = 100379, + [SMALL_STATE(2279)] = 100390, + [SMALL_STATE(2280)] = 100401, + [SMALL_STATE(2281)] = 100410, + [SMALL_STATE(2282)] = 100419, + [SMALL_STATE(2283)] = 100428, + [SMALL_STATE(2284)] = 100437, + [SMALL_STATE(2285)] = 100446, + [SMALL_STATE(2286)] = 100457, + [SMALL_STATE(2287)] = 100466, + [SMALL_STATE(2288)] = 100475, + [SMALL_STATE(2289)] = 100484, + [SMALL_STATE(2290)] = 100493, + [SMALL_STATE(2291)] = 100502, + [SMALL_STATE(2292)] = 100511, + [SMALL_STATE(2293)] = 100520, + [SMALL_STATE(2294)] = 100529, + [SMALL_STATE(2295)] = 100538, + [SMALL_STATE(2296)] = 100547, + [SMALL_STATE(2297)] = 100556, + [SMALL_STATE(2298)] = 100565, + [SMALL_STATE(2299)] = 100574, + [SMALL_STATE(2300)] = 100583, + [SMALL_STATE(2301)] = 100594, + [SMALL_STATE(2302)] = 100605, + [SMALL_STATE(2303)] = 100614, + [SMALL_STATE(2304)] = 100623, + [SMALL_STATE(2305)] = 100632, + [SMALL_STATE(2306)] = 100643, + [SMALL_STATE(2307)] = 100652, + [SMALL_STATE(2308)] = 100661, + [SMALL_STATE(2309)] = 100672, + [SMALL_STATE(2310)] = 100683, + [SMALL_STATE(2311)] = 100694, + [SMALL_STATE(2312)] = 100703, + [SMALL_STATE(2313)] = 100712, + [SMALL_STATE(2314)] = 100723, + [SMALL_STATE(2315)] = 100734, + [SMALL_STATE(2316)] = 100743, + [SMALL_STATE(2317)] = 100754, + [SMALL_STATE(2318)] = 100765, + [SMALL_STATE(2319)] = 100774, + [SMALL_STATE(2320)] = 100783, + [SMALL_STATE(2321)] = 100794, + [SMALL_STATE(2322)] = 100805, + [SMALL_STATE(2323)] = 100814, + [SMALL_STATE(2324)] = 100822, + [SMALL_STATE(2325)] = 100830, + [SMALL_STATE(2326)] = 100838, + [SMALL_STATE(2327)] = 100846, + [SMALL_STATE(2328)] = 100854, + [SMALL_STATE(2329)] = 100862, + [SMALL_STATE(2330)] = 100870, + [SMALL_STATE(2331)] = 100878, + [SMALL_STATE(2332)] = 100886, + [SMALL_STATE(2333)] = 100894, + [SMALL_STATE(2334)] = 100902, + [SMALL_STATE(2335)] = 100910, + [SMALL_STATE(2336)] = 100918, + [SMALL_STATE(2337)] = 100926, + [SMALL_STATE(2338)] = 100934, + [SMALL_STATE(2339)] = 100942, + [SMALL_STATE(2340)] = 100950, + [SMALL_STATE(2341)] = 100958, + [SMALL_STATE(2342)] = 100966, + [SMALL_STATE(2343)] = 100974, + [SMALL_STATE(2344)] = 100982, + [SMALL_STATE(2345)] = 100990, + [SMALL_STATE(2346)] = 100998, + [SMALL_STATE(2347)] = 101006, + [SMALL_STATE(2348)] = 101014, + [SMALL_STATE(2349)] = 101022, + [SMALL_STATE(2350)] = 101030, + [SMALL_STATE(2351)] = 101038, + [SMALL_STATE(2352)] = 101046, + [SMALL_STATE(2353)] = 101054, + [SMALL_STATE(2354)] = 101062, + [SMALL_STATE(2355)] = 101070, + [SMALL_STATE(2356)] = 101078, + [SMALL_STATE(2357)] = 101086, + [SMALL_STATE(2358)] = 101094, + [SMALL_STATE(2359)] = 101102, + [SMALL_STATE(2360)] = 101110, + [SMALL_STATE(2361)] = 101118, + [SMALL_STATE(2362)] = 101126, + [SMALL_STATE(2363)] = 101134, + [SMALL_STATE(2364)] = 101142, + [SMALL_STATE(2365)] = 101150, + [SMALL_STATE(2366)] = 101158, + [SMALL_STATE(2367)] = 101166, + [SMALL_STATE(2368)] = 101174, + [SMALL_STATE(2369)] = 101182, + [SMALL_STATE(2370)] = 101190, + [SMALL_STATE(2371)] = 101198, + [SMALL_STATE(2372)] = 101206, + [SMALL_STATE(2373)] = 101214, + [SMALL_STATE(2374)] = 101222, + [SMALL_STATE(2375)] = 101230, + [SMALL_STATE(2376)] = 101238, + [SMALL_STATE(2377)] = 101246, + [SMALL_STATE(2378)] = 101254, + [SMALL_STATE(2379)] = 101262, + [SMALL_STATE(2380)] = 101270, + [SMALL_STATE(2381)] = 101278, + [SMALL_STATE(2382)] = 101286, + [SMALL_STATE(2383)] = 101294, + [SMALL_STATE(2384)] = 101302, + [SMALL_STATE(2385)] = 101310, + [SMALL_STATE(2386)] = 101318, + [SMALL_STATE(2387)] = 101326, + [SMALL_STATE(2388)] = 101334, + [SMALL_STATE(2389)] = 101342, + [SMALL_STATE(2390)] = 101350, + [SMALL_STATE(2391)] = 101358, + [SMALL_STATE(2392)] = 101366, + [SMALL_STATE(2393)] = 101374, + [SMALL_STATE(2394)] = 101382, + [SMALL_STATE(2395)] = 101390, + [SMALL_STATE(2396)] = 101398, + [SMALL_STATE(2397)] = 101406, + [SMALL_STATE(2398)] = 101414, + [SMALL_STATE(2399)] = 101422, + [SMALL_STATE(2400)] = 101430, + [SMALL_STATE(2401)] = 101438, + [SMALL_STATE(2402)] = 101446, + [SMALL_STATE(2403)] = 101454, + [SMALL_STATE(2404)] = 101462, + [SMALL_STATE(2405)] = 101470, + [SMALL_STATE(2406)] = 101478, + [SMALL_STATE(2407)] = 101486, + [SMALL_STATE(2408)] = 101494, + [SMALL_STATE(2409)] = 101502, + [SMALL_STATE(2410)] = 101510, + [SMALL_STATE(2411)] = 101518, + [SMALL_STATE(2412)] = 101526, + [SMALL_STATE(2413)] = 101534, + [SMALL_STATE(2414)] = 101542, + [SMALL_STATE(2415)] = 101550, + [SMALL_STATE(2416)] = 101558, + [SMALL_STATE(2417)] = 101566, + [SMALL_STATE(2418)] = 101574, + [SMALL_STATE(2419)] = 101582, + [SMALL_STATE(2420)] = 101590, + [SMALL_STATE(2421)] = 101598, + [SMALL_STATE(2422)] = 101606, + [SMALL_STATE(2423)] = 101614, + [SMALL_STATE(2424)] = 101622, + [SMALL_STATE(2425)] = 101630, + [SMALL_STATE(2426)] = 101638, + [SMALL_STATE(2427)] = 101646, + [SMALL_STATE(2428)] = 101654, + [SMALL_STATE(2429)] = 101662, + [SMALL_STATE(2430)] = 101670, + [SMALL_STATE(2431)] = 101678, + [SMALL_STATE(2432)] = 101686, + [SMALL_STATE(2433)] = 101694, + [SMALL_STATE(2434)] = 101702, + [SMALL_STATE(2435)] = 101710, + [SMALL_STATE(2436)] = 101718, + [SMALL_STATE(2437)] = 101726, + [SMALL_STATE(2438)] = 101734, + [SMALL_STATE(2439)] = 101742, + [SMALL_STATE(2440)] = 101750, + [SMALL_STATE(2441)] = 101758, + [SMALL_STATE(2442)] = 101766, + [SMALL_STATE(2443)] = 101774, + [SMALL_STATE(2444)] = 101782, + [SMALL_STATE(2445)] = 101790, + [SMALL_STATE(2446)] = 101798, + [SMALL_STATE(2447)] = 101806, + [SMALL_STATE(2448)] = 101814, + [SMALL_STATE(2449)] = 101822, + [SMALL_STATE(2450)] = 101830, + [SMALL_STATE(2451)] = 101838, + [SMALL_STATE(2452)] = 101846, + [SMALL_STATE(2453)] = 101854, + [SMALL_STATE(2454)] = 101862, + [SMALL_STATE(2455)] = 101870, + [SMALL_STATE(2456)] = 101878, + [SMALL_STATE(2457)] = 101886, + [SMALL_STATE(2458)] = 101894, + [SMALL_STATE(2459)] = 101902, + [SMALL_STATE(2460)] = 101910, + [SMALL_STATE(2461)] = 101918, + [SMALL_STATE(2462)] = 101926, + [SMALL_STATE(2463)] = 101934, + [SMALL_STATE(2464)] = 101942, + [SMALL_STATE(2465)] = 101950, + [SMALL_STATE(2466)] = 101958, + [SMALL_STATE(2467)] = 101966, + [SMALL_STATE(2468)] = 101974, + [SMALL_STATE(2469)] = 101982, + [SMALL_STATE(2470)] = 101990, + [SMALL_STATE(2471)] = 101998, + [SMALL_STATE(2472)] = 102006, + [SMALL_STATE(2473)] = 102014, + [SMALL_STATE(2474)] = 102022, + [SMALL_STATE(2475)] = 102030, + [SMALL_STATE(2476)] = 102038, + [SMALL_STATE(2477)] = 102046, + [SMALL_STATE(2478)] = 102054, + [SMALL_STATE(2479)] = 102062, + [SMALL_STATE(2480)] = 102070, + [SMALL_STATE(2481)] = 102078, + [SMALL_STATE(2482)] = 102086, + [SMALL_STATE(2483)] = 102094, + [SMALL_STATE(2484)] = 102102, + [SMALL_STATE(2485)] = 102110, + [SMALL_STATE(2486)] = 102118, + [SMALL_STATE(2487)] = 102126, + [SMALL_STATE(2488)] = 102134, + [SMALL_STATE(2489)] = 102142, + [SMALL_STATE(2490)] = 102150, + [SMALL_STATE(2491)] = 102158, + [SMALL_STATE(2492)] = 102166, + [SMALL_STATE(2493)] = 102174, + [SMALL_STATE(2494)] = 102182, + [SMALL_STATE(2495)] = 102190, + [SMALL_STATE(2496)] = 102198, + [SMALL_STATE(2497)] = 102206, + [SMALL_STATE(2498)] = 102214, + [SMALL_STATE(2499)] = 102222, + [SMALL_STATE(2500)] = 102230, + [SMALL_STATE(2501)] = 102238, + [SMALL_STATE(2502)] = 102246, + [SMALL_STATE(2503)] = 102254, + [SMALL_STATE(2504)] = 102262, + [SMALL_STATE(2505)] = 102270, + [SMALL_STATE(2506)] = 102278, + [SMALL_STATE(2507)] = 102286, + [SMALL_STATE(2508)] = 102294, + [SMALL_STATE(2509)] = 102302, + [SMALL_STATE(2510)] = 102310, + [SMALL_STATE(2511)] = 102318, + [SMALL_STATE(2512)] = 102326, + [SMALL_STATE(2513)] = 102334, + [SMALL_STATE(2514)] = 102342, + [SMALL_STATE(2515)] = 102350, + [SMALL_STATE(2516)] = 102358, + [SMALL_STATE(2517)] = 102366, + [SMALL_STATE(2518)] = 102374, + [SMALL_STATE(2519)] = 102382, + [SMALL_STATE(2520)] = 102390, + [SMALL_STATE(2521)] = 102398, + [SMALL_STATE(2522)] = 102406, + [SMALL_STATE(2523)] = 102414, + [SMALL_STATE(2524)] = 102422, + [SMALL_STATE(2525)] = 102430, + [SMALL_STATE(2526)] = 102438, + [SMALL_STATE(2527)] = 102446, + [SMALL_STATE(2528)] = 102454, + [SMALL_STATE(2529)] = 102462, + [SMALL_STATE(2530)] = 102470, + [SMALL_STATE(2531)] = 102478, + [SMALL_STATE(2532)] = 102486, + [SMALL_STATE(2533)] = 102494, + [SMALL_STATE(2534)] = 102502, + [SMALL_STATE(2535)] = 102510, + [SMALL_STATE(2536)] = 102518, + [SMALL_STATE(2537)] = 102526, + [SMALL_STATE(2538)] = 102534, + [SMALL_STATE(2539)] = 102542, + [SMALL_STATE(2540)] = 102550, + [SMALL_STATE(2541)] = 102558, + [SMALL_STATE(2542)] = 102566, + [SMALL_STATE(2543)] = 102574, + [SMALL_STATE(2544)] = 102582, + [SMALL_STATE(2545)] = 102590, + [SMALL_STATE(2546)] = 102598, + [SMALL_STATE(2547)] = 102606, + [SMALL_STATE(2548)] = 102614, + [SMALL_STATE(2549)] = 102622, + [SMALL_STATE(2550)] = 102630, + [SMALL_STATE(2551)] = 102638, + [SMALL_STATE(2552)] = 102646, + [SMALL_STATE(2553)] = 102654, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), + [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [7] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 0), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(429), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1986), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1679), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(78), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(483), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(338), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(428), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(327), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2217), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2222), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2223), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(510), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(80), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(314), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(828), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(513), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2539), + [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(384), + [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2538), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2537), + [53] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2536), + [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(323), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2535), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(575), + [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), + [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [65] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(591), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1488), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(329), + [73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), + [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1110), + [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(160), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1545), + [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(529), + [83] = {.entry = {.count = 1, .reusable = false}}, SHIFT(79), + [85] = {.entry = {.count = 1, .reusable = false}}, SHIFT(331), + [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(774), + [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(531), + [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2524), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(415), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2543), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2526), + [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(601), + [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(610), + [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), + [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), + [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2002), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(606), + [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), + [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), + [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1), + [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), + [123] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(429), + [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1986), + [129] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1679), + [132] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(195), + [135] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(888), + [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(78), + [141] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(483), + [144] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(338), + [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(428), + [150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(327), + [153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2217), + [156] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2222), + [159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2223), + [162] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(510), + [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(80), + [168] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(314), + [171] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(828), + [174] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(513), + [177] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2539), + [180] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(384), + [183] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2538), + [186] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2537), + [189] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2536), + [192] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(323), + [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2535), + [198] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(575), + [201] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(960), + [204] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(193), + [207] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(208), + [210] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(591), + [213] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1488), + [216] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(329), + [219] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1110), + [222] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1110), + [225] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(160), + [228] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1545), + [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(623), + [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2180), + [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(602), + [237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), + [239] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(529), + [242] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(79), + [245] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(331), + [248] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(774), + [251] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(531), + [254] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2524), + [257] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(415), + [260] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2543), + [263] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(2526), + [266] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1058), + [268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), + [270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), + [272] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(241), + [275] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), REDUCE(sym_primary_expression, 1, .production_id = 1), + [278] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1056), + [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(552), + [282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__named_expression_lhs, 1, .production_id = 1), + [284] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, .production_id = 1), + [286] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(960), + [289] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(240), + [292] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(591), + [295] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), + [297] = {.entry = {.count = 1, .reusable = false}}, SHIFT(163), + [299] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1163), + [301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), + [303] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1161), + [305] = {.entry = {.count = 1, .reusable = false}}, SHIFT(921), + [307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), + [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [311] = {.entry = {.count = 1, .reusable = false}}, SHIFT(569), + [313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), + [315] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1485), + [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234), + [319] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1234), + [321] = {.entry = {.count = 1, .reusable = false}}, SHIFT(168), + [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1550), + [325] = {.entry = {.count = 1, .reusable = false}}, SHIFT(444), + [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(753), + [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(541), + [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(675), + [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), + [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(728), + [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), + [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(745), + [361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(770), + [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), + [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(785), + [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(739), + [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(540), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(817), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(725), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(685), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(733), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(614), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(768), + [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1613), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(766), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(842), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(709), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(749), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(755), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(673), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(823), + [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(844), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(757), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), + [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), + [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), + [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(632), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), + [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(705), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(830), + [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(652), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(777), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(763), + [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(730), + [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), + [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(699), + [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), + [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(761), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(758), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(801), + [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(630), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(629), + [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1622), + [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(822), + [573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(750), + [577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), + [581] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [583] = {.entry = {.count = 1, .reusable = true}}, SHIFT(627), + [585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), + [587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), + [589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(595), + [591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(619), + [593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), + [595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(616), + [597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(598), + [599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), + [601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(607), + [603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), + [605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), + [607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2082), + [609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2031), + [611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [613] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1197), + [615] = {.entry = {.count = 1, .reusable = false}}, SHIFT(960), + [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [619] = {.entry = {.count = 1, .reusable = false}}, SHIFT(166), + [621] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), REDUCE(sym_list_splat_pattern, 2, .production_id = 7), + [624] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 7), + [626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 7), + [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1160), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), + [632] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1153), + [634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1025), + [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), + [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1160), + [642] = {.entry = {.count = 1, .reusable = false}}, SHIFT(165), + [644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1552), + [646] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1150), + [648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [650] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1179), + [652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1026), + [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), + [656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [660] = {.entry = {.count = 1, .reusable = false}}, SHIFT(172), + [662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1551), + [664] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1255), + [666] = {.entry = {.count = 1, .reusable = false}}, SHIFT(176), + [668] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1273), + [670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [672] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1265), + [674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(272), + [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [680] = {.entry = {.count = 1, .reusable = false}}, SHIFT(477), + [682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1273), + [684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), + [686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1544), + [688] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1349), + [690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [692] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1384), + [694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(885), + [696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1349), + [702] = {.entry = {.count = 1, .reusable = false}}, SHIFT(183), + [704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1535), + [706] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1327), + [708] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), + [710] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1321), + [712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), + [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1327), + [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1548), + [724] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1302), + [726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [728] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1297), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), + [732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), + [734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), + [736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), + [738] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), + [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1538), + [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), + [744] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1146), + [746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1459), + [750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(574), + [752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1145), + [754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [756] = {.entry = {.count = 1, .reusable = false}}, SHIFT(480), + [758] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1486), + [760] = {.entry = {.count = 1, .reusable = false}}, SHIFT(322), + [762] = {.entry = {.count = 1, .reusable = false}}, SHIFT(178), + [764] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1171), + [766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(478), + [770] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1159), + [772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), + [774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1264), + [776] = {.entry = {.count = 1, .reusable = false}}, SHIFT(485), + [778] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1487), + [780] = {.entry = {.count = 1, .reusable = false}}, SHIFT(318), + [782] = {.entry = {.count = 1, .reusable = false}}, SHIFT(177), + [784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1174), + [786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), + [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1462), + [790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(553), + [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), + [794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1296), + [796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373), + [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1298), + [802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), + [804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1424), + [806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1469), + [808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1271), + [810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450), + [812] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1063), + [814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2509), + [818] = {.entry = {.count = 1, .reusable = false}}, SHIFT(518), + [820] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1062), + [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(538), + [824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1182), + [826] = {.entry = {.count = 1, .reusable = false}}, SHIFT(534), + [828] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1475), + [830] = {.entry = {.count = 1, .reusable = false}}, SHIFT(276), + [832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(167), + [834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2443), + [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1295), + [838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2342), + [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1087), + [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2384), + [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), + [846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2406), + [848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1318), + [850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2355), + [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1389), + [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2377), + [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1147), + [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2336), + [860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1258), + [862] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1340), + [864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [866] = {.entry = {.count = 1, .reusable = false}}, SHIFT(888), + [868] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1374), + [870] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2), + [872] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2), + [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [876] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185), + [878] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3), + [880] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3), + [882] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1077), + [884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), + [886] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1061), + [888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [890] = {.entry = {.count = 1, .reusable = false}}, SHIFT(589), + [892] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1474), + [894] = {.entry = {.count = 1, .reusable = false}}, SHIFT(164), + [896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1067), + [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1274), + [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2432), + [904] = {.entry = {.count = 1, .reusable = false}}, SHIFT(474), + [906] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1068), + [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(473), + [910] = {.entry = {.count = 1, .reusable = false}}, SHIFT(169), + [912] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1119), + [914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), + [916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(474), + [918] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1118), + [920] = {.entry = {.count = 1, .reusable = false}}, SHIFT(170), + [922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1125), + [924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2326), + [926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1256), + [928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2394), + [930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1221), + [932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2448), + [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1311), + [936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2373), + [938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1107), + [940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2451), + [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1361), + [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2421), + [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1198), + [948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2478), + [950] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1223), + [952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), + [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1222), + [956] = {.entry = {.count = 1, .reusable = false}}, SHIFT(511), + [958] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1476), + [960] = {.entry = {.count = 1, .reusable = false}}, SHIFT(171), + [962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1309), + [964] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1155), + [966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(568), + [970] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1157), + [972] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1207), + [974] = {.entry = {.count = 1, .reusable = false}}, SHIFT(175), + [976] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1315), + [978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244), + [980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1325), + [982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1324), + [984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1220), + [986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1165), + [988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1206), + [990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158), + [992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162), + [994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1199), + [996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), + [998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), + [1000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1236), + [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1331), + [1004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1336), + [1006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), + [1008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292), + [1010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1293), + [1012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1372), + [1014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1164), + [1016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1243), + [1018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299), + [1020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1301), + [1022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1094), + [1024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1096), + [1026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), + [1028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1101), + [1030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1106), + [1032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1308), + [1034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1104), + [1036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102), + [1038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278), + [1040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1303), + [1042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1235), + [1044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1310), + [1046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1353), + [1048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1205), + [1050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1376), + [1052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1219), + [1054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1173), + [1056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1212), + [1058] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1051), + [1060] = {.entry = {.count = 1, .reusable = false}}, SHIFT(512), + [1062] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1), + [1064] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1050), + [1066] = {.entry = {.count = 1, .reusable = false}}, SHIFT(162), + [1068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1387), + [1070] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1388), + [1072] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1176), + [1074] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1277), + [1076] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [1078] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [1080] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3), + [1082] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1225), + [1084] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2), + [1086] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1226), + [1088] = {.entry = {.count = 1, .reusable = false}}, SHIFT(173), + [1090] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1294), + [1092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [1094] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1291), + [1096] = {.entry = {.count = 1, .reusable = false}}, SHIFT(537), + [1098] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1489), + [1100] = {.entry = {.count = 1, .reusable = false}}, SHIFT(174), + [1102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_or_expressions, 3), + [1104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(536), + [1106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 100), + [1108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 100), + [1110] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1478), + [1112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3), + [1114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2), + [1116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1472), + [1118] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 101), + [1120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 101), + [1122] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1479), + [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, .production_id = 116), + [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, .production_id = 116), + [1128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 84), + [1130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, .production_id = 84), + [1132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_or_expressions, 2), + [1134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1307), + [1136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1204), + [1138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1188), + [1140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(784), + [1142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [1144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2391), + [1146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1317), + [1148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, .production_id = 7), + [1150] = {.entry = {.count = 1, .reusable = false}}, SHIFT(573), + [1152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1115), + [1154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [1156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1262), + [1158] = {.entry = {.count = 1, .reusable = false}}, SHIFT(533), + [1160] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2131), + [1162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1547), + [1164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), + [1166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1367), + [1168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1108), + [1170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1), + [1172] = {.entry = {.count = 1, .reusable = false}}, SHIFT(547), + [1174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1228), + [1176] = {.entry = {.count = 1, .reusable = false}}, SHIFT(562), + [1178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), + [1180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), + [1182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [1184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2544), + [1186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1214), + [1188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1350), + [1190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1245), + [1192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1169), + [1194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [1196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1242), + [1198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(450), + [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1), + [1202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1385), + [1204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), + [1206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [1208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), + [1210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(609), + [1212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1089), + [1214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1121), + [1216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(603), + [1218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1358), + [1220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1231), + [1222] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105), + [1224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2), + [1226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), + [1228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(604), + [1230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1103), + [1232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1383), + [1234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3), + [1236] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2), + [1238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), + [1240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1233), + [1242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), + [1244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1335), + [1246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1), + [1248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), + [1250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1329), + [1252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878), + [1254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), + [1256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1328), + [1258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 69), + [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 69), + [1262] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2466), + [1264] = {.entry = {.count = 1, .reusable = false}}, SHIFT(454), + [1266] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2463), + [1268] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2503), + [1270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(514), + [1272] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2522), + [1274] = {.entry = {.count = 1, .reusable = false}}, SHIFT(451), + [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, .production_id = 48), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, .production_id = 48), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4), + [1282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 3), + [1286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2476), + [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .dynamic_precedence = -1, .production_id = 19), + [1290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .production_id = 18), + [1292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3), + [1294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3), + [1296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(520), + [1298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3), + [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 2), + [1302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .dynamic_precedence = -1, .production_id = 8), + [1304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2510), + [1306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2), + [1308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 5, .production_id = 77), + [1310] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 5, .production_id = 77), + [1312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1), + [1314] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1), REDUCE(sym_list_splat_pattern, 2), + [1317] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1), + [1319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__named_expression_lhs, 1), + [1321] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2), + [1323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2), + [1325] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1), REDUCE(sym_primary_expression, 1), + [1328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1), + [1330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1), + [1332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), + [1334] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 5, .production_id = 54), + [1336] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 5, .production_id = 54), + [1338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, .production_id = 54), + [1340] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, .production_id = 54), + [1342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 28), + [1344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, .production_id = 28), + [1346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(620), + [1348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(671), + [1350] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 6, .production_id = 77), + [1352] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 6, .production_id = 77), + [1354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [1356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [1358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), + [1360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 61), + [1362] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 61), + [1364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(463), + [1366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 62), + [1368] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 62), + [1370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 87), + [1372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 87), + [1374] = {.entry = {.count = 1, .reusable = false}}, SHIFT(517), + [1376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1360), + [1378] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1363), + [1380] = {.entry = {.count = 1, .reusable = false}}, SHIFT(180), + [1382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2), + [1384] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), + [1386] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(451), + [1389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2), + [1391] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), + [1393] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(514), + [1396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2), + [1398] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2), REDUCE(sym_list, 2), + [1401] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2), + [1403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2), + [1405] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2), + [1407] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, .production_id = 42), + [1409] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, .production_id = 42), + [1411] = {.entry = {.count = 1, .reusable = false}}, SHIFT(425), + [1413] = {.entry = {.count = 1, .reusable = false}}, SHIFT(435), + [1415] = {.entry = {.count = 1, .reusable = false}}, SHIFT(161), + [1417] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [1419] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), REDUCE(sym_tuple, 2), + [1422] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), + [1424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), + [1426] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2), + [1428] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(520), + [1431] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(454), + [1434] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1354), + [1436] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1355), + [1438] = {.entry = {.count = 1, .reusable = false}}, SHIFT(186), + [1440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3), + [1442] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3), + [1444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 64), + [1446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 64), + [1448] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 64), SHIFT_REPEAT(517), + [1451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4), + [1453] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4), + [1455] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2), + [1457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2), + [1459] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1), + [1461] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1), + [1463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [1465] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), + [1467] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 64), SHIFT_REPEAT(463), + [1470] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, .production_id = 134), + [1472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, .production_id = 134), + [1474] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7), + [1476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7), + [1478] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 6, .production_id = 90), + [1480] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 6, .production_id = 90), + [1482] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1409), + [1484] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_match_statement_repeat2, 2, .production_id = 64), + [1486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat2, 2, .production_id = 64), + [1488] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_match_statement_repeat2, 2, .production_id = 64), SHIFT_REPEAT(1409), + [1491] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 5, .production_id = 45), + [1493] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 5, .production_id = 45), + [1495] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 5, .production_id = 65), + [1497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 5, .production_id = 65), + [1499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5), + [1501] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5), + [1503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5), + [1505] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5), + [1507] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 4, .production_id = 114), + [1509] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 4, .production_id = 114), + [1511] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, .production_id = 114), + [1513] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, .production_id = 114), + [1515] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4), + [1517] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4), + [1519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 3, .production_id = 21), + [1521] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 3, .production_id = 21), + [1523] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1413), + [1525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7), + [1527] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7), + [1529] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 5, .production_id = 63), + [1531] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 5, .production_id = 63), + [1533] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 45), + [1535] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 45), + [1537] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 44), + [1539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 44), + [1541] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, .production_id = 134), + [1543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, .production_id = 134), + [1545] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 21), + [1547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 21), + [1549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, .production_id = 95), + [1551] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, .production_id = 95), + [1553] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1429), + [1555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [1557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), + [1559] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1427), + [1561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [1563] = {.entry = {.count = 1, .reusable = false}}, SHIFT(288), + [1565] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_match_statement_repeat2, 2, .production_id = 64), SHIFT_REPEAT(1413), + [1568] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 43), + [1570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 43), + [1572] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, .production_id = 47), + [1574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, .production_id = 47), + [1576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 68), + [1578] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 68), + [1580] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 110), + [1582] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 110), + [1584] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, .production_id = 93), + [1586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, .production_id = 93), + [1588] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 48), + [1590] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 48), + [1592] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 113), + [1594] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 113), + [1596] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 69), + [1598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 69), + [1600] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, .production_id = 42), + [1602] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, .production_id = 42), + [1604] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 122), + [1606] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 122), + [1608] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, .production_id = 62), + [1610] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, .production_id = 62), + [1612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 129), + [1614] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 129), + [1616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 131), + [1618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 131), + [1620] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1458), + [1622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), + [1624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2290), + [1626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), + [1628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1461), + [1630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [1632] = {.entry = {.count = 1, .reusable = false}}, SHIFT(344), + [1634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 4, .production_id = 105), + [1636] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 4, .production_id = 105), + [1638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 8, .production_id = 139), + [1640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 8, .production_id = 139), + [1642] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat2, 1, .production_id = 43), + [1644] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_match_statement_repeat2, 1, .production_id = 43), + [1646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 7, .production_id = 138), + [1648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 7, .production_id = 138), + [1650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 7, .production_id = 137), + [1652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 7, .production_id = 137), + [1654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 7, .production_id = 136), + [1656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 7, .production_id = 136), + [1658] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 7, .production_id = 135), + [1660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 7, .production_id = 135), + [1662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, .production_id = 48), + [1664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, .production_id = 48), + [1666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2297), + [1668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, .production_id = 69), + [1670] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, .production_id = 69), + [1672] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 130), + [1674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 130), + [1676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 5, .production_id = 117), + [1678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 5, .production_id = 117), + [1680] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 128), + [1682] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 128), + [1684] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 5, .production_id = 118), + [1686] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 5, .production_id = 118), + [1688] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 5, .production_id = 119), + [1690] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 5, .production_id = 119), + [1692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 5, .production_id = 120), + [1694] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 5, .production_id = 120), + [1696] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 127), + [1698] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 127), + [1700] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_clause, 6, .production_id = 126), + [1702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_clause, 6, .production_id = 126), + [1704] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 73), + [1706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 73), + [1708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 124), + [1710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 124), + [1712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, .production_id = 49), + [1714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, .production_id = 49), + [1716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, .production_id = 94), + [1718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, .production_id = 94), + [1720] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 60), + [1722] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 60), + [1724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, .production_id = 95), + [1726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, .production_id = 95), + [1728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 48), + [1730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 48), + [1732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 96), + [1734] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 96), + [1736] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 97), + [1738] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 97), + [1740] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 66), + [1742] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 66), + [1744] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 67), + [1746] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 67), + [1748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 125), + [1750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 125), + [1752] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, .production_id = 132), + [1754] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, .production_id = 132), + [1756] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 133), + [1758] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 133), + [1760] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, .production_id = 69), + [1762] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, .production_id = 69), + [1764] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4), + [1766] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4), + [1768] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 121), + [1770] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 121), + [1772] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 123), + [1774] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 123), + [1776] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, .production_id = 91), + [1778] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, .production_id = 91), + [1780] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 112), + [1782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 112), + [1784] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 111), + [1786] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 111), + [1788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 86), + [1790] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 86), + [1792] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, .production_id = 102), + [1794] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, .production_id = 102), + [1796] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 85), + [1798] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 85), + [1800] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, .production_id = 14), + [1802] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, .production_id = 14), + [1804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, .production_id = 50), + [1806] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, .production_id = 50), + [1808] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2), + [1810] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 70), + [1812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 70), + [1814] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, .production_id = 71), + [1816] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, .production_id = 71), + [1818] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 72), + [1820] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 72), + [1822] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1460), + [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [1826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), + [1828] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1463), + [1830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [1832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(354), + [1834] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 115), + [1836] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 115), + [1838] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 92), + [1840] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 92), + [1842] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3), + [1844] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1322), + [1846] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1), + [1848] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1323), + [1850] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), + [1852] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1443), + [1854] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1444), + [1856] = {.entry = {.count = 1, .reusable = false}}, SHIFT(316), + [1858] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), + [1860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2408), + [1862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), + [1864] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1001), + [1866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1002), + [1868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1003), + [1870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1004), + [1872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1001), + [1874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1019), + [1876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1021), + [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416), + [1880] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), + [1882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2416), + [1884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1022), + [1886] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1023), + [1888] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1003), + [1890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(867), + [1892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2360), + [1894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [1896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1005), + [1898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1007), + [1900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1008), + [1902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1009), + [1904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1005), + [1906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1011), + [1908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1016), + [1910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), + [1912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2349), + [1914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1017), + [1916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1018), + [1918] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1008), + [1920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868), + [1922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), + [1924] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), + [1926] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1545), + [1929] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2), + [1931] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2), + [1933] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1551), + [1936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2501), + [1938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [1940] = {.entry = {.count = 1, .reusable = false}}, SHIFT(942), + [1942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), + [1944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), + [1946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(928), + [1948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), + [1950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), + [1952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), + [1954] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), + [1956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2499), + [1958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [1960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [1962] = {.entry = {.count = 1, .reusable = false}}, SHIFT(929), + [1964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(871), + [1966] = {.entry = {.count = 1, .reusable = false}}, SHIFT(974), + [1968] = {.entry = {.count = 1, .reusable = false}}, SHIFT(969), + [1970] = {.entry = {.count = 1, .reusable = false}}, SHIFT(967), + [1972] = {.entry = {.count = 1, .reusable = false}}, SHIFT(891), + [1974] = {.entry = {.count = 1, .reusable = false}}, SHIFT(987), + [1976] = {.entry = {.count = 1, .reusable = false}}, SHIFT(939), + [1978] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1552), + [1981] = {.entry = {.count = 1, .reusable = false}}, SHIFT(918), + [1983] = {.entry = {.count = 1, .reusable = false}}, SHIFT(998), + [1985] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 55), + [1987] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 55), + [1989] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1440), + [1991] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1438), + [1993] = {.entry = {.count = 1, .reusable = false}}, SHIFT(317), + [1995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, .production_id = 26), + [1997] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, .production_id = 26), + [1999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, .production_id = 11), + [2001] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, .production_id = 11), + [2003] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 29), + [2005] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 29), + [2007] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1465), + [2009] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1467), + [2011] = {.entry = {.count = 1, .reusable = false}}, SHIFT(369), + [2013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2459), + [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [2017] = {.entry = {.count = 1, .reusable = false}}, SHIFT(999), + [2019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1000), + [2021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), + [2023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1006), + [2025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(999), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1015), + [2029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1014), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2462), + [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1013), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1012), + [2039] = {.entry = {.count = 1, .reusable = false}}, SHIFT(879), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(872), + [2043] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 56), + [2045] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 56), + [2047] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1428), + [2049] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1426), + [2051] = {.entry = {.count = 1, .reusable = false}}, SHIFT(286), + [2053] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1544), + [2056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2), + [2058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2), + [2060] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2420), + [2062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [2064] = {.entry = {.count = 1, .reusable = false}}, SHIFT(917), + [2066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), + [2068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), + [2070] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), + [2072] = {.entry = {.count = 1, .reusable = true}}, SHIFT(917), + [2074] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), + [2076] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), + [2078] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [2080] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2417), + [2082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [2084] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [2086] = {.entry = {.count = 1, .reusable = false}}, SHIFT(914), + [2088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [2090] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1550), + [2093] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1451), + [2095] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1471), + [2097] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), + [2099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2323), + [2101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [2103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(900), + [2105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [2107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), + [2109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(911), + [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [2113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(915), + [2115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [2117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), + [2119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2387), + [2121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), + [2123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(922), + [2125] = {.entry = {.count = 1, .reusable = false}}, SHIFT(909), + [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(873), + [2129] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1538), + [2132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, .production_id = 15), + [2134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, .production_id = 15), + [2136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2362), + [2138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [2140] = {.entry = {.count = 1, .reusable = false}}, SHIFT(880), + [2142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [2144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [2146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(895), + [2148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), + [2150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), + [2152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), + [2154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), + [2156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2364), + [2158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [2160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), + [2162] = {.entry = {.count = 1, .reusable = false}}, SHIFT(882), + [2164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(877), + [2166] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1535), + [2169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2411), + [2171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [2173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(973), + [2175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(972), + [2177] = {.entry = {.count = 1, .reusable = true}}, SHIFT(971), + [2179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), + [2181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(973), + [2183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(968), + [2185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(966), + [2187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), + [2189] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2413), + [2191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), + [2193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), + [2195] = {.entry = {.count = 1, .reusable = false}}, SHIFT(971), + [2197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), + [2199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, .production_id = 2), + [2201] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, .production_id = 2), + [2203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(476), + [2205] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(1548), + [2208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2), + [2210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2), + [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, .production_id = 12), + [2214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, .production_id = 12), + [2216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3), + [2218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3), + [2220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3), + [2222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3), + [2224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, .production_id = 38), + [2226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, .production_id = 38), + [2228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3), + [2230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3), + [2232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5), + [2234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5), + [2236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), + [2238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), + [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 38), + [2242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 38), + [2244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4), + [2246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4), + [2248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), + [2250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), + [2252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5), + [2254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5), + [2256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, .production_id = 38), + [2258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, .production_id = 38), + [2260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), + [2262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), + [2264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 39), + [2266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 39), + [2268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, .production_id = 39), + [2270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, .production_id = 39), + [2272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4), + [2274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4), + [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, .production_id = 39), + [2278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, .production_id = 39), + [2280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, .production_id = 39), + [2282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, .production_id = 39), + [2284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3), + [2286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3), + [2288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1554), + [2290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1402), + [2292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2304), + [2294] = {.entry = {.count = 1, .reusable = false}}, SHIFT(576), + [2296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), + [2298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2305), + [2300] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1901), + [2302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1399), + [2304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1448), + [2306] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1704), + [2308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1704), + [2310] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1895), + [2312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [2314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [2316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [2318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [2320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [2322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_open_sequence_pattern, 2, .production_id = 89), + [2324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_open_sequence_pattern, 2, .production_id = 89), + [2326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_maybe_sequence_pattern, 2), + [2328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_maybe_sequence_pattern, 2), + [2330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_maybe_sequence_pattern, 3), + [2332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_maybe_sequence_pattern, 3), + [2334] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1707), + [2336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), + [2338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1976), + [2340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2258), + [2342] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1939), + [2344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), + [2346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1446), + [2348] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1776), + [2350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1776), + [2352] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1952), + [2354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1812), + [2356] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1690), + [2358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1394), + [2360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2268), + [2362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2301), + [2364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1953), + [2366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1401), + [2368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1949), + [2370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [2372] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1797), + [2374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1797), + [2376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1962), + [2378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2299), + [2380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1818), + [2382] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1608), + [2384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1946), + [2386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1881), + [2388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1830), + [2390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1981), + [2392] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1592), + [2394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1395), + [2396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2219), + [2398] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1906), + [2400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), + [2402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1437), + [2404] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1716), + [2406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1716), + [2408] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1898), + [2410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), + [2412] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), + [2414] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(929), + [2417] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2499), + [2420] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(929), + [2423] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(871), + [2426] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(1008), + [2429] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2349), + [2432] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(1008), + [2435] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(868), + [2438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, .production_id = 13), + [2440] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, .production_id = 13), + [2442] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(1003), + [2445] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2416), + [2448] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(1003), + [2451] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(867), + [2454] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(879), + [2457] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2462), + [2460] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(879), + [2463] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(872), + [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2520), + [2468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1814), + [2470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1979), + [2472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2), + [2474] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(909), + [2477] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2387), + [2480] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(909), + [2483] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(873), + [2486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1954), + [2488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1894), + [2490] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(914), + [2493] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2417), + [2496] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(914), + [2499] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(869), + [2502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [2504] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(854), + [2507] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), + [2509] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(971), + [2512] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2413), + [2515] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(971), + [2518] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(875), + [2521] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(882), + [2524] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(2364), + [2527] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(882), + [2530] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 30), SHIFT_REPEAT(877), + [2533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2146), + [2535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(714), + [2537] = {.entry = {.count = 1, .reusable = false}}, SHIFT(856), + [2539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [2541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), + [2543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2318), + [2545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3), + [2547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(564), + [2549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), + [2551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), + [2553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3), + [2555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [2557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), + [2559] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_items_pattern, 3), + [2561] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_items_pattern, 2), + [2563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [2565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), + [2567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [2569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [2571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(502), + [2573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(535), + [2575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [2577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), + [2579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(560), + [2581] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1909), + [2583] = {.entry = {.count = 1, .reusable = true}}, SHIFT(698), + [2585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2238), + [2587] = {.entry = {.count = 1, .reusable = false}}, SHIFT(857), + [2589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), + [2591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2302), + [2593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3), + [2595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2), + [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [2599] = {.entry = {.count = 1, .reusable = false}}, SHIFT(475), + [2601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(516), + [2603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(542), + [2605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2551), + [2607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(779), + [2609] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1), + [2611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), + [2613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(484), + [2615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1344), + [2617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(246), + [2619] = {.entry = {.count = 1, .reusable = false}}, SHIFT(525), + [2621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(528), + [2623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2541), + [2625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(826), + [2627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(523), + [2629] = {.entry = {.count = 1, .reusable = true}}, SHIFT(522), + [2631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1209), + [2633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), + [2635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), + [2637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [2639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1289), + [2641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [2643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), + [2645] = {.entry = {.count = 1, .reusable = false}}, SHIFT(499), + [2647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(490), + [2649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2548), + [2651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(781), + [2653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), + [2655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(486), + [2657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1230), + [2659] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = 1, .production_id = 9), SHIFT(284), + [2662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1192), + [2664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1183), + [2666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), + [2668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1314), + [2670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1287), + [2672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1120), + [2674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1380), + [2676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1333), + [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [2680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1112), + [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269), + [2686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), + [2688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1257), + [2690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), + [2692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), + [2694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(217), + [2696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1686), + [2698] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1686), + [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1042), + [2702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [2704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(593), + [2706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(526), + [2708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1), + [2710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(586), + [2712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(584), + [2714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1029), + [2716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1217), + [2718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055), + [2720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1191), + [2722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), + [2724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1306), + [2726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2), + [2728] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 16), SHIFT_REPEAT(217), + [2731] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 16), SHIFT_REPEAT(1686), + [2734] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 16), SHIFT_REPEAT(1686), + [2737] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 16), + [2739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1178), + [2741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2024), + [2743] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1152), + [2745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1059), + [2747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1266), + [2749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2014), + [2751] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1268), + [2753] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1201), + [2755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1175), + [2757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1066), + [2759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1085), + [2761] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, .production_id = 8), + [2763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1), + [2765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2389), + [2767] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, .production_id = 53), + [2769] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, .production_id = 22), + [2771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, .production_id = 26), + [2773] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), + [2775] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(475), + [2778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(582), + [2780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(585), + [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(587), + [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(588), + [2786] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_as_pattern, 3, .production_id = 27), + [2788] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_as_pattern, 3, .production_id = 27), + [2790] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, .production_id = 26), + [2792] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), + [2794] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5), + [2796] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(593), + [2799] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, .production_id = 8), + [2801] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(582), + [2804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2), + [2806] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2), + [2808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(464), + [2810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [2812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3), + [2814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), + [2816] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), SHIFT_REPEAT(2389), + [2819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2497), + [2821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, .production_id = 10), + [2823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), + [2825] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), SHIFT_REPEAT(2497), + [2828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [2830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(557), + [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(524), + [2834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [2836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(613), + [2838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(556), + [2840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(555), + [2842] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1), + [2844] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(496), + [2847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), + [2849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), + [2851] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1), + [2853] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), + [2855] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, .production_id = 51), + [2857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), + [2861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2412), + [2863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), + [2865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [2867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(963), + [2869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2522), + [2871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2547), + [2873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2543), + [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2526), + [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), + [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1253), + [2881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(496), + [2883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(489), + [2885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2463), + [2887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_literal_pattern, 1), + [2889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, .dynamic_precedence = -1, .production_id = 8), + [2891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), + [2893] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2), + [2895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [2897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [2899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), + [2901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1144), + [2903] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(499), + [2906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2), + [2908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2436), + [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2538), + [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2535), + [2914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2), + [2916] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(525), + [2919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), + [2921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1109), + [2923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), + [2925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1319), + [2927] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(460), + [2930] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(2548), + [2933] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(781), + [2936] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), + [2938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), + [2940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), + [2942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1137), + [2944] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1), + [2946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), + [2948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [2950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2), + [2952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(567), + [2954] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2), + [2956] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(567), + [2959] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(2551), + [2962] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(779), + [2965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), + [2967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1280), + [2969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [2971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1312), + [2973] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), SHIFT_REPEAT(2412), + [2976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__list_splat_or_expression, 1), + [2978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [2980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1090), + [2982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [2984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1240), + [2986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), + [2988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1365), + [2990] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(557), + [2993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1), + [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1928), + [2997] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2493), + [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1988), + [3001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1938), + [3003] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_subscript_repeat1, 2, .production_id = 76), + [3005] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2), + [3007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2), + [3009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [3011] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1), + [3013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1695), + [3015] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1695), + [3017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1), + [3019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), + [3021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2464), + [3023] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 8), + [3025] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), + [3027] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(1695), + [3030] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(1695), + [3033] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), + [3035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), + [3037] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), SHIFT_REPEAT(2464), + [3040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548), + [3042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(505), + [3044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(549), + [3046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), + [3048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455), + [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), + [3052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_literal_integer_or_float, 2, .production_id = 88), + [3054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [3056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_literal_integer_or_float, 1), + [3058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [3060] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1248), + [3062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), + [3064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460), + [3066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), + [3068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(633), + [3070] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(543), + [3073] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(2541), + [3076] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(826), + [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [3081] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 23), SHIFT(548), + [3084] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), + [3086] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1195), + [3088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1802), + [3090] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1969), + [3092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2267), + [3094] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2), + [3096] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, .production_id = 79), + [3098] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, .production_id = 79), + [3100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [3102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, .production_id = 84), + [3104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2, .production_id = 21), + [3106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, .production_id = 41), + [3108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, .production_id = 23), + [3110] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dotted_name_repeat1, 2), SHIFT_REPEAT(2461), + [3113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 101), + [3115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [3117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 100), + [3119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [3121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, .production_id = 99), + [3123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, .production_id = 99), + [3125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, .production_id = 98), + [3127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2), + [3129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), + [3131] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, .production_id = 31), + [3133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, .production_id = 31), + [3135] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, .production_id = 31), + [3137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, .production_id = 31), + [3139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_or_pattern_repeat1, 2), + [3141] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_or_pattern_repeat1, 2), SHIFT_REPEAT(1422), + [3144] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(506), + [3147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, .production_id = 58), + [3149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, .production_id = 58), + [3151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_or_pattern, 2), + [3153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1420), + [3155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [3157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), + [3159] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, .production_id = 59), + [3161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, .production_id = 59), + [3163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_or_pattern, 1), + [3165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1422), + [3167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1407), + [3169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_closed_pattern, 1), + [3171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), + [3173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = 1, .production_id = 9), + [3175] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), SHIFT_REPEAT(418), + [3178] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), + [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1406), + [3182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), + [3184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(581), + [3186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [3188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1948), + [3190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [3192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 116), + [3194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), + [3196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), + [3198] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(853), + [3201] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), SHIFT_REPEAT(419), + [3204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 75), + [3206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), + [3208] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_or_pattern_repeat1, 2), SHIFT_REPEAT(1420), + [3211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [3213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1980), + [3215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [3217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), + [3219] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), SHIFT_REPEAT(575), + [3222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), + [3224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), + [3226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), + [3228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5), + [3230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [3232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), + [3234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [3236] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), SHIFT_REPEAT(413), + [3239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), + [3241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2461), + [3243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, .production_id = 20), + [3245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 23), + [3247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, .production_id = 81), + [3249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, .production_id = 81), + [3251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, .production_id = 80), + [3253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, .production_id = 80), + [3255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), + [3257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_class_pattern, 6), + [3259] = {.entry = {.count = 1, .reusable = false}}, SHIFT(216), + [3261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2), + [3263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1827), + [3265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_sequence_pattern, 2), + [3267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [3269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_mapping_pattern, 2), + [3271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), + [3273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(546), + [3275] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_mapping_pattern, 3), + [3277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_group_pattern, 3, .production_id = 103), + [3279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1423), + [3281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [3283] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 6), + [3285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_sequence_pattern, 3), + [3287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1853), + [3289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1746), + [3291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1956), + [3293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2043), + [3295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1967), + [3297] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(216), + [3300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2), + [3302] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(1827), + [3305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_literal_pattern_complex_number, 3, .production_id = 108), + [3307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_class_pattern, 3), + [3309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, .production_id = 17), + [3311] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_or_pattern_repeat1, 2), SHIFT_REPEAT(1421), + [3314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [3316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, .production_id = 22), + [3318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1345), + [3320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(576), + [3322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [3324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), + [3326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_mapping_pattern, 4), + [3328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(561), + [3330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), + [3332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [3334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [3336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [3338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1412), + [3340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(578), + [3342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [3344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1), + [3346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1811), + [3348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356), + [3350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [3352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_class_pattern, 4), + [3354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2073), + [3356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1945), + [3358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2058), + [3360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1421), + [3362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_mapping_pattern, 5), + [3364] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(459), + [3367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, .production_id = 53), + [3369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), + [3371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_class_pattern, 5), + [3373] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_or_pattern_repeat1, 2), SHIFT_REPEAT(1423), + [3376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(481), + [3378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [3380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1912), + [3382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_class_pattern, 7), + [3384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1357), + [3386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [3388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(590), + [3390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), + [3392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [3394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [3396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_maybe_star_pattern, 1), + [3398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), + [3400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1320), + [3402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [3404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(577), + [3406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [3408] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, .production_id = 6), + [3410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1822), + [3412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2479), + [3414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [3416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [3418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(488), + [3420] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_items_pattern_repeat1, 2), SHIFT_REPEAT(1494), + [3423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_items_pattern_repeat1, 2), + [3425] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3), + [3427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2330), + [3429] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1), + [3431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), + [3433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [3435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3), + [3437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1707), + [3439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2344), + [3441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1884), + [3443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1927), + [3445] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3), + [3447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_pattern, 1), + [3449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2531), + [3451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1483), + [3453] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_items_pattern, 1), + [3455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1480), + [3457] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1), + [3459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1961), + [3461] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2), + [3463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1), + [3465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [3467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1915), + [3469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2390), + [3471] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2), + [3473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2444), + [3475] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_maybe_sequence_pattern_repeat1, 2), SHIFT_REPEAT(1416), + [3478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_maybe_sequence_pattern_repeat1, 2), + [3480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2030), + [3482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2034), + [3484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [3486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1873), + [3488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2), + [3490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), + [3492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1747), + [3494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2052), + [3496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), + [3498] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_maybe_sequence_pattern, 1), + [3500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), + [3502] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3), + [3504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, .production_id = 10), + [3506] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2), + [3508] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2), SHIFT_REPEAT(1961), + [3511] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 32), + [3513] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_splat_or_expressions_repeat1, 2), + [3515] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_splat_or_expressions_repeat1, 2), SHIFT_REPEAT(341), + [3518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 33), + [3520] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 33), SHIFT_REPEAT(2066), + [3523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1913), + [3525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .dynamic_precedence = -1, .production_id = 19), + [3527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [3529] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 18), + [3531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), + [3533] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_clause_repeat1, 2, .production_id = 106), SHIFT_REPEAT(1408), + [3536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_clause_repeat1, 2, .production_id = 106), + [3538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 17), + [3540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1832), + [3542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 40), + [3544] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 40), SHIFT_REPEAT(462), + [3547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1836), + [3549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1393), + [3551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), + [3553] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), SHIFT_REPEAT(2330), + [3556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [3558] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2103), + [3560] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_key_value_pattern, 3, .production_id = 51), + [3562] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), + [3564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [3566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(439), + [3568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), + [3570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [3572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(612), + [3574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1982), + [3576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), + [3578] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), SHIFT_REPEAT(449), + [3581] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), + [3583] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(1497), + [3586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), + [3588] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(855), + [3591] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(572), + [3594] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2), SHIFT_REPEAT(293), + [3597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2353), + [3599] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2, .production_id = 46), SHIFT_REPEAT(491), + [3602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2, .production_id = 46), + [3604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1410), + [3606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1404), + [3608] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2), SHIFT_REPEAT(362), + [3611] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2), + [3613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, .production_id = 52), + [3615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), + [3617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [3619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(391), + [3621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), + [3623] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2), SHIFT_REPEAT(294), + [3626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2529), + [3628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [3630] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(501), + [3633] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(1498), + [3636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [3638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2021), + [3640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, .production_id = 34), + [3642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [3644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), + [3646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), + [3648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [3650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1), + [3652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [3654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [3656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1752), + [3658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [3660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(504), + [3662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [3664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [3666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), + [3668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [3670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), + [3672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), + [3674] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 57), + [3676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 57), + [3678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1729), + [3680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1210), + [3682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [3684] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_maybe_sequence_pattern_repeat1, 2), SHIFT_REPEAT(1415), + [3687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2029), + [3689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1270), + [3691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [3693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [3695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [3697] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), SHIFT_REPEAT(434), + [3700] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2), SHIFT_REPEAT(305), + [3703] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1), + [3705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [3707] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 33), SHIFT_REPEAT(2027), + [3710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [3712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(600), + [3714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [3716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1381), + [3718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [3720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375), + [3722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), + [3724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), + [3726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(324), + [3728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 24), + [3730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [3732] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(852), + [3735] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_as_pattern, 3, .production_id = 107), + [3737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [3739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), + [3741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1326), + [3743] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), + [3745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1491), + [3747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [3749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(315), + [3751] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), SHIFT_REPEAT(159), + [3754] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), + [3756] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(479), + [3759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2239), + [3761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2240), + [3763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [3765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [3767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [3769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1975), + [3771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [3773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), + [3775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1970), + [3777] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1290), + [3779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), + [3781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(447), + [3783] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2284), + [3785] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1493), + [3787] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2286), + [3789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), + [3791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [3793] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1332), + [3795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [3797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), + [3799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), + [3801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [3803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [3805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [3807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(608), + [3809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [3811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(605), + [3813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [3815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), + [3817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1), + [3819] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1), + [3821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1495), + [3823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), + [3825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), + [3827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [3829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), + [3831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), + [3833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(330), + [3835] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, .production_id = 10), + [3837] = {.entry = {.count = 1, .reusable = true}}, SHIFT(515), + [3839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), + [3841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [3843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1947), + [3845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_positional_patterns, 2), + [3847] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_case_positional_patterns, 2), SHIFT(1417), + [3850] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_keyword_patterns_repeat1, 2), + [3852] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_keyword_patterns_repeat1, 2), SHIFT_REPEAT(2320), + [3855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), + [3857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), + [3859] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_positional_patterns_repeat1, 2), + [3861] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_positional_patterns_repeat1, 2), SHIFT_REPEAT(1417), + [3864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), + [3866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1098), + [3868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [3870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1099), + [3872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), + [3874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(563), + [3876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), + [3878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1492), + [3880] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_keyword_patterns, 2), + [3882] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_case_keyword_patterns, 2), SHIFT(2320), + [3885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), + [3887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [3889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), + [3891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), + [3893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2395), + [3895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), + [3897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), + [3899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [3901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(621), + [3903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), + [3905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), + [3907] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_maybe_sequence_pattern_repeat1, 2), SHIFT_REPEAT(1414), + [3910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145), + [3912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(626), + [3914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_open_sequence_pattern, 3, .production_id = 109), + [3916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_clause_repeat1, 2, .production_id = 104), + [3918] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_case_maybe_star_pattern, 1), REDUCE(aux_sym_case_clause_repeat1, 2, .production_id = 104), + [3921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [3923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [3925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [3927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [3929] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_keyword_patterns, 1), + [3931] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_case_keyword_patterns, 1), SHIFT(2320), + [3934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), + [3936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(446), + [3938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), + [3940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [3942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [3944] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_positional_patterns, 1), + [3946] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_case_positional_patterns, 1), SHIFT(1417), + [3949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1211), + [3951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [3953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [3955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), + [3957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1411), + [3959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), + [3961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), + [3963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), + [3965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1405), + [3967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254), + [3969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [3971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(831), + [3973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [3975] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(289), + [3978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2262), + [3980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [3982] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_subscript_repeat1, 2, .production_id = 78), SHIFT_REPEAT(379), + [3985] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_subscript_repeat1, 2, .production_id = 78), + [3987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266), + [3989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1817), + [3991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), + [3993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1238), + [3995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [3997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1237), + [3999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1824), + [4001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2261), + [4003] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_star_pattern, 2), + [4005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1987), + [4007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1920), + [4009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, .production_id = 74), + [4011] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 38), + [4013] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1), + [4015] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, .production_id = 82), + [4017] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1714), + [4019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1714), + [4021] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, .production_id = 83), + [4023] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3), + [4025] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1), + [4027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1), + [4029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1819), + [4031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2502), + [4033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2530), + [4035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1490), + [4037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2528), + [4039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1868), + [4041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1869), + [4043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1918), + [4045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2523), + [4047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1885), + [4049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2521), + [4051] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2), + [4053] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3), + [4055] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, .production_id = 38), + [4057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2470), + [4059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [4061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [4063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2474), + [4065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1914), + [4067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, .production_id = 5), + [4069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1941), + [4071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1968), + [4073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1844), + [4075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2471), + [4077] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1744), + [4079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1744), + [4081] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 37), + [4083] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 36), + [4085] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_double_star_pattern, 2), + [4087] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1), + [4089] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2255), + [4091] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, .production_id = 35), + [4093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2380), + [4095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1845), + [4097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1857), + [4099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1951), + [4101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2367), + [4103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [4105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), + [4107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1916), + [4109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2452), + [4111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [4113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), + [4115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, .production_id = 26), + [4117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 25), + [4119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), + [4121] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2247), + [4123] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1801), + [4125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1801), + [4127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1), + [4129] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2209), + [4131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1702), + [4133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1702), + [4135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2346), + [4137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2337), + [4139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1910), + [4141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1810), + [4143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2357), + [4145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1911), + [4147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1919), + [4149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2335), + [4151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [4153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [4155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1930), + [4157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2331), + [4159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_keyword_pattern, 3, .production_id = 23), + [4161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1185), + [4163] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1246), + [4165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1113), + [4167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1250), + [4169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2292), + [4171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [4173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2009), + [4175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1934), + [4177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1), + [4179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(565), + [4181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1249), + [4183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1926), + [4185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [4187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1095), + [4189] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [4191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2294), + [4193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1093), + [4195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1116), + [4197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(545), + [4199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117), + [4201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), + [4203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [4205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1377), + [4207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1477), + [4209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2250), + [4211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1370), + [4213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1247), + [4215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1878), + [4217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1364), + [4219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(592), + [4221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), + [4223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1917), + [4225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362), + [4227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(997), + [4229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1352), + [4231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1351), + [4233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), + [4235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1347), + [4237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1346), + [4239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1135), + [4241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), + [4243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1187), + [4245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), + [4247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(530), + [4249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1834), + [4251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), + [4253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1862), + [4255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [4257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1189), + [4259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [4261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1190), + [4263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1139), + [4265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), + [4267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1626), + [4269] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2287), + [4271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2309), + [4273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1286), + [4275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1224), + [4277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1284), + [4279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283), + [4281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(558), + [4283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [4285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(579), + [4287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281), + [4289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1313), + [4291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1842), + [4293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1359), + [4295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), + [4297] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), + [4299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1368), + [4301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(532), + [4303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1371), + [4305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1778), + [4307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [4309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1378), + [4311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1369), + [4313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), + [4315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1024), + [4317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), + [4319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1348), + [4321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596), + [4323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), + [4325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1241), + [4327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1227), + [4329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2013), + [4331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2220), + [4333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1239), + [4335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2234), + [4337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1232), + [4339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2218), + [4341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2224), + [4343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1229), + [4345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), + [4347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1097), + [4349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), + [4351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1285), + [4353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [4355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [4357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2169), + [4359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1807), + [4361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1473), + [4363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [4365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1808), + [4367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2028), + [4369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1933), + [4371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [4373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1725), + [4375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1279), + [4377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [4379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), + [4381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1276), + [4383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1847), + [4385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(995), + [4387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [4389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1772), + [4391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [4393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2018), + [4395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1267), + [4397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2017), + [4399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), + [4401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1929), + [4403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1263), + [4405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4), + [4407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [4409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2035), + [4411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [4413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [4415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [4417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), + [4419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [4421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1215), + [4423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [4425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1261), + [4427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [4429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [4431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), + [4433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1213), + [4435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1208), + [4437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1826), + [4439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), + [4441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1719), + [4443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), + [4445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), + [4447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), + [4449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [4451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2), + [4453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(494), + [4455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1196), + [4457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), + [4459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1382), + [4461] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5), + [4463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1194), + [4465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2221), + [4467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [4469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1193), + [4471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [4473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(472), + [4475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1418), + [4477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2266), + [4479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1887), + [4481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [4483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [4485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1856), + [4487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2062), + [4489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), + [4491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1870), + [4493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2246), + [4495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2079), + [4497] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [4499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1823), + [4501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2133), + [4503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1936), + [4505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1931), + [4507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2300), + [4509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [4511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(837), + [4513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1156), + [4515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2231), + [4517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2229), + [4519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1922), + [4521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(771), + [4523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(776), + [4525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1740), + [4527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1756), +}; + +#ifdef __cplusplus +extern "C" { +#endif +void *tree_sitter_python_external_scanner_create(void); +void tree_sitter_python_external_scanner_destroy(void *); +bool tree_sitter_python_external_scanner_scan(void *, TSLexer *, const bool *); +unsigned tree_sitter_python_external_scanner_serialize(void *, char *); +void tree_sitter_python_external_scanner_deserialize(void *, const char *, unsigned); + +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_python(void) { + static const TSLanguage language = { + .version = LANGUAGE_VERSION, + .symbol_count = SYMBOL_COUNT, + .alias_count = ALIAS_COUNT, + .token_count = TOKEN_COUNT, + .external_token_count = EXTERNAL_TOKEN_COUNT, + .state_count = STATE_COUNT, + .large_state_count = LARGE_STATE_COUNT, + .production_id_count = PRODUCTION_ID_COUNT, + .field_count = FIELD_COUNT, + .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, + .parse_table = &ts_parse_table[0][0], + .small_parse_table = ts_small_parse_table, + .small_parse_table_map = ts_small_parse_table_map, + .parse_actions = ts_parse_actions, + .symbol_names = ts_symbol_names, + .field_names = ts_field_names, + .field_map_slices = ts_field_map_slices, + .field_map_entries = ts_field_map_entries, + .symbol_metadata = ts_symbol_metadata, + .public_symbol_map = ts_symbol_map, + .alias_map = ts_non_terminal_alias_map, + .alias_sequences = &ts_alias_sequences[0][0], + .lex_modes = ts_lex_modes, + .lex_fn = ts_lex, + .keyword_lex_fn = ts_lex_keywords, + .keyword_capture_token = sym_identifier, + .external_scanner = { + &ts_external_scanner_states[0][0], + ts_external_scanner_symbol_map, + tree_sitter_python_external_scanner_create, + tree_sitter_python_external_scanner_destroy, + tree_sitter_python_external_scanner_scan, + tree_sitter_python_external_scanner_serialize, + tree_sitter_python_external_scanner_deserialize, + }, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/source/errpy/vendor/tree-sitter-python/src/scanner.c b/source/errpy/vendor/tree-sitter-python/src/scanner.c new file mode 100644 index 00000000000..732f0237c81 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/src/scanner.c @@ -0,0 +1,484 @@ +#include +#include +#include +#include +#include "tree_sitter/parser.h" + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#define VEC_RESIZE(vec, _cap) \ + void *tmp = realloc((vec).data, (_cap) * sizeof((vec).data[0])); \ + assert(tmp != NULL); \ + (vec).data = tmp; \ + (vec).cap = (_cap); + +#define VEC_GROW(vec, _cap) \ + if ((vec).cap < (_cap)) { \ + VEC_RESIZE((vec), (_cap)); \ + } + +#define VEC_PUSH(vec, el) \ + if ((vec).cap == (vec).len) { \ + VEC_RESIZE((vec), MAX(16, (vec).len * 2)); \ + } \ + (vec).data[(vec).len++] = (el); + +#define VEC_POP(vec) (vec).len--; + +#define VEC_NEW \ + { .len = 0, .cap = 0, .data = NULL } + +#define VEC_BACK(vec) ((vec).data[(vec).len - 1]) + +#define VEC_FREE(vec) \ + { \ + if ((vec).data != NULL) \ + free((vec).data); \ + } + +#define VEC_CLEAR(vec) (vec).len = 0; + +enum TokenType { + NEWLINE, + INDENT, + DEDENT, + STRING_START, + STRING_CONTENT, + STRING_END, + COMMENT, + CLOSE_PAREN, + CLOSE_BRACKET, + CLOSE_BRACE, +}; + +typedef enum { + SingleQuote = 1 << 0, + DoubleQuote = 1 << 1, + BackQuote = 1 << 2, + Raw = 1 << 3, + Format = 1 << 4, + Triple = 1 << 5, + Bytes = 1 << 6, +} Flags; + +typedef struct { + char flags; +} Delimiter; + +static inline Delimiter new_delimiter() { return (Delimiter){0}; } + +static inline bool is_format(Delimiter *delimiter) { + return delimiter->flags & Format; +} + +static inline bool is_raw(Delimiter *delimiter) { + return delimiter->flags & Raw; +} + +static inline bool is_triple(Delimiter *delimiter) { + return delimiter->flags & Triple; +} + +static inline bool is_bytes(Delimiter *delimiter) { + return delimiter->flags & Bytes; +} + +static inline int32_t end_character(Delimiter *delimiter) { + if (delimiter->flags & SingleQuote) { + return '\''; + } + if (delimiter->flags & DoubleQuote) { + return '"'; + } + if (delimiter->flags & BackQuote) { + return '`'; + } + return 0; +} + +static inline void set_format(Delimiter *delimiter) { + delimiter->flags |= Format; +} + +static inline void set_raw(Delimiter *delimiter) { delimiter->flags |= Raw; } + +static inline void set_triple(Delimiter *delimiter) { + delimiter->flags |= Triple; +} + +static inline void set_bytes(Delimiter *delimiter) { + delimiter->flags |= Bytes; +} + +static inline void set_end_character(Delimiter *delimiter, int32_t character) { + switch (character) { + case '\'': + delimiter->flags |= SingleQuote; + break; + case '"': + delimiter->flags |= DoubleQuote; + break; + case '`': + delimiter->flags |= BackQuote; + break; + default: + assert(false); + } +} + +typedef struct { + uint32_t len; + uint32_t cap; + uint16_t *data; +} indent_vec; + +indent_vec indent_vec_new() { + indent_vec vec = VEC_NEW; + vec.data = calloc(1, sizeof(uint16_t)); + vec.cap = 1; + return vec; +} + +typedef struct { + uint32_t len; + uint32_t cap; + Delimiter *data; +} delimiter_vec; + +delimiter_vec delimiter_vec_new() { + delimiter_vec vec = VEC_NEW; + vec.data = calloc(1, sizeof(Delimiter)); + vec.cap = 1; + return vec; +} + +typedef struct { + indent_vec indents; + delimiter_vec delimiters; +} Scanner; + +static inline void advance(TSLexer *lexer) { lexer->advance(lexer, false); } + +static inline void skip(TSLexer *lexer) { lexer->advance(lexer, true); } + +bool tree_sitter_python_external_scanner_scan(void *payload, TSLexer *lexer, + const bool *valid_symbols) { + Scanner *scanner = (Scanner *)payload; + + bool error_recovery_mode = + valid_symbols[STRING_CONTENT] && valid_symbols[INDENT]; + bool within_brackets = valid_symbols[CLOSE_BRACE] || + valid_symbols[CLOSE_PAREN] || + valid_symbols[CLOSE_BRACKET]; + + if (valid_symbols[STRING_CONTENT] && scanner->delimiters.len > 0 && + !error_recovery_mode) { + Delimiter delimiter = VEC_BACK(scanner->delimiters); + int32_t end_char = end_character(&delimiter); + bool has_content = false; + while (lexer->lookahead) { + if ((lexer->lookahead == '{' || lexer->lookahead == '}') && + is_format(&delimiter)) { + lexer->mark_end(lexer); + lexer->result_symbol = STRING_CONTENT; + return has_content; + } + if (lexer->lookahead == '\\') { + if (is_raw(&delimiter)) { + // Step over the backslash. + lexer->advance(lexer, false); + // Step over any escaped quotes. + if (lexer->lookahead == end_character(&delimiter) || + lexer->lookahead == '\\') { + lexer->advance(lexer, false); + } + continue; + } + if (is_bytes(&delimiter)) { + lexer->mark_end(lexer); + lexer->advance(lexer, false); + if (lexer->lookahead == 'N' || lexer->lookahead == 'u' || + lexer->lookahead == 'U') { + // In bytes string, \N{...}, \uXXXX and \UXXXXXXXX are + // not escape sequences + // https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals + lexer->advance(lexer, false); + } else { + lexer->result_symbol = STRING_CONTENT; + return has_content; + } + } else { + lexer->mark_end(lexer); + lexer->result_symbol = STRING_CONTENT; + return has_content; + } + } else if (lexer->lookahead == end_char) { + if (is_triple(&delimiter)) { + lexer->mark_end(lexer); + lexer->advance(lexer, false); + if (lexer->lookahead == end_char) { + lexer->advance(lexer, false); + if (lexer->lookahead == end_char) { + if (has_content) { + lexer->result_symbol = STRING_CONTENT; + } else { + lexer->advance(lexer, false); + lexer->mark_end(lexer); + VEC_POP(scanner->delimiters); + lexer->result_symbol = STRING_END; + } + return true; + } + lexer->mark_end(lexer); + lexer->result_symbol = STRING_CONTENT; + return true; + } + lexer->mark_end(lexer); + lexer->result_symbol = STRING_CONTENT; + return true; + } + if (has_content) { + lexer->result_symbol = STRING_CONTENT; + } else { + lexer->advance(lexer, false); + VEC_POP(scanner->delimiters); + lexer->result_symbol = STRING_END; + } + lexer->mark_end(lexer); + return true; + + } else if (lexer->lookahead == '\n' && has_content && + !is_triple(&delimiter)) { + return false; + } + advance(lexer); + has_content = true; + } + } + + lexer->mark_end(lexer); + + bool found_end_of_line = false; + uint32_t indent_length = 0; + int32_t first_comment_indent_length = -1; + for (;;) { + if (lexer->lookahead == '\n') { + found_end_of_line = true; + indent_length = 0; + skip(lexer); + } else if (lexer->lookahead == ' ') { + indent_length++; + skip(lexer); + } else if (lexer->lookahead == '\r' || lexer->lookahead == '\f') { + indent_length = 0; + skip(lexer); + } else if (lexer->lookahead == '\t') { + indent_length += 8; + skip(lexer); + } else if (lexer->lookahead == '#') { + // If we haven't found an EOL yet, + // then this is a comment after an expression: + // foo = bar # comment + // Just return, since we don't want to generate an indent/dedent token. + if (!found_end_of_line) { + return false; + } + if (first_comment_indent_length == -1) { + first_comment_indent_length = (int32_t)indent_length; + } + while (lexer->lookahead && lexer->lookahead != '\n') { + skip(lexer); + } + skip(lexer); + indent_length = 0; + } else if (lexer->lookahead == '\\') { + skip(lexer); + if (lexer->lookahead == '\r') { + skip(lexer); + } + if (lexer->lookahead == '\n' || lexer->eof(lexer)) { + skip(lexer); + } else { + return false; + } + } else if (lexer->eof(lexer)) { + indent_length = 0; + found_end_of_line = true; + break; + } else { + break; + } + } + + if (found_end_of_line) { + if (scanner->indents.len > 0) { + uint16_t current_indent_length = VEC_BACK(scanner->indents); + + if (valid_symbols[INDENT] && + indent_length > current_indent_length) { + VEC_PUSH(scanner->indents, indent_length); + lexer->result_symbol = INDENT; + return true; + } + + bool next_tok_is_string_start = lexer->lookahead == '\"' || + lexer->lookahead == '\'' || + lexer->lookahead == '`'; + + if ((valid_symbols[DEDENT] || + (!valid_symbols[NEWLINE] && + !(valid_symbols[STRING_START] && next_tok_is_string_start) && + !within_brackets)) && + indent_length < current_indent_length && + + // Wait to create a dedent token until we've consumed any + // comments + // whose indentation matches the current block. + first_comment_indent_length < (int32_t)current_indent_length) { + VEC_POP(scanner->indents); + lexer->result_symbol = DEDENT; + return true; + } + } + + if (valid_symbols[NEWLINE] && !error_recovery_mode) { + lexer->result_symbol = NEWLINE; + return true; + } + } + + if (first_comment_indent_length == -1 && valid_symbols[STRING_START]) { + Delimiter delimiter = new_delimiter(); + + bool has_flags = false; + while (lexer->lookahead) { + if (lexer->lookahead == 'f' || lexer->lookahead == 'F') { + set_format(&delimiter); + } else if (lexer->lookahead == 'r' || lexer->lookahead == 'R') { + set_raw(&delimiter); + } else if (lexer->lookahead == 'b' || lexer->lookahead == 'B') { + set_bytes(&delimiter); + } else if (lexer->lookahead != 'u' && lexer->lookahead != 'U') { + break; + } + has_flags = true; + advance(lexer); + } + + if (lexer->lookahead == '`') { + set_end_character(&delimiter, '`'); + advance(lexer); + lexer->mark_end(lexer); + } else if (lexer->lookahead == '\'') { + set_end_character(&delimiter, '\''); + advance(lexer); + lexer->mark_end(lexer); + if (lexer->lookahead == '\'') { + advance(lexer); + if (lexer->lookahead == '\'') { + advance(lexer); + lexer->mark_end(lexer); + set_triple(&delimiter); + } + } + } else if (lexer->lookahead == '"') { + set_end_character(&delimiter, '"'); + advance(lexer); + lexer->mark_end(lexer); + if (lexer->lookahead == '"') { + advance(lexer); + if (lexer->lookahead == '"') { + advance(lexer); + lexer->mark_end(lexer); + set_triple(&delimiter); + } + } + } + + if (end_character(&delimiter)) { + VEC_PUSH(scanner->delimiters, delimiter); + lexer->result_symbol = STRING_START; + + return true; + } + if (has_flags) { + return false; + } + } + + return false; +} + +unsigned tree_sitter_python_external_scanner_serialize(void *payload, + char *buffer) { + Scanner *scanner = (Scanner *)payload; + + size_t size = 0; + + size_t delimiter_count = scanner->delimiters.len; + if (delimiter_count > UINT8_MAX) { + delimiter_count = UINT8_MAX; + } + buffer[size++] = (char)delimiter_count; + + if (delimiter_count > 0) { + memcpy(&buffer[size], scanner->delimiters.data, delimiter_count); + } + size += delimiter_count; + + uint32_t iter = 1; + for (; iter < scanner->indents.len && + size < TREE_SITTER_SERIALIZATION_BUFFER_SIZE; + ++iter) { + // yeah, it narrows the value but it's fine? + buffer[size++] = (char)scanner->indents.data[iter]; + } + + return size; +} + +void tree_sitter_python_external_scanner_deserialize(void *payload, + const char *buffer, + unsigned length) { + Scanner *scanner = (Scanner *)payload; + + VEC_CLEAR(scanner->delimiters); + VEC_CLEAR(scanner->indents); + VEC_PUSH(scanner->indents, 0); + + if (length > 0) { + size_t size = 0; + + size_t delimiter_count = (uint8_t)buffer[size++]; + if (delimiter_count > 0) { + VEC_GROW(scanner->delimiters, delimiter_count); + scanner->delimiters.len = delimiter_count; + memcpy(scanner->delimiters.data, &buffer[size], delimiter_count); + size += delimiter_count; + } + + for (; size < length; size++) { + VEC_PUSH(scanner->indents, (unsigned char)buffer[size]); + } + } +} + +void *tree_sitter_python_external_scanner_create() { +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) + static_assert(sizeof(Delimiter) == sizeof(char), ""); +#else + assert(sizeof(Delimiter) == sizeof(char)); +#endif + Scanner *scanner = calloc(1, sizeof(Scanner)); + scanner->indents = indent_vec_new(); + scanner->delimiters = delimiter_vec_new(); + tree_sitter_python_external_scanner_deserialize(scanner, NULL, 0); + return scanner; +} + +void tree_sitter_python_external_scanner_destroy(void *payload) { + Scanner *scanner = (Scanner *)payload; + VEC_FREE(scanner->indents); + VEC_FREE(scanner->delimiters); + free(scanner); +} diff --git a/source/errpy/vendor/tree-sitter-python/src/tree_sitter/parser.h b/source/errpy/vendor/tree-sitter-python/src/tree_sitter/parser.h new file mode 100644 index 00000000000..0b1c1f7ab05 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/src/tree_sitter/parser.h @@ -0,0 +1,223 @@ +#ifndef TREE_SITTER_PARSER_H_ +#define TREE_SITTER_PARSER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ts_builtin_sym_error ((TSSymbol)-1) +#define ts_builtin_sym_end 0 +#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 + +typedef uint16_t TSStateId; + +#ifndef TREE_SITTER_API_H_ +typedef uint16_t TSSymbol; +typedef uint16_t TSFieldId; +typedef struct TSLanguage TSLanguage; +#endif + +typedef struct { + TSFieldId field_id; + uint8_t child_index; + bool inherited; +} TSFieldMapEntry; + +typedef struct { + uint16_t index; + uint16_t length; +} TSFieldMapSlice; + +typedef struct { + bool visible; + bool named; + bool supertype; +} TSSymbolMetadata; + +typedef struct TSLexer TSLexer; + +struct TSLexer { + int32_t lookahead; + TSSymbol result_symbol; + void (*advance)(TSLexer *, bool); + void (*mark_end)(TSLexer *); + uint32_t (*get_column)(TSLexer *); + bool (*is_at_included_range_start)(const TSLexer *); + bool (*eof)(const TSLexer *); +}; + +typedef enum { + TSParseActionTypeShift, + TSParseActionTypeReduce, + TSParseActionTypeAccept, + TSParseActionTypeRecover, +} TSParseActionType; + +typedef union { + struct { + uint8_t type; + TSStateId state; + bool extra; + bool repetition; + } shift; + struct { + uint8_t type; + uint8_t child_count; + TSSymbol symbol; + int16_t dynamic_precedence; + uint16_t production_id; + } reduce; + uint8_t type; +} TSParseAction; + +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; +} TSLexMode; + +typedef union { + TSParseAction action; + struct { + uint8_t count; + bool reusable; + } entry; +} TSParseActionEntry; + +struct TSLanguage { + uint32_t version; + uint32_t symbol_count; + uint32_t alias_count; + uint32_t token_count; + uint32_t external_token_count; + uint32_t state_count; + uint32_t large_state_count; + uint32_t production_id_count; + uint32_t field_count; + uint16_t max_alias_sequence_length; + const uint16_t *parse_table; + const uint16_t *small_parse_table; + const uint32_t *small_parse_table_map; + const TSParseActionEntry *parse_actions; + const char * const *symbol_names; + const char * const *field_names; + const TSFieldMapSlice *field_map_slices; + const TSFieldMapEntry *field_map_entries; + const TSSymbolMetadata *symbol_metadata; + const TSSymbol *public_symbol_map; + const uint16_t *alias_map; + const TSSymbol *alias_sequences; + const TSLexMode *lex_modes; + bool (*lex_fn)(TSLexer *, TSStateId); + bool (*keyword_lex_fn)(TSLexer *, TSStateId); + TSSymbol keyword_capture_token; + struct { + const bool *states; + const TSSymbol *symbol_map; + void *(*create)(void); + void (*destroy)(void *); + bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist); + unsigned (*serialize)(void *, char *); + void (*deserialize)(void *, const char *, unsigned); + } external_scanner; + const TSStateId *primary_state_ids; +}; + +/* + * Lexer Macros + */ + +#define START_LEXER() \ + bool result = false; \ + bool skip = false; \ + int32_t lookahead; \ + goto start; \ + next_state: \ + lexer->advance(lexer, skip); \ + start: \ + skip = false; \ + lookahead = lexer->lookahead; + +#define ADVANCE(state_value) \ + { \ + state = state_value; \ + goto next_state; \ + } + +#define SKIP(state_value) \ + { \ + skip = true; \ + state = state_value; \ + goto next_state; \ + } + +#define ACCEPT_TOKEN(symbol_value) \ + result = true; \ + lexer->result_symbol = symbol_value; \ + lexer->mark_end(lexer); + +#define END_STATE() return result; + +/* + * Parse Table Macros + */ + +#define SMALL_STATE(id) id - LARGE_STATE_COUNT + +#define STATE(id) id + +#define ACTIONS(id) id + +#define SHIFT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value \ + } \ + }} + +#define SHIFT_REPEAT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value, \ + .repetition = true \ + } \ + }} + +#define SHIFT_EXTRA() \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .extra = true \ + } \ + }} + +#define REDUCE(symbol_val, child_count_val, ...) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_val, \ + .child_count = child_count_val, \ + __VA_ARGS__ \ + }, \ + }} + +#define RECOVER() \ + {{ \ + .type = TSParseActionTypeRecover \ + }} + +#define ACCEPT_INPUT() \ + {{ \ + .type = TSParseActionTypeAccept \ + }} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_PARSER_H_ diff --git a/source/errpy/vendor/tree-sitter-python/test/corpus/errors.txt b/source/errpy/vendor/tree-sitter-python/test/corpus/errors.txt new file mode 100644 index 00000000000..a96de421fe8 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/corpus/errors.txt @@ -0,0 +1,30 @@ +================================================================================ +An error before a string literal +================================================================================ + +def a(b): + c. + + """ + d + """ + + e + +-------------------------------------------------------------------------------- + +(module + (function_definition + (identifier) + (parameters + (identifier)) + (ERROR + (identifier)) + (block + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (identifier))))) diff --git a/source/errpy/vendor/tree-sitter-python/test/corpus/expressions.txt b/source/errpy/vendor/tree-sitter-python/test/corpus/expressions.txt new file mode 100644 index 00000000000..b7e5cee4138 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/corpus/expressions.txt @@ -0,0 +1,1087 @@ +================================================================================ +Identifiers with Greek letters +================================================================================ + +ψ1 = β_γ + Ψ_5 + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + left: (identifier) + right: (binary_operator + left: (identifier) + right: (identifier))))) + +================================================================================ +Subscript expressions +================================================================================ + +a[1] +b[2, 3] +c[4, 5,] + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (subscript + (identifier) + (integer))) + (expression_statement + (subscript + (identifier) + (integer) + (integer))) + (expression_statement + (subscript + (identifier) + (integer) + (integer)))) + +================================================================================ +Subscript slice expressions +================================================================================ + +a[:] +b[5:] +b[5:6, ...] +c[::] + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (subscript + (identifier) + (slice))) + (expression_statement + (subscript + (identifier) + (slice + (integer)))) + (expression_statement + (subscript + (identifier) + (slice + (integer) + (integer)) + (ellipsis))) + (expression_statement + (subscript + (identifier) + (slice)))) + +================================================================================ +Attribute references +================================================================================ + +a.b.c + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (attribute + (attribute + (identifier) + (identifier)) + (identifier)))) + +================================================================================ +Await expressions +================================================================================ + +await i(j, 5) +return await i(j, 5) +async def region_exists(region: str) -> bool: + return region in await all_regions() + +assert await a(b) == c + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (await + (call + (identifier) + (argument_list + (identifier) + (integer))))) + (return_statement + (await + (call + (identifier) + (argument_list + (identifier) + (integer))))) + (function_definition + (identifier) + (parameters + (typed_parameter + (identifier) + (type + (identifier)))) + (type + (identifier)) + (block + (return_statement + (comparison_operator + (identifier) + (await + (call + (identifier) + (argument_list))))))) + (assert_statement + (comparison_operator + (await + (call + (identifier) + (argument_list + (identifier)))) + (identifier)))) + +================================================================================ +Call expressions +================================================================================ + +__a__() +b(1) +c(e, f=g) +i(j, 5,) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (call + (identifier) + (argument_list))) + (expression_statement + (call + (identifier) + (argument_list + (integer)))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (keyword_argument + (identifier) + (identifier))))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (integer))))) + +================================================================================ +Print used as an identifier +================================================================================ + +print() +print(a) +print(a, b=c) +print(d, e) +print(d, *e) +print(*f, **g,) +a(print) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (call + (identifier) + (argument_list))) + (expression_statement + (call + (identifier) + (argument_list + (identifier)))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (keyword_argument + (identifier) + (identifier))))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (identifier)))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (list_splat + (identifier))))) + (expression_statement + (call + (identifier) + (argument_list + (list_splat + (identifier)) + (dictionary_splat + (identifier))))) + (expression_statement + (call + (identifier) + (argument_list + (identifier))))) + +================================================================================ +Print used as a parameter +================================================================================ + +def a(print): + b +def a(printer=print): + c +def a(*print): + b +def a(**print): + b +def print(): + a + +-------------------------------------------------------------------------------- + +(module + (function_definition + (identifier) + (parameters + (identifier)) + (block + (expression_statement + (identifier)))) + (function_definition + (identifier) + (parameters + (default_parameter + (identifier) + (identifier))) + (block + (expression_statement + (identifier)))) + (function_definition + (identifier) + (parameters + (list_splat_pattern + (identifier))) + (block + (expression_statement + (identifier)))) + (function_definition + (identifier) + (parameters + (dictionary_splat_pattern + (identifier))) + (block + (expression_statement + (identifier)))) + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (identifier))))) + +================================================================================ +Exec used as an identifier +================================================================================ + +exec("print \"'%s' has %i characters\" % (public_function(), len(public_function()))", {"__builtins__" : None}, safe_dict) +exec("""exec _code_ in _globs_, _locs_""") + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content + (escape_sequence) + (escape_sequence)) + (string_end)) + (dictionary + (pair + (string + (string_start) + (string_content) + (string_end)) + (none))) + (identifier)))) + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end)))))) + +================================================================================ +Async / await used as identifiers +================================================================================ + +async = 4 +await = 5 +print async, await + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (integer))) + (expression_statement + (assignment + (identifier) + (integer))) + (print_statement + (identifier) + (identifier))) + +================================================================================ +Calls with splats +================================================================================ + +a(*()) +a(**{}) +a(*b) +c(d, *e, **g) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (call + (identifier) + (argument_list + (list_splat + (tuple))))) + (expression_statement + (call + (identifier) + (argument_list + (dictionary_splat + (dictionary))))) + (expression_statement + (call + (identifier) + (argument_list + (list_splat + (identifier))))) + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (list_splat + (identifier)) + (dictionary_splat + (identifier)))))) + +================================================================================ +Math operators +================================================================================ + +a + b * c ** d - e / 5 +-5 ++x +~x + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (binary_operator + (binary_operator + (identifier) + (binary_operator + (identifier) + (binary_operator + (identifier) + (identifier)))) + (binary_operator + (identifier) + (integer)))) + (expression_statement + (unary_operator + (integer))) + (expression_statement + (unary_operator + (identifier))) + (expression_statement + (unary_operator + (identifier)))) + +================================================================================ +Binary Addition / Subtraction With Floats +================================================================================ + +.1-.0 +.1+.0 +.1-0 +.1+0 + +1-.0 +1+.0 + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (binary_operator + (float) + (float))) + (expression_statement + (binary_operator + (float) + (float))) + (expression_statement + (binary_operator + (float) + (integer))) + (expression_statement + (binary_operator + (float) + (integer))) + (expression_statement + (binary_operator + (integer) + (float))) + (expression_statement + (binary_operator + (integer) + (float)))) + +================================================================================ +Power Operator Precedence +================================================================================ + +2**2**3 +-2**2 + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (binary_operator + (integer) + (binary_operator + (integer) + (integer)))) + (expression_statement + (unary_operator + (binary_operator + (integer) + (integer))))) + +================================================================================ +Operator precedence +================================================================================ + +a() + b[c] * c.d.e + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (binary_operator + left: (call + function: (identifier) + arguments: (argument_list)) + right: (binary_operator + left: (subscript + value: (identifier) + subscript: (identifier)) + right: (attribute + object: (attribute + object: (identifier) + attribute: (identifier)) + attribute: (identifier)))))) + +================================================================================ +Bitwise operators +================================================================================ + +a << b | c >> d & e + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (binary_operator + (binary_operator + (identifier) + (identifier)) + (binary_operator + (binary_operator + (identifier) + (identifier)) + (identifier))))) + +================================================================================ +Boolean operators +================================================================================ + +a or b and c +not d +not a and b or c +a and not b and c + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (boolean_operator + (identifier) + (boolean_operator + (identifier) + (identifier)))) + (expression_statement + (not_operator + (identifier))) + (expression_statement + (boolean_operator + (boolean_operator + (not_operator + (identifier)) + (identifier)) + (identifier))) + (expression_statement + (boolean_operator + (boolean_operator + (identifier) + (not_operator + (identifier))) + (identifier)))) + +================================================================================ +Comparison operators +================================================================================ + +a < b <= c == d >= e > f +not a == b or c == d +a not in b +a is not b + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (comparison_operator + (identifier) + (identifier) + (identifier) + (identifier) + (identifier) + (identifier))) + (expression_statement + (boolean_operator + (not_operator + (comparison_operator + (identifier) + (identifier))) + (comparison_operator + (identifier) + (identifier)))) + (expression_statement + (comparison_operator + (identifier) + (identifier))) + (expression_statement + (comparison_operator + (identifier) + (identifier)))) + +================================================================================ +Assignments +================================================================================ + +a = 1 +a, b = 1, 2 +a, *c = 1, 2, 3 +a, = 1, 2 +a[b] = c = d +a, *b.c = d +f = *d, + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (integer))) + (expression_statement + (assignment + (pattern_list + (identifier) + (identifier)) + (list_splat_or_expressions + (integer) + (integer)))) + (expression_statement + (assignment + (pattern_list + (identifier) + (list_splat_pattern + (identifier))) + (list_splat_or_expressions + (integer) + (integer) + (integer)))) + (expression_statement + (assignment + (pattern_list + (identifier)) + (list_splat_or_expressions + (integer) + (integer)))) + (expression_statement + (assignment + (subscript + (identifier) + (identifier)) + (assignment + (identifier) + (identifier)))) + (expression_statement + (assignment + (pattern_list + (identifier) + (list_splat_pattern + (attribute + (identifier) + (identifier)))) + (identifier))) + (expression_statement + (assignment + (identifier) + (list_splat_or_expressions + (list_splat + (identifier)))))) + +================================================================================ +Assignments with type annotations +================================================================================ + +tail_leaves: List[Leaf] = [] + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (type + (subscript + (identifier) + (identifier))) + (list)))) + +================================================================================ +Augmented assignments +================================================================================ + +a += 1 +b >>= 2 +c //= 1 + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (augmented_assignment + (identifier) + (integer))) + (expression_statement + (augmented_assignment + (identifier) + (integer))) + (expression_statement + (augmented_assignment + (identifier) + (integer)))) + +================================================================================ +Named expressions +================================================================================ + +a := x +(y := f(x)) +foo(x=(y := f(x))) +y0 = (y1 := f(x)) +def foo(answer=(p := 42)): + return answer; +def foo(answer: (p := 42) = 5): + return answer; +foo(x := 3, cat='vector') +(z := (y := (x := 0))) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (named_expression + (identifier) + (identifier))) + (expression_statement + (parenthesized_expression + (named_expression + (identifier) + (call + (identifier) + (argument_list + (identifier)))))) + (expression_statement + (call + (identifier) + (argument_list + (keyword_argument + (identifier) + (parenthesized_expression + (named_expression + (identifier) + (call + (identifier) + (argument_list + (identifier))))))))) + (expression_statement + (assignment + (identifier) + (parenthesized_expression + (named_expression + (identifier) + (call + (identifier) + (argument_list + (identifier))))))) + (function_definition + (identifier) + (parameters + (default_parameter + (identifier) + (parenthesized_expression + (named_expression + (identifier) + (integer))))) + (block + (return_statement + (identifier)))) + (function_definition + (identifier) + (parameters + (typed_default_parameter + (identifier) + (type + (parenthesized_expression + (named_expression + (identifier) + (integer)))) + (integer))) + (block + (return_statement + (identifier)))) + (expression_statement + (call + (identifier) + (argument_list + (named_expression + (identifier) + (integer)) + (keyword_argument + (identifier) + (string + (string_start) + (string_content) + (string_end)))))) + (expression_statement + (parenthesized_expression + (named_expression + (identifier) + (parenthesized_expression + (named_expression + (identifier) + (parenthesized_expression + (named_expression + (identifier) + (integer))))))))) + +================================================================================ +Yield expressions +================================================================================ + +def example(): + yield + yield 1 + x = yield 2 + yield from a + yield from (yield from (x for x in range(1, 10))) + +-------------------------------------------------------------------------------- + +(module + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (yield)) + (expression_statement + (yield + (integer))) + (expression_statement + (assignment + (identifier) + (yield + (integer)))) + (expression_statement + (yield + (identifier))) + (expression_statement + (yield + (parenthesized_expression + (yield + (generator_expression + (identifier) + (for_in_clause + (identifier) + (call + (identifier) + (argument_list + (integer) + (integer)))))))))))) + +================================================================================ +lambdas +================================================================================ + +lambda b, c: d("e" % f) +lambda: True +lambda a, b = c, *d, **e: a +lambda (a, b): (a, b) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (lambda + (lambda_parameters + (identifier) + (identifier)) + (call + (identifier) + (argument_list + (binary_operator + (string + (string_start) + (string_content) + (string_end)) + (identifier)))))) + (expression_statement + (lambda + (true))) + (expression_statement + (lambda + (lambda_parameters + (identifier) + (default_parameter + (identifier) + (identifier)) + (list_splat_pattern + (identifier)) + (dictionary_splat_pattern + (identifier))) + (identifier))) + (expression_statement + (lambda + (lambda_parameters + (tuple_pattern + (identifier) + (identifier))) + (tuple + (identifier) + (identifier))))) + +================================================================================ +Tuples with splats +================================================================================ + +(foo, *bar, *baz) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (tuple + (identifier) + (list_splat + (identifier)) + (list_splat + (identifier))))) + +================================================================================ +Tuples with yield +================================================================================ + +(a, yield a, b, c) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (tuple + (identifier) + (yield + (expression_list + (identifier) + (identifier) + (identifier)))))) + +================================================================================ +Conditional if expressions +================================================================================ + +a = b if c else d +something() if a else d +slice(1,1,1) if a else d + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (conditional_expression + (identifier) + (identifier) + (identifier)))) + (expression_statement + (conditional_expression + (call + (identifier) + (argument_list)) + (identifier) + (identifier))) + (expression_statement + (conditional_expression + (call + (identifier) + (argument_list + (integer) + (integer) + (integer))) + (identifier) + (identifier)))) + +================================================================================ +Async context managers and iterators +================================================================================ + +async with a as b: + async for c in d: + [e async for f in g] + +-------------------------------------------------------------------------------- + +(module + (with_statement + (with_clause + (with_item + value: (as_pattern + (identifier) + alias: (as_pattern_target + (identifier))))) + body: (block + (for_statement + left: (identifier) + right: (identifier) + body: (block + (expression_statement + (list_comprehension + body: (identifier) + (for_in_clause + left: (identifier) + right: (identifier))))))))) + +================================================================================ +Arbitrary indentation between brackets +================================================================================ + +def a(): + b( +1, +2 + ) + + c = [ +3 + ] + +-------------------------------------------------------------------------------- + +(module + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (call + (identifier) + (argument_list + (integer) + (integer)))) + (expression_statement + (assignment + (identifier) + (list + (integer))))))) + +================================================================================ +Splat Inside of Expression List +================================================================================ + +a,c = [1,2],3 +w, x, y, z = 0, *a, c + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (pattern_list + (identifier) + (identifier)) + (list_splat_or_expressions + (list + (integer) + (integer)) + (integer)))) + (expression_statement + (assignment + (pattern_list + (identifier) + (identifier) + (identifier) + (identifier)) + (list_splat_or_expressions + (integer) + (list_splat + (identifier)) + (identifier))))) diff --git a/source/errpy/vendor/tree-sitter-python/test/corpus/literals.txt b/source/errpy/vendor/tree-sitter-python/test/corpus/literals.txt new file mode 100644 index 00000000000..12d438b3ab6 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/corpus/literals.txt @@ -0,0 +1,1003 @@ +================================================================================ +Integers +================================================================================ + +-1 +0xDEAD +0XDEAD +1j +-1j +0o123 +0O123 +0b001 +0B001 +1_1 +0B1_1 +0O1_1 +0L + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (unary_operator + (integer))) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (unary_operator + (integer))) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer)) + (expression_statement + (integer))) + +================================================================================ +Floats +================================================================================ + +-.6_6 ++.1_1 +123.4123 +123.123J +1_1.3_1 +1_1. +1e+3_4j +.3e1_4 +1_0.l +.1l + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (unary_operator + (float))) + (expression_statement + (unary_operator + (float))) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float))) + +================================================================================ +Scientific Notation Floats +================================================================================ + +1e322 +1e-3 +1e+3 +1.8e10 +1.e10 +-1e10 + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (float)) + (expression_statement + (unary_operator + (float)))) + +================================================================================ +Strings +================================================================================ + +"I'm ok" +'"ok"' +UR'bye' +b'sup' +B"sup" +`1` +"\\" +"/" +"multiline \ +string" +b"\x12\u12\U12\x13\N{WINKING FACE}" +"\xab\123\'\"\a\b\f\r\n\t\v\\" +"\xgh\o123\p\q\c\d\e\u12\U1234" +f'\N{GREEK CAPITAL LETTER DELTA}' + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence) + (escape_sequence)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence)) + (string_end)))) + +================================================================================ +Raw strings +================================================================================ + +'ab\x00cd' +"\n" + +# no escape sequences in these +r'ab\x00cd' +ur"\n" + +# raw f-string +fr"\{0}" + +r"\\" + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (string + (string_start) + (string_content + (escape_sequence)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence)) + (string_end))) + (comment) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (comment) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (integer)) + (string_end))) + (expression_statement + (string + (string_start) + (string_end)))) + +================================================================================ +Raw strings with escaped quotes +================================================================================ + +re.compile(r"(\n|\A)#include\s*['\"]" + r"(?P[\w\d./\\]+[.]src)['\"]") + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (concatenated_string + (string + (string_start) + (string_content) + (string_end)) + (string + (string_start) + (string_content) + (string_end))))))) + +================================================================================ +Format strings +================================================================================ + +# nested! +f"a {b(f'c {e} d')} e" +f"""a"{b}c""" +f"""a""{b}c""" +f"a {{}} e" +f"a {b}}}" +f"a {{{b}" +f"a {{b}}" +f"a {{{b}}}" +f"{c,}" +f"{yield d}" +f"{*a,}" + +def function(): + return f""" +{"string1" if True else + "string2"}""" + +-------------------------------------------------------------------------------- + +(module + (comment) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_content) + (string_end))))) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (expression_list + (identifier))) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (yield + (identifier))) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (pattern_list + (list_splat_pattern + (identifier)))) + (string_end))) + (function_definition + (identifier) + (parameters) + (block + (return_statement + (string + (string_start) + (string_content) + (interpolation + (conditional_expression + (string + (string_start) + (string_content) + (string_end)) + (true) + (string + (string_start) + (string_content) + (string_end)))) + (string_end)))))) + +================================================================================ +Format strings with format specifiers +================================================================================ + +f"a {b:2} {c:34.5}" +f"{b:{c.d}.{d.e}}" +f"{a:#06x}" +f"{a=}" +f"{a=:.2f}" +f"{value:{width + padding!r}.{precision}}" + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (string + (string_start) + (string_content) + (interpolation + (identifier) + (format_specifier)) + (string_content) + (interpolation + (identifier) + (format_specifier)) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (identifier) + (format_specifier + (format_expression + (attribute + (identifier) + (identifier))) + (format_expression + (attribute + (identifier) + (identifier))))) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (identifier) + (format_specifier)) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (identifier)) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (identifier) + (format_specifier)) + (string_end))) + (expression_statement + (string + (string_start) + (interpolation + (identifier) + (format_specifier + (format_expression + (binary_operator + (identifier) + (identifier)) + (type_conversion)) + (format_expression + (identifier)))) + (string_end)))) + +================================================================================ +Unicode escape sequences +================================================================================ + +"\x12 \123 \u1234" + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (string + (string_start) + (string_content + (escape_sequence) + (escape_sequence) + (escape_sequence)) + (string_end)))) + +================================================================================ +Other primitives +================================================================================ + +True +False +None + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (true)) + (expression_statement + (false)) + (expression_statement + (none))) + +================================================================================ +Concatenated strings +================================================================================ + +"one" "two" "three" + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (concatenated_string + (string + (string_start) + (string_content) + (string_end)) + (string + (string_start) + (string_content) + (string_end)) + (string + (string_start) + (string_content) + (string_end))))) + +================================================================================ +Multi-line strings +================================================================================ + +""" +A double quote hello, +without double or single quotes. +""" + +""" +A double quote "hello", +with double quotes. +""" + +""" +A double quote 'hello', +with single quotes. +""" + +''' +A single quote hello, +without double or single quotes. +''' + +''' +A single quote 'hello', +with single quotes. +''' + +''' +A single quote "hello", +with double quotes. +''' + +""" +A double quote hello\n\ +with an escaped newline\n\ +and another escaped newline\n\ +""" + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content) + (string_end))) + (expression_statement + (string + (string_start) + (string_content + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence) + (escape_sequence)) + (string_end)))) + +================================================================================ +Lists +================================================================================ + +[a, b, [c, d]] +[*()] +[*[]] +[*a] +[*a.b] +[*a[b].c] +[*a()] + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (list + (identifier) + (identifier) + (list + (identifier) + (identifier)))) + (expression_statement + (list + (list_splat + (tuple)))) + (expression_statement + (list + (list_splat + (list)))) + (expression_statement + (list + (list_splat + (identifier)))) + (expression_statement + (list + (list_splat + (attribute + (identifier) + (identifier))))) + (expression_statement + (list + (list_splat + (attribute + (subscript + (identifier) + (identifier)) + (identifier))))) + (expression_statement + (list + (list_splat + (call + (identifier) + (argument_list)))))) + +================================================================================ +List comprehensions +================================================================================ + +[a + b for (a, b) in items] +[a for b in c for a in b] +[(x,y) for x in [1,2,3] for y in [1,2,3] if True] +[a for a in lambda: True, lambda: False if a()] + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (list_comprehension + (binary_operator + (identifier) + (identifier)) + (for_in_clause + (tuple_pattern + (identifier) + (identifier)) + (identifier)))) + (expression_statement + (list_comprehension + (identifier) + (for_in_clause + (identifier) + (identifier)) + (for_in_clause + (identifier) + (identifier)))) + (expression_statement + (list_comprehension + (tuple + (identifier) + (identifier)) + (for_in_clause + (identifier) + (list + (integer) + (integer) + (integer))) + (for_in_clause + (identifier) + (list + (integer) + (integer) + (integer))) + (if_clause + (true)))) + (expression_statement + (list_comprehension + (identifier) + (for_in_clause + (identifier) + (lambda + (true)) + (lambda + (false))) + (if_clause + (call + (identifier) + (argument_list)))))) + +================================================================================ +Dictionaries +================================================================================ + +{a: 1, b: 2} +{} +{**{}} +{**a} +{**a.b} +{**a[b].c} +{**a()} + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (dictionary + (pair + (identifier) + (integer)) + (pair + (identifier) + (integer)))) + (expression_statement + (dictionary)) + (expression_statement + (dictionary + (dictionary_splat + (dictionary)))) + (expression_statement + (dictionary + (dictionary_splat + (identifier)))) + (expression_statement + (dictionary + (dictionary_splat + (attribute + (identifier) + (identifier))))) + (expression_statement + (dictionary + (dictionary_splat + (attribute + (subscript + (identifier) + (identifier)) + (identifier))))) + (expression_statement + (dictionary + (dictionary_splat + (call + (identifier) + (argument_list)))))) + +================================================================================ +Dictionary comprehensions +================================================================================ + +{a: b for a, b in items} +{a: b for c in d for e in items} + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (dictionary_comprehension + (pair + (identifier) + (identifier)) + (for_in_clause + (pattern_list + (identifier) + (identifier)) + (identifier)))) + (expression_statement + (dictionary_comprehension + (pair + (identifier) + (identifier)) + (for_in_clause + (identifier) + (identifier)) + (for_in_clause + (identifier) + (identifier))))) + +================================================================================ +Sets +================================================================================ + +{a, b, c,} +{*{}} + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (set + (identifier) + (identifier) + (identifier))) + (expression_statement + (set + (list_splat + (dictionary))))) + +================================================================================ +Set comprehensions +================================================================================ + +{a[b][c] for a, b, c in items} +{r for s in qs for n in ms} + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (set_comprehension + (subscript + (subscript + (identifier) + (identifier)) + (identifier)) + (for_in_clause + (pattern_list + (identifier) + (identifier) + (identifier)) + (identifier)))) + (expression_statement + (set_comprehension + (identifier) + (for_in_clause + (identifier) + (identifier)) + (for_in_clause + (identifier) + (identifier))))) + +================================================================================ +Simple Tuples +================================================================================ + +() +(a, b) +(a, b, c,) +(print, exec) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (tuple)) + (expression_statement + (tuple + (identifier) + (identifier))) + (expression_statement + (tuple + (identifier) + (identifier) + (identifier))) + (expression_statement + (tuple + (identifier) + (identifier)))) + +================================================================================ +Generator expression +================================================================================ + +(a[b][c] for a, b, c in items) +dict((a, b) for a, b in d) +(a for b in c for d in e,) +(x for x in range(1, 10)) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (generator_expression + (subscript + (subscript + (identifier) + (identifier)) + (identifier)) + (for_in_clause + (pattern_list + (identifier) + (identifier) + (identifier)) + (identifier)))) + (expression_statement + (call + (identifier) + (generator_expression + (tuple + (identifier) + (identifier)) + (for_in_clause + (pattern_list + (identifier) + (identifier)) + (identifier))))) + (expression_statement + (generator_expression + (identifier) + (for_in_clause + (identifier) + (identifier)) + (for_in_clause + (identifier) + (identifier)))) + (expression_statement + (generator_expression + (identifier) + (for_in_clause + (identifier) + (call + (identifier) + (argument_list + (integer) + (integer))))))) diff --git a/source/errpy/vendor/tree-sitter-python/test/corpus/pattern_matching.txt b/source/errpy/vendor/tree-sitter-python/test/corpus/pattern_matching.txt new file mode 100644 index 00000000000..c1d4444cbc8 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/corpus/pattern_matching.txt @@ -0,0 +1,2026 @@ +================================================================================ +Matching specific values +================================================================================ + +match command.split(): + case ["quit"]: + print("Goodbye!") + quit_game() + case ["look"]: + current_room.describe() + case ["get", obj]: + character.get(obj, current_room) + case ["go", direction]: + current_room = current_room.neighbor(direction) + # The rest of your commands go here +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end))))) + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier) + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (expression_statement + (assignment + (identifier) + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))))) + (comment)) + +================================================================================ +Matching multiple values +================================================================================ + +match command.split(): + case ["drop", *objects]: + for obj in objects: + character.drop(obj, current_room) +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_star_pattern + (identifier)))))))) + (block + (for_statement + (identifier) + (identifier) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier) + (identifier)))))))))) + +================================================================================ +Adding a wild card +================================================================================ + +match command.split(): +# ^ conditional + case ["quit"]: ... # Code omitted for brevity + case ["go", direction]: pass + case ["drop", *objects]: pass + case _: + print(f"Sorry, I couldn't understand {command!r}") + +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (comment) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (ellipsis)) + (comment))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_star_pattern + (identifier)))))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_wildcard_pattern)))) + (block + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (interpolation + (identifier) + (type_conversion)) + (string_end))))))))) + +================================================================================ +Or patterns +================================================================================ + +match command.split(): + case ["north"] | ["go", "north"]: + current_room = current_room.neighbor("north") + case ["get", obj] | ["pick", "up", obj] | ["pick", obj, "up"]: + pass +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))) + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (assignment + (identifier) + (call + (attribute + (identifier) + (identifier)) + (argument_list + (string + (string_start) + (string_content) + (string_end)))))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))) + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))) + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (pass_statement))))) + +================================================================================ +As patterns +================================================================================ +match command.split(): + case ["go", ("north" | "south" | "east" | "west") as direction]: + current_room = current_room.neighbor(direction) + +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))) + (case_maybe_star_pattern + (case_pattern + (case_as_pattern + (case_or_pattern + (case_closed_pattern + (case_group_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))) + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))) + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))) + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))))))))) + (identifier))))))))) + (block + (expression_statement + (assignment + (identifier) + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier))))))))) + +================================================================================ +Actually not match +================================================================================ +match = 2 +match, a = 2, 3 +match: int = secret +x, match = 2, "hey, what's up?" +*match, last = [1, 2, 3] +def foo(**match): pass + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (integer))) + (expression_statement + (assignment + (pattern_list + (identifier) + (identifier)) + (list_splat_or_expressions + (integer) + (integer)))) + (expression_statement + (assignment + (identifier) + (type + (identifier)) + (identifier))) + (expression_statement + (assignment + (pattern_list + (identifier) + (identifier)) + (list_splat_or_expressions + (integer) + (string + (string_start) + (string_content) + (string_end))))) + (expression_statement + (assignment + (pattern_list + (list_splat_pattern + (identifier)) + (identifier)) + (list + (integer) + (integer) + (integer)))) + (function_definition + (identifier) + (parameters + (dictionary_splat_pattern + (identifier))) + (block + (pass_statement)))) + +================================================================================ +Match is match but not pattern matching +================================================================================ + +a = [match] +match = [match] +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (list + (identifier)))) + (expression_statement + (assignment + (identifier) + (list + (identifier))))) + +================================================================================ +Match kwargs +================================================================================ + +field = call(match=r".*\.txt$") + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (call + (identifier) + (argument_list + (keyword_argument + (identifier) + (string + (string_start) + (string_content) + (string_end)))))))) + +================================================================================ +Match kwargs 2 +================================================================================ + +field = match(match=match, match) + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (call + (identifier) + (argument_list + (keyword_argument + (identifier) + (identifier)) + (identifier)))))) + +================================================================================ +Case used as identifier +================================================================================ + +a = [case] +case = [case] +just_in_case = call_me(case=True) +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (list + (identifier)))) + (expression_statement + (assignment + (identifier) + (list + (identifier)))) + (expression_statement + (assignment + (identifier) + (call + (identifier) + (argument_list + (keyword_argument + (identifier) + (true))))))) + +================================================================================ +If guards +================================================================================ + +match 0: + case 0 if False: + x = False + case 0 if True: + x = True +-------------------------------------------------------------------------------- + +(module + (match_statement + (integer) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (if_clause + (false)) + (block + (expression_statement + (assignment + (identifier) + (false))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (if_clause + (true)) + (block + (expression_statement + (assignment + (identifier) + (true))))))) + +================================================================================ +literals +================================================================================ +match xxx: + case 3 | -3: + pass + case "something": + pass + case "something" "else": + pass + case 1.0 | -1.0: + pass + case True | False: + pass + case None: + pass +-------------------------------------------------------------------------------- + +(module + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))) + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (concatenated_string + (string + (string_start) + (string_content) + (string_end)) + (string + (string_start) + (string_content) + (string_end))))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (float)))) + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (float)))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (true))) + (case_closed_pattern + (case_literal_pattern + (false))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (none))))) + (block + (pass_statement))))) + +================================================================================ +Comma separated cases +================================================================================ +match (0, 1, 2): + case 0,1: + x = 0 + case 0, *x: + x = 0 +-------------------------------------------------------------------------------- + +(module + (match_statement + (tuple + (integer) + (integer) + (integer)) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))))) + (block + (expression_statement + (assignment + (identifier) + (integer))))) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_star_pattern + (identifier))))) + (block + (expression_statement + (assignment + (identifier) + (integer))))))) + +================================================================================ +case terminating in comma +================================================================================ +match x,: + case *x,: + y = 0 +-------------------------------------------------------------------------------- + +(module + (match_statement + (identifier) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_star_pattern + (identifier)))) + (block + (expression_statement + (assignment + (identifier) + (integer))))))) + +================================================================================ +Multiple match patterns +================================================================================ + +match ..., ...: + case a, b: + return locals() + +-------------------------------------------------------------------------------- + +(module + (match_statement + (ellipsis) + (ellipsis) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))))) + (block + (return_statement + (call + (identifier) + (argument_list))))))) + +================================================================================ +Match match, case case +================================================================================ +match = case = 0 +match match: + case case: + x = 0 +-------------------------------------------------------------------------------- + +(module + (expression_statement + (assignment + (identifier) + (assignment + (identifier) + (integer)))) + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))) + (block + (expression_statement + (assignment + (identifier) + (integer))))))) + +================================================================================ +Walrus match (Issue #150) +================================================================================ +if match := re.fullmatch(r"(-)?(\d+:)?\d?\d:\d\d(\.\d*)?", time, flags=re.ASCII): + return 42 +-------------------------------------------------------------------------------- + +(module + (if_statement + (named_expression + (identifier) + (call + (attribute + (identifier) + (identifier)) + (argument_list + (string + (string_start) + (string_content) + (string_end)) + (identifier) + (keyword_argument + (identifier) + (attribute + (identifier) + (identifier)))))) + (block + (return_statement + (integer))))) + +================================================================================ +Matching objects +================================================================================ +match event.get(): + case Click(position=(x, y)): + handle_click_at(x, y) + case KeyPress(key_name="Q") | Quit(): + game.quit() + case KeyPress(key_name="up arrow"): + game.go_north() + ... + case KeyPress(): + pass # Ignore other keystrokes + case other_event: + raise ValueError(f"Unrecognized event: {other_event}") +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))))))))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))) + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list))) + (expression_statement + (ellipsis)))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)))))) + (block + (pass_statement) + (comment))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))) + (block + (raise_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (interpolation + (identifier)) + (string_end))))))))) + +================================================================================ +Positional arguments +================================================================================ +match event.get(): + case Click((x, y)): + handle_click_at(x, y) +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (identifier)))))))) + +================================================================================ +Constants and enums +================================================================================ +match event.get(): + case Click((x, y), button=Button.LEFT): # This is a left click + handle_click_at(x, y) + case Click(): + pass # ignore other clicks +-------------------------------------------------------------------------------- + +(module + (match_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list)) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_sequence_pattern + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))))) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier) + (identifier))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list + (identifier) + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)))))) + (block + (pass_statement) + (comment))))) + +================================================================================ +Dict mappings +================================================================================ +for action in actions: + match action: + case {"text": message, "color": c}: + ui.set_text_color(c) + ui.display(message) + case {"sleep": duration}: + ui.wait(duration) + case {"sound": url, "format": "ogg"}: + ui.play(url) + case {a.b: c}: + action() + case {"sound": _, "format": _}: + warning("Unsupported audio format") +-------------------------------------------------------------------------------- + +(module + (for_statement + (identifier) + (identifier) + (block + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))) + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (dotted_name + (identifier) + (identifier)) + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_wildcard_pattern))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_wildcard_pattern)))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end))))))))))) + +================================================================================ +Builtin classes +================================================================================ +for action in actions: + match action: + case {"text": str(message), "color": str(c)}: + ui.set_text_color(c) + ui.display(message) + case {"sleep": float(duration)}: + ui.wait(duration) + case {"sound": str(url), "format": "ogg"}: + ui.play(url) + case {"sound": _, "format": _}: + warning("Unsupported audio format") +-------------------------------------------------------------------------------- + +(module + (for_statement + (identifier) + (identifier) + (block + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))) + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier))))))))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end)))))))))))) + (block + (expression_statement + (call + (attribute + (identifier) + (identifier)) + (argument_list + (identifier)))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_mapping_pattern + (case_items_pattern + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_wildcard_pattern))))) + (case_key_value_pattern + (case_literal_pattern + (string + (string_start) + (string_content) + (string_end))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_wildcard_pattern)))))))))) + (block + (expression_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end))))))))))) + +================================================================================ +Complex case patterns on classes +================================================================================ +match x: + case Something(): # no args + foo1() + case Something.Else(): # more complex class name + foo2() + case Point2D(0, 1, 2): # three args + foo3() + case Point3D(x=0, y=0, z=0): # kw args + foo4() + case Point3D(34, x=0, y=0, z=0): # positional + kw args + foo5() + case Point2D(0, 1, 2,): # three args + trail comma + foo6() + case Point3D(x=0, y=0, z=0,): # kw args + trail comma + foo7() + case Point3D(34, x=0, y=0, z=0,): # positional + kw args + trail comma + foo8() +-------------------------------------------------------------------------------- + +(module + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier) + (identifier)))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_class_pattern + (dotted_name + (identifier)) + (case_positional_patterns + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_patterns + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))))) + (case_keyword_pattern + (identifier) + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer)))))))))))) + (comment) + (block + (expression_statement + (call + (identifier) + (argument_list))))))) + +================================================================================ +Complex case patterns on complex numbers +================================================================================ +match x: + case -3 + 5j: + pass + case -3 + 5j as b2: + pass + case 3j as b1, -3 + 5j as b2: + pass + case -3. + 5j: + pass + case 3 - 5.j: + pass +-------------------------------------------------------------------------------- + +(module + (match_statement + (identifier) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_pattern_complex_number + (case_literal_integer_or_float + (integer)) + (case_literal_integer_or_float + (integer))))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_as_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_pattern_complex_number + (case_literal_integer_or_float + (integer)) + (case_literal_integer_or_float + (integer)))))) + (identifier))) + (block + (pass_statement))) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_as_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_integer_or_float + (integer))))) + (identifier)))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_as_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_pattern_complex_number + (case_literal_integer_or_float + (integer)) + (case_literal_integer_or_float + (integer)))))) + (identifier)))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_pattern_complex_number + (case_literal_integer_or_float + (float)) + (case_literal_integer_or_float + (integer))))))) + (block + (pass_statement))) + (case_clause + (case_pattern + (case_or_pattern + (case_closed_pattern + (case_literal_pattern + (case_literal_pattern_complex_number + (case_literal_integer_or_float + (integer)) + (case_literal_integer_or_float + (float))))))) + (block + (pass_statement))))) + +================================================================================ +Maybe sequence pattern right hand side precedence validation +================================================================================ +match x: + case a1, *a2, a3: + pass +-------------------------------------------------------------------------------- + +(module + (match_statement + (identifier) + (case_clause + (case_open_sequence_pattern + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))) + (case_maybe_sequence_pattern + (case_maybe_star_pattern + (case_star_pattern + (identifier))) + (case_maybe_star_pattern + (case_pattern + (case_or_pattern + (case_closed_pattern + (dotted_name + (identifier)))))))) + (block + (pass_statement))))) diff --git a/source/errpy/vendor/tree-sitter-python/test/corpus/statements.txt b/source/errpy/vendor/tree-sitter-python/test/corpus/statements.txt new file mode 100644 index 00000000000..84822feed69 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/corpus/statements.txt @@ -0,0 +1,1438 @@ +================================================================================ +Import statements +================================================================================ + +import a, b +import b.c as d +import a.b.c + +-------------------------------------------------------------------------------- + +(module + (import_statement + (dotted_name + (identifier)) + (dotted_name + (identifier))) + (import_statement + (aliased_import + (dotted_name + (identifier) + (identifier)) + (identifier))) + (import_statement + (dotted_name + (identifier) + (identifier) + (identifier)))) + +================================================================================ +Import-from statements +================================================================================ + +from a import b +from a import * +from a import (b, c) +from a.b import c +from . import b +from .. import b +from .a import b +from ..a import b + +-------------------------------------------------------------------------------- + +(module + (import_from_statement + (dotted_name + (identifier)) + (dotted_name + (identifier))) + (import_from_statement + (dotted_name + (identifier)) + (wildcard_import)) + (import_from_statement + (dotted_name + (identifier)) + (dotted_name + (identifier)) + (dotted_name + (identifier))) + (import_from_statement + (dotted_name + (identifier) + (identifier)) + (dotted_name + (identifier))) + (import_from_statement + (relative_import + (import_prefix)) + (dotted_name + (identifier))) + (import_from_statement + (relative_import + (import_prefix)) + (dotted_name + (identifier))) + (import_from_statement + (relative_import + (import_prefix) + (dotted_name + (identifier))) + (dotted_name + (identifier))) + (import_from_statement + (relative_import + (import_prefix) + (dotted_name + (identifier))) + (dotted_name + (identifier)))) + +================================================================================ +Future import statements +================================================================================ + +from __future__ import print_statement +from __future__ import python4 +from __future__ import (absolute_import, division, print_function, + unicode_literals) +-------------------------------------------------------------------------------- + +(module + (future_import_statement + (dotted_name + (identifier))) + (future_import_statement + (dotted_name + (identifier))) + (future_import_statement + (dotted_name + (identifier)) + (dotted_name + (identifier)) + (dotted_name + (identifier)) + (dotted_name + (identifier)))) + +================================================================================ +Print statements +================================================================================ + +print a +print b, c +print 0 or 1, 1 or 0, +print 0 or 1 +print not True + +-------------------------------------------------------------------------------- + +(module + (print_statement + (identifier)) + (print_statement + (identifier) + (identifier)) + (print_statement + (boolean_operator + (integer) + (integer)) + (boolean_operator + (integer) + (integer))) + (print_statement + (boolean_operator + (integer) + (integer))) + (print_statement + (not_operator + (true)))) + +================================================================================ +Print statements with redirection +================================================================================ + +print >> a +print >> a, "b", "c" + +-------------------------------------------------------------------------------- + +(module + (print_statement + (chevron + (identifier))) + (print_statement + (chevron + (identifier)) + (string + (string_start) + (string_content) + (string_end)) + (string + (string_start) + (string_content) + (string_end)))) + +================================================================================ +Assert statements +================================================================================ + +assert a +assert b, c + +-------------------------------------------------------------------------------- + +(module + (assert_statement + (identifier)) + (assert_statement + (identifier) + (identifier))) + +================================================================================ +Expression statements +================================================================================ + +a +b + c +1, 2, 3 +1, 2, 3, + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (identifier)) + (expression_statement + (binary_operator + (identifier) + (identifier))) + (expression_statement + (integer) + (integer) + (integer)) + (expression_statement + (integer) + (integer) + (integer))) + +================================================================================ +Delete statements +================================================================================ + +del a[1], b[2] + +-------------------------------------------------------------------------------- + +(module + (delete_statement + (expression_list + (subscript + (identifier) + (integer)) + (subscript + (identifier) + (integer))))) + +================================================================================ +Control-flow statements +================================================================================ + +while true: + pass + break + continue + +-------------------------------------------------------------------------------- + +(module + (while_statement + condition: (identifier) + body: (block + (pass_statement) + (break_statement) + (continue_statement)))) + +================================================================================ +Return statements +================================================================================ + +return +return a + b, c +return not b + +-------------------------------------------------------------------------------- + +(module + (return_statement) + (return_statement + (expression_list + (binary_operator + (identifier) + (identifier)) + (identifier))) + (return_statement + (not_operator + (identifier)))) + +================================================================================ +If statements +================================================================================ + +if a: + b + c + +-------------------------------------------------------------------------------- + +(module + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier)) + (expression_statement + (identifier))))) + +================================================================================ +If else statements +================================================================================ + +if a: + b +elif c: + d +else: + f + +if a: + b +else: + f + +if a: b + +if a: b; c + +-------------------------------------------------------------------------------- + +(module + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier))) + alternative: (elif_clause + condition: (identifier) + consequence: (block + (expression_statement + (identifier)))) + alternative: (else_clause + body: (block + (expression_statement + (identifier))))) + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier))) + alternative: (else_clause + body: (block + (expression_statement + (identifier))))) + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier)))) + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier)) + (expression_statement + (identifier))))) + +================================================================================ +Nested if statements +================================================================================ + +if a: + if b: + c + else: + if e: + f +g + +-------------------------------------------------------------------------------- + +(module + (if_statement + condition: (identifier) + consequence: (block + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier))) + alternative: (else_clause + body: (block + (if_statement + condition: (identifier) + consequence: (block + (expression_statement + (identifier))))))))) + (expression_statement + (identifier))) + +================================================================================ +While statements +================================================================================ + +while a: + b + +while c: + d +else: + e + f + +-------------------------------------------------------------------------------- + +(module + (while_statement + condition: (identifier) + body: (block + (expression_statement + (identifier)))) + (while_statement + condition: (identifier) + body: (block + (expression_statement + (identifier))) + alternative: (else_clause + body: (block + (expression_statement + (identifier)) + (expression_statement + (identifier)))))) + +================================================================================ +For statements +================================================================================ + +for line, i in lines: + print line + for character, j in line: + print character +else: + print x + +for x, in [(1,), (2,), (3,)]: + x + +-------------------------------------------------------------------------------- + +(module + (for_statement + left: (pattern_list + (identifier) + (identifier)) + right: (identifier) + body: (block + (print_statement + argument: (identifier)) + (for_statement + left: (pattern_list + (identifier) + (identifier)) + right: (identifier) + body: (block + (print_statement + argument: (identifier))))) + alternative: (else_clause + body: (block + (print_statement + argument: (identifier))))) + (for_statement + left: (pattern_list + (identifier)) + right: (list + (tuple + (integer)) + (tuple + (integer)) + (tuple + (integer))) + body: (block + (expression_statement + (identifier))))) + +================================================================================ +Try statements +================================================================================ + +try: + a +except b: + c +except d as e: + f +except g, h: + i +except: + j + +try: + a +except b: + c + d +else: + e +finally: + f + +try: + a +except* b: + c +except* d as e: + f +else: + g +finally: + h + +-------------------------------------------------------------------------------- + +(module + (try_statement + body: (block + (expression_statement + (identifier))) + (except_clause + (identifier) + (block + (expression_statement + (identifier)))) + (except_clause + (as_pattern + (identifier) + alias: (as_pattern_target + (identifier))) + (block + (expression_statement + (identifier)))) + (except_clause + (identifier) + (identifier) + (block + (expression_statement + (identifier)))) + (except_clause + (block + (expression_statement + (identifier))))) + (try_statement + body: (block + (expression_statement + (identifier))) + (except_clause + (identifier) + (block + (expression_statement + (identifier)) + (expression_statement + (identifier)))) + (else_clause + body: (block + (expression_statement + (identifier)))) + (finally_clause + (block + (expression_statement + (identifier))))) + (try_statement + body: (block + (expression_statement + (identifier))) + (except_group_clause + (identifier) + (block + (expression_statement + (identifier)))) + (except_group_clause + (as_pattern + (identifier) + alias: (as_pattern_target + (identifier))) + (block + (expression_statement + (identifier)))) + (else_clause + body: (block + (expression_statement + (identifier)))) + (finally_clause + (block + (expression_statement + (identifier)))))) + +================================================================================ +With statements +================================================================================ + +with a as b: + c + +with (open('d') as d, + open('e') as e): + f + +with e as f, g as h,: + i + +-------------------------------------------------------------------------------- + +(module + (with_statement + (with_clause + (with_item + (as_pattern + (identifier) + (as_pattern_target + (identifier))))) + (block + (expression_statement + (identifier)))) + (with_statement + (with_clause + (with_item + (as_pattern + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end)))) + (as_pattern_target + (identifier)))) + (with_item + (as_pattern + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end)))) + (as_pattern_target + (identifier))))) + (block + (expression_statement + (identifier)))) + (with_statement + (with_clause + (with_item + (as_pattern + (identifier) + (as_pattern_target + (identifier)))) + (with_item + (as_pattern + (identifier) + (as_pattern_target + (identifier))))) + (block + (expression_statement + (identifier))))) + +================================================================================ +Async Function definitions +================================================================================ + +async def a(): + b + +async def c(d): + e + +async def g(g, h,): + i + +async def c(a: str): + a + +async def c(a: b.c): + a + +async def d(a: Sequence[T]) -> T: + a + +async def i(a, b=c, *c, **d): + a + +async def d(a: str) -> None: + return None + +async def d(a:str="default", b=c) -> None: + return None + +-------------------------------------------------------------------------------- + +(module + (function_definition + name: (identifier) + parameters: (parameters) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (identifier)) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (identifier) + (identifier)) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (identifier) + type: (type + (identifier)))) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (identifier) + type: (type + (attribute + object: (identifier) + attribute: (identifier))))) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (identifier) + type: (type + (subscript + value: (identifier) + subscript: (identifier))))) + return_type: (type + (identifier)) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (identifier) + (default_parameter + name: (identifier) + value: (identifier)) + (list_splat_pattern + (identifier)) + (dictionary_splat_pattern + (identifier))) + body: (block + (expression_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (identifier) + type: (type + (identifier)))) + return_type: (type + (none)) + body: (block + (return_statement + (none)))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_default_parameter + name: (identifier) + type: (type + (identifier)) + value: (string + prefix: (string_start) + string_content: (string_content) + suffix: (string_end))) + (default_parameter + name: (identifier) + value: (identifier))) + return_type: (type + (none)) + body: (block + (return_statement + (none))))) + +================================================================================ +Function definitions +================================================================================ + +def e((a,b)): + return (a,b) + +def e(*list: str): + pass + +def e(**list: str): + pass + +def f(): + nonlocal a + +def g(h, i, /, j, *, k=100, **kwarg): + return h,i,j,k,kwarg + +def h(*a): + i((*a)) + j(((*a))) + +def foo(): + pass \ +\ +\ + +-------------------------------------------------------------------------------- + +(module + (function_definition + name: (identifier) + parameters: (parameters + (tuple_pattern + (identifier) + (identifier))) + body: (block + (return_statement + (tuple + (identifier) + (identifier))))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (list_splat_pattern + (identifier)) + type: (type + (identifier)))) + body: (block + (pass_statement))) + (function_definition + name: (identifier) + parameters: (parameters + (typed_parameter + (dictionary_splat_pattern + (identifier)) + type: (type + (identifier)))) + body: (block + (pass_statement))) + (function_definition + name: (identifier) + parameters: (parameters) + body: (block + (nonlocal_statement + (identifier)))) + (function_definition + name: (identifier) + parameters: (parameters + (identifier) + (identifier) + (positional_separator) + (identifier) + (keyword_separator) + (default_parameter + name: (identifier) + value: (integer)) + (dictionary_splat_pattern + (identifier))) + body: (block + (return_statement + (expression_list + (identifier) + (identifier) + (identifier) + (identifier) + (identifier))))) + (function_definition + name: (identifier) + parameters: (parameters + (list_splat_pattern + (identifier))) + body: (block + (expression_statement + (call + function: (identifier) + arguments: (argument_list + (parenthesized_expression + (list_splat + (identifier)))))) + (expression_statement + (call + function: (identifier) + arguments: (argument_list + (parenthesized_expression + (parenthesized_expression + (list_splat + (identifier))))))))) + (function_definition + name: (identifier) + parameters: (parameters) + body: (block + (pass_statement))) + (line_continuation) + (line_continuation) + (line_continuation)) + +================================================================================ +Empty blocks +================================================================================ + +# These are not actually valid python; blocks +# must contain at least one statement. But we +# allow them because error recovery for empty +# blocks doesn't work very well otherwise. +def a(b, c): + +if d: + print e + while f(): + +-------------------------------------------------------------------------------- + +(module + (comment) + (comment) + (comment) + (comment) + (function_definition + name: (identifier) + parameters: (parameters + (identifier) + (identifier)) + body: (block)) + (if_statement + condition: (identifier) + consequence: (block + (print_statement + argument: (identifier)) + (while_statement + condition: (call + function: (identifier) + arguments: (argument_list)) + body: (block))))) + +================================================================================ +Class definitions +================================================================================ + +class A: + def b(self): + return c +class B(): + pass +class B(method1): + def method1(self): + return +class C(method1, Sequence[T]): + pass +class D(Sequence[T, U]): + pass + +-------------------------------------------------------------------------------- + +(module + (class_definition + (identifier) + (block + (function_definition + (identifier) + (parameters + (identifier)) + (block + (return_statement + (identifier)))))) + (class_definition + (identifier) + (argument_list) + (block + (pass_statement))) + (class_definition + (identifier) + (argument_list + (identifier)) + (block + (function_definition + (identifier) + (parameters + (identifier)) + (block + (return_statement))))) + (class_definition + (identifier) + (argument_list + (identifier) + (subscript + (identifier) + (identifier))) + (block + (pass_statement))) + (class_definition + (identifier) + (argument_list + (subscript + (identifier) + (identifier) + (identifier))) + (block + (pass_statement)))) + +================================================================================ +Class definitions with superclasses +================================================================================ + +class A(B, C): + def d(): + e + +-------------------------------------------------------------------------------- + +(module + (class_definition + (identifier) + (argument_list + (identifier) + (identifier)) + (block + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (identifier))))))) + +================================================================================ +Decorated definitions +================================================================================ + +@a.b +class C: + @d(1) + @e[2].f.g + def f(): + g + + @f() + async def f(): + g + +@buttons[0].clicked.connect +def spam(): + ... + +-------------------------------------------------------------------------------- + +(module + (decorated_definition + (decorator + (attribute + (identifier) + (identifier))) + (class_definition + (identifier) + (block + (decorated_definition + (decorator + (call + (identifier) + (argument_list + (integer)))) + (decorator + (attribute + (attribute + (subscript + (identifier) + (integer)) + (identifier)) + (identifier))) + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (identifier))))) + (decorated_definition + (decorator + (call + (identifier) + (argument_list))) + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (identifier)))))))) + (decorated_definition + (decorator + (attribute + (attribute + (subscript + (identifier) + (integer)) + (identifier)) + (identifier))) + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (ellipsis)))))) + +================================================================================ +Raise statements +================================================================================ + +raise +raise RuntimeError('NO') +raise RunTimeError('NO') from e + +-------------------------------------------------------------------------------- + +(module + (raise_statement) + (raise_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end))))) + (raise_statement + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end)))) + (identifier))) + +================================================================================ +Comments +================================================================================ + +print a +# hi +print b # bye +print c + +-------------------------------------------------------------------------------- + +(module + (print_statement + (identifier)) + (comment) + (print_statement + (identifier)) + (comment) + (print_statement + (identifier))) + +================================================================================ +Comments at different indentation levels +================================================================================ + +if a: + # one +# two + # three + b + # four + c + +-------------------------------------------------------------------------------- + +(module + (if_statement + (identifier) + (comment) + (comment) + (comment) + (block + (expression_statement + (identifier)) + (comment) + (expression_statement + (identifier))))) + +================================================================================ +Comments after dedents +================================================================================ + +if a: + b + +# one +c + +-------------------------------------------------------------------------------- + +(module + (if_statement + (identifier) + (block + (expression_statement + (identifier)))) + (comment) + (expression_statement + (identifier))) + +================================================================================ +Comments at the ends of indented blocks +================================================================================ + +if a: + b + # one + # two + +if c: + d + # three + # four + +def a(): + if b: + b # comment + b # comment + +# five + +-------------------------------------------------------------------------------- + +(module + (if_statement + (identifier) + (block + (expression_statement + (identifier)) + (comment) + (comment))) + (if_statement + (identifier) + (block + (expression_statement + (identifier)) + (comment) + (comment))) + (function_definition + (identifier) + (parameters) + (block + (if_statement + (identifier) + (block + (expression_statement + (identifier)) + (comment))) + (expression_statement + (identifier)) + (comment))) + (comment)) + +================================================================================ +Newline tokens followed by comments +================================================================================ + +print "a" + # We need to recognize the newline *preceding* this comment, because there's no newline after it +-------------------------------------------------------------------------------- + +(module + (print_statement + (string + (string_start) + (string_content) + (string_end))) + (comment)) + +================================================================================ +Global statements +================================================================================ + +global a +global a, b + +-------------------------------------------------------------------------------- + +(module + (global_statement + (identifier)) + (global_statement + (identifier) + (identifier))) + +================================================================================ +Exec statements +================================================================================ + +exec '1+1' +exec 'x+=1' in None +exec 'x+=1' in a, b +func = "print" +exec func in {} + +-------------------------------------------------------------------------------- + +(module + (exec_statement + (string + (string_start) + (string_content) + (string_end))) + (exec_statement + (string + (string_start) + (string_content) + (string_end)) + (none)) + (exec_statement + (string + (string_start) + (string_content) + (string_end)) + (identifier) + (identifier)) + (expression_statement + (assignment + (identifier) + (string + (string_start) + (string_content) + (string_end)))) + (exec_statement + (identifier) + (dictionary))) + +================================================================================ +Extra newlines +================================================================================ + +if a: + + + b() + + + c() + + + def d(): + + + e() + + + f() + +-------------------------------------------------------------------------------- + +(module + (if_statement + (identifier) + (block + (expression_statement + (call + (identifier) + (argument_list))) + (expression_statement + (call + (identifier) + (argument_list))) + (function_definition + (identifier) + (parameters) + (block + (expression_statement + (call + (identifier) + (argument_list))))) + (expression_statement + (call + (identifier) + (argument_list)))))) + +================================================================================ +Escaped newline +================================================================================ + +len("a") \ +or len("aa") + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (boolean_operator + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end)))) + (line_continuation) + (call + (identifier) + (argument_list + (string + (string_start) + (string_content) + (string_end))))))) + +================================================================================ +Statements with semicolons +================================================================================ + +foo; +foo; bar +foo; bar; + +-------------------------------------------------------------------------------- + +(module + (expression_statement + (identifier)) + (expression_statement + (identifier)) + (expression_statement + (identifier)) + (expression_statement + (identifier)) + (expression_statement + (identifier))) diff --git a/source/errpy/vendor/tree-sitter-python/test/highlight/keywords.py b/source/errpy/vendor/tree-sitter-python/test/highlight/keywords.py new file mode 100644 index 00000000000..e80fac22414 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/highlight/keywords.py @@ -0,0 +1,30 @@ +if foo(): +# <- keyword + pass + # <- keyword +elif bar(): +# <- keyword + pass +else: +# <- keyword + foo + +return +# ^ keyword +raise e +# ^ keyword + +for i in foo(): +# <- keyword +# ^ variable +# ^ operator +# ^ function + continue + # <- keyword + break + # <- keyword + +a and b or c +# ^ operator +# ^ variable +# ^ operator diff --git a/source/errpy/vendor/tree-sitter-python/test/highlight/parameters.py b/source/errpy/vendor/tree-sitter-python/test/highlight/parameters.py new file mode 100644 index 00000000000..1c2779eb557 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/highlight/parameters.py @@ -0,0 +1,4 @@ +def g(h, i, /, j, *, k=100, **kwarg): + # ^ operator + # ^ operator + pass diff --git a/source/errpy/vendor/tree-sitter-python/test/highlight/pattern_matching.py b/source/errpy/vendor/tree-sitter-python/test/highlight/pattern_matching.py new file mode 100644 index 00000000000..7a1b0063b82 --- /dev/null +++ b/source/errpy/vendor/tree-sitter-python/test/highlight/pattern_matching.py @@ -0,0 +1,54 @@ +match command.split(): +# ^ keyword + case ["quit"]: + # ^ keyword + print("Goodbye!") + quit_game() + case ["look"]: + # ^ keyword + current_room.describe() + case ["get", obj]: + # ^ keyword + character.get(obj, current_room) + case ["go", direction]: + # ^ keyword + current_room = current_room.neighbor(direction) + # The rest of your commands go here + +match command.split(): +# ^ keyword + case ["drop", *objects]: + # ^ keyword + for obj in objects: + character.drop(obj, current_room) + +match command.split(): +# ^ keyword + case ["quit"]: ... # Code omitted for brevity + case ["go", direction]: pass + case ["drop", *objects]: pass + case _: + print(f"Sorry, I couldn't understand {command!r}") + +match command.split(): +# ^ keyword + case ["north"] | ["go", "north"]: + # ^ keyword + current_room = current_room.neighbor("north") + case ["get", obj] | ["pick", "up", obj] | ["pick", obj, "up"]: + # ^ keyword + pass + +match = 2 +# ^ variable +match, a = 2, 3 +# ^ variable +match: int = secret +# ^ variable +x, match: str = 2, "hey, what's up?" +# <- variable +# ^ variable + +if match := re.fullmatch(r"(-)?(\d+:)?\d?\d:\d\d(\.\d*)?", time, flags=re.ASCII): + # ^ variable + return match