From da1ecb1b3bf5a496f9f3cb20491db7d878fe5933 Mon Sep 17 00:00:00 2001
From: Marlon Bucciarelli <65083942+marlon-luca-bu@users.noreply.github.com>
Date: Thu, 5 Dec 2024 11:45:27 +0100
Subject: [PATCH] Create winnowing module for programming exercises (#315)
---
.../module_programming_apted.xml | 26 +
.../module_programming_winnowing.xml | 26 +
.prospector.yaml | 2 +
assessment_module_manager/modules.docker.ini | 8 +-
assessment_module_manager/modules.ini | 9 +-
docker-compose.prod.yml | 8 +
docker-compose.yml | 8 +
env_example/module_programming_winnowing.env | 3 +
.../module_example/module_example/__main__.py | 4 +-
.../module_programming_apted/poetry.lock | 628 +-
.../module_programming_apted/pyproject.toml | 2 +-
.../.dockerignore | 4 +
.../.vscode/settings.json | 4 +
.../module_programming_winnowing/Dockerfile | 29 +
.../module_programming_winnowing/README.md | 8 +
.../module_programming_winnowing/module.conf | 4 +
.../module_programming_winnowing/__init__.py | 0
.../module_programming_winnowing/__main__.py | 171 +
.../convert_code_to_ast/__init__.py | 0
.../extract_method_and_ast.py | 63 +
.../get_feedback_methods.py | 27 +
.../convert_code_to_ast/languages/__init__.py | 0
.../languages/java/JavaAstVisitor.py | 133 +
.../languages/java/JavaLexer.py | 815 +
.../java/JavaMethodParserListener.py | 73 +
.../languages/java/JavaParser.py | 20451 ++++++++++++++++
.../languages/java/JavaParserVisitor.py | 1240 +
.../languages/java/__init__.py | 0
.../languages/python/Python3Lexer.py | 791 +
.../languages/python/Python3LexerBase.py | 101 +
.../python/Python3MethodParserListener.py | 52 +
.../languages/python/Python3Parser.py | 10288 ++++++++
.../languages/python/Python3ParserBase.py | 10 +
.../languages/python/Python3ParserListener.py | 1083 +
.../languages/python/Python3ParserVisitor.py | 491 +
.../languages/python/PythonAstVisitor.py | 134 +
.../languages/python/__init__.py | 0
.../convert_code_to_ast/method_node.py | 15 +
.../feedback_suggestions/__init__.py | 0
.../feedback_suggestions/batch.py | 12 +
.../code_similarity_computer.py | 133 +
.../feedback_suggestions.py | 198 +
.../remove_overlapping.py | 40 +
.../feedback_suggestions/remove_suspicious.py | 47 +
.../feedback_suggestions/winnowing.py | 170 +
.../test_codes/1.py | 4 +
.../test_codes/__init__.py | 0
.../test_codes/example_simple_lang.sl | 15 +
.../test_codes/nested_for.py | 3 +
.../test_codes/test1.java | 11 +
.../test_codes/test1a.py | 7 +
.../test_codes/test1c.py | 10 +
.../test_codes/test2.java | 11 +
.../test_codes/test2a.py | 12 +
.../test_codes/test2b.py | 9 +
.../test_codes/test3a.py | 5 +
.../test_codes/test3b.py | 6 +
.../test_codes/test4a.py | 5 +
.../test_codes/test4b.py | 6 +
.../test_codes/test5a.py | 14 +
.../test_codes/test5b.py | 8 +
.../test_codes/test5c.py | 4 +
.../test_codes/test6a.py | 4 +
.../test_codes/test7a.py | 6 +
.../test_codes/test7b.py | 10 +
.../test_codes/test8a.py | 10 +
.../test_codes/test8b.py | 12 +
.../module_programming_winnowing/poetry.lock | 1197 +
.../pyproject.toml | 25 +
69 files changed, 38334 insertions(+), 371 deletions(-)
create mode 100644 .idea/runConfigurations/module_programming_apted.xml
create mode 100644 .idea/runConfigurations/module_programming_winnowing.xml
create mode 100644 env_example/module_programming_winnowing.env
create mode 100644 modules/programming/module_programming_winnowing/.dockerignore
create mode 100644 modules/programming/module_programming_winnowing/.vscode/settings.json
create mode 100644 modules/programming/module_programming_winnowing/Dockerfile
create mode 100644 modules/programming/module_programming_winnowing/README.md
create mode 100644 modules/programming/module_programming_winnowing/module.conf
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5c.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test6a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
create mode 100644 modules/programming/module_programming_winnowing/poetry.lock
create mode 100644 modules/programming/module_programming_winnowing/pyproject.toml
diff --git a/.idea/runConfigurations/module_programming_apted.xml b/.idea/runConfigurations/module_programming_apted.xml
new file mode 100644
index 000000000..0465f1c6b
--- /dev/null
+++ b/.idea/runConfigurations/module_programming_apted.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/module_programming_winnowing.xml b/.idea/runConfigurations/module_programming_winnowing.xml
new file mode 100644
index 000000000..5f57e786c
--- /dev/null
+++ b/.idea/runConfigurations/module_programming_winnowing.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.prospector.yaml b/.prospector.yaml
index 2add2d6b2..bd97b9978 100644
--- a/.prospector.yaml
+++ b/.prospector.yaml
@@ -8,6 +8,8 @@ ignore-paths:
- module_programming_themisml/extract_methods/languages
- module_programming_themisml/extract_methods/method_parser_listener.py
- module_programming_apted/convert_code_to_ast/languages
+ - module_programming_winnowing/convert_code_to_ast/languages
+ - module_programming_winnowing/test_codes
mypy:
run: true
diff --git a/assessment_module_manager/modules.docker.ini b/assessment_module_manager/modules.docker.ini
index 53a2b83f8..ba23b665b 100644
--- a/assessment_module_manager/modules.docker.ini
+++ b/assessment_module_manager/modules.docker.ini
@@ -38,7 +38,7 @@ url = http://module-programming-apted:5006
type = programming
supports_evaluation = false
supports_non_graded_feedback_requests = false
-supports_graded_feedback_requests = false
+supports_graded_feedback_requests = true
[module_modeling_llm]
url = http://module-modeling-llm:5008
@@ -47,3 +47,9 @@ supports_evaluation = false
supports_non_graded_feedback_requests = true
supports_graded_feedback_requests = true
+[module_programming_winnowing]
+url = http://module-programming-winnowing:5009
+type = programming
+supports_evaluation = false
+supports_non_graded_feedback_requests = false
+supports_graded_feedback_requests = true
diff --git a/assessment_module_manager/modules.ini b/assessment_module_manager/modules.ini
index cbe4a406c..6baa92caa 100644
--- a/assessment_module_manager/modules.ini
+++ b/assessment_module_manager/modules.ini
@@ -38,7 +38,7 @@ url = http://localhost:5006
type = programming
supports_evaluation = false
supports_non_graded_feedback_requests = false
-supports_graded_feedback_requests = false
+supports_graded_feedback_requests = true
[module_modeling_llm]
url = http://localhost:5008
@@ -47,3 +47,10 @@ supports_evaluation = false
supports_non_graded_feedback_requests = true
supports_graded_feedback_requests = true
+[module_programming_winnowing]
+url = http://localhost:5009
+type = programming
+supports_evaluation = false
+supports_non_graded_feedback_requests = false
+supports_graded_feedback_requests = true
+
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 35a9aef9d..09f54753a 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -71,6 +71,14 @@ services:
- postgres
image: ls1tum/athena_module_programming_apted:${ATHENA_TAG:-develop}
+ module_programming_winnowing:
+ hostname: module-programming-winnowing
+ env_file:
+ - ${ATHENA_ENV_DIR:-./env_example}/module_programming_winnowing.env
+ depends_on:
+ - postgres
+ image: ls1tum/athena_module_programming_winnowing:${ATHENA_TAG:-develop}
+
module_modeling_llm:
hostname: module-modeling-llm
env_file:
diff --git a/docker-compose.yml b/docker-compose.yml
index 54dcefbeb..64f4b221e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -82,3 +82,11 @@ services:
- llm_core
ports:
- "5008:5008"
+
+ module_programming_winnowing:
+ hostname: module-programming-winnowing
+ build: modules/programming/module_programming_winnowing
+ depends_on:
+ - athena
+ ports:
+ - "5009:5009"
diff --git a/env_example/module_programming_winnowing.env b/env_example/module_programming_winnowing.env
new file mode 100644
index 000000000..209f50dda
--- /dev/null
+++ b/env_example/module_programming_winnowing.env
@@ -0,0 +1,3 @@
+PRODUCTION=1
+SECRET=12345abcdef
+DATABASE_URL=postgresql://postgres:password@postgres:5432/athena
diff --git a/modules/programming/module_example/module_example/__main__.py b/modules/programming/module_example/module_example/__main__.py
index 182f160bb..df64d4369 100644
--- a/modules/programming/module_example/module_example/__main__.py
+++ b/modules/programming/module_example/module_example/__main__.py
@@ -1,5 +1,5 @@
"""
-Entry point for the module_example module.
+Entry point for the module_example.
"""
import random
from typing import List, Any
@@ -13,7 +13,7 @@
@config_schema_provider
class Configuration(BaseModel):
- """Example configuration for the module_example module."""
+ """Example configuration for the module_example."""
debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.")
diff --git a/modules/programming/module_programming_apted/poetry.lock b/modules/programming/module_programming_apted/poetry.lock
index 2dfe709a1..8bfd637fe 100644
--- a/modules/programming/module_programming_apted/poetry.lock
+++ b/modules/programming/module_programming_apted/poetry.lock
@@ -13,13 +13,13 @@ files = [
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.6.2.post1"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
]
[package.dependencies]
@@ -27,9 +27,9 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
[[package]]
name = "apted"
@@ -44,19 +44,15 @@ files = [
[[package]]
name = "astroid"
-version = "2.15.8"
+version = "3.3.5"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
- {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
]
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
-wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}
-
[[package]]
name = "athena"
version = "1.0.0"
@@ -77,8 +73,8 @@ uvicorn = "^0.23.0"
[package.source]
type = "git"
url = "https://github.com/ls1intum/Athena.git"
-reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
-resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
subdirectory = "athena"
[[package]]
@@ -119,13 +115,13 @@ files = [
[[package]]
name = "dill"
-version = "0.3.8"
+version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
- {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
]
[package.extras]
@@ -164,19 +160,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "flake8"
-version = "5.0.4"
+version = "7.1.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8.1"
files = [
- {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
- {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
]
[package.dependencies]
mccabe = ">=0.7.0,<0.8.0"
-pycodestyle = ">=2.9.0,<2.10.0"
-pyflakes = ">=2.5.0,<2.6.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
[[package]]
name = "flake8-polyfill"
@@ -226,69 +222,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit",
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.1.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
]
[package.extras]
@@ -352,15 +363,18 @@ socks = ["socksio (==1.*)"]
[[package]]
name = "idna"
-version = "3.8"
+version = "3.10"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.6"
files = [
- {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"},
- {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"},
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
]
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
[[package]]
name = "isort"
version = "5.13.2"
@@ -393,52 +407,6 @@ url = "https://github.com/c2nes/javalang"
reference = "HEAD"
resolved_reference = "566963547575e93d305871d9cb26ce47ff1a036e"
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
-]
-
[[package]]
name = "mccabe"
version = "0.7.0"
@@ -452,38 +420,43 @@ files = [
[[package]]
name = "mypy"
-version = "1.11.2"
+version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
- {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
- {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
- {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
- {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
- {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
- {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
- {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
- {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
- {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
- {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
- {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
- {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
- {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
- {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
- {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
- {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
- {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
- {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
]
[package.dependencies]
@@ -492,6 +465,7 @@ typing-extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
install-types = ["pip"]
mypyc = ["setuptools (>=50)"]
reports = ["lxml"]
@@ -509,13 +483,13 @@ files = [
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -534,90 +508,85 @@ flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "platformdirs"
-version = "4.2.2"
+version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
[[package]]
name = "prospector"
-version = "1.10.3"
+version = "1.13.3"
description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
optional = false
-python-versions = ">=3.7.2,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"},
- {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"},
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
]
[package.dependencies]
dodgy = ">=0.2.1,<0.3.0"
-flake8 = "<6.0.0"
GitPython = ">=3.1.27,<4.0.0"
mccabe = ">=0.7.0,<0.8.0"
packaging = "*"
pep8-naming = ">=0.3.3,<=0.10.0"
pycodestyle = ">=2.9.0"
pydocstyle = ">=2.0.0"
-pyflakes = ">=2.2.0,<3"
-pylint = ">=2.8.3"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
pylint-celery = "0.3"
-pylint-django = ">=2.5,<2.6"
+pylint-django = ">=2.6.1"
pylint-flask = "0.6"
-pylint-plugin-utils = ">=0.7,<0.8"
PyYAML = "*"
-requirements-detector = ">=1.2.0"
+requirements-detector = ">=1.3.2"
setoptconf-tmp = ">=0.3.1,<0.4.0"
toml = ">=0.10.2,<0.11.0"
[package.extras]
with-bandit = ["bandit (>=1.5.1)"]
-with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
with-mypy = ["mypy (>=0.600)"]
with-pyright = ["pyright (>=1.1.3)"]
with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
with-vulture = ["vulture (>=1.5)"]
[[package]]
name = "psycopg2"
-version = "2.9.9"
+version = "2.9.10"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
- {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
- {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
- {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
- {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
- {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
- {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
- {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
- {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
- {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
- {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
]
[[package]]
name = "pycodestyle"
-version = "2.9.1"
+version = "2.12.1"
description = "Python style guide checker"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
- {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
]
[[package]]
@@ -698,31 +667,31 @@ toml = ["tomli (>=1.2.3)"]
[[package]]
name = "pyflakes"
-version = "2.5.0"
+version = "3.2.0"
description = "passive checker of Python programs"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
- {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
]
[[package]]
name = "pylint"
-version = "2.17.7"
+version = "3.3.2"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
- {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
]
[package.dependencies]
-astroid = ">=2.15.8,<=2.17.0-dev0"
+astroid = ">=3.3.5,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomlkit = ">=0.10.1"
@@ -748,22 +717,21 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-django"
-version = "2.5.3"
+version = "2.6.1"
description = "A Pylint plugin to help Pylint understand the Django web framework"
optional = false
-python-versions = "*"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"},
- {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"},
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
]
[package.dependencies]
-pylint = ">=2.0,<3"
-pylint-plugin-utils = ">=0.7"
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
[package.extras]
-for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"]
-with-django = ["Django"]
+with-django = ["Django (>=2.2)"]
[[package]]
name = "pylint-flask"
@@ -780,13 +748,13 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-plugin-utils"
-version = "0.7"
+version = "0.8.2"
description = "Utilities and helpers for writing Pylint plugins"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.7,<4.0"
files = [
- {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"},
- {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"},
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
]
[package.dependencies]
@@ -856,20 +824,19 @@ files = [
[[package]]
name = "requirements-detector"
-version = "1.2.2"
+version = "1.3.2"
description = "Python tool to find and list requirements of a Python project"
optional = false
-python-versions = ">=3.7,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"},
- {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"},
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
]
[package.dependencies]
-astroid = ">=2.0,<3.0"
+astroid = ">=3.0,<4.0"
packaging = ">=21.3"
semver = ">=3.0.0,<4.0.0"
-toml = ">=0.10.2,<0.11.0"
[[package]]
name = "semver"
@@ -942,60 +909,68 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.33"
+version = "2.0.36"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"},
- {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"},
- {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
]
[package.dependencies]
@@ -1009,7 +984,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
-mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"]
@@ -1069,13 +1044,13 @@ files = [
[[package]]
name = "types-requests"
-version = "2.32.0.20240712"
+version = "2.32.0.20241016"
description = "Typing stubs for requests"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"},
- {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"},
+ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"},
+ {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"},
]
[package.dependencies]
@@ -1094,13 +1069,13 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.2.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"},
+ {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"},
]
[package.extras]
@@ -1127,86 +1102,7 @@ h11 = ">=0.8"
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "a53e66a0790b33594a57d50f7007016f3c516ba3759b7b85bdfa15a215fc44b1"
+content-hash = "37947358b1074c5e12a32c34b7db21e77ea08ff533f2b01684dcd0821e6499ae"
diff --git a/modules/programming/module_programming_apted/pyproject.toml b/modules/programming/module_programming_apted/pyproject.toml
index ac3ef5ab0..dee26fc11 100644
--- a/modules/programming/module_programming_apted/pyproject.toml
+++ b/modules/programming/module_programming_apted/pyproject.toml
@@ -9,7 +9,7 @@ license = "MIT"
python = "3.11.*"
# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
# athena = { path = "../athena", develop = true }
-athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"}
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
apted = "^1.0.3"
antlr4-python3-runtime = "^4.13.1"
javalang = {git = "https://github.com/c2nes/javalang"}
diff --git a/modules/programming/module_programming_winnowing/.dockerignore b/modules/programming/module_programming_winnowing/.dockerignore
new file mode 100644
index 000000000..892b6a92a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/.dockerignore
@@ -0,0 +1,4 @@
+.venv
+.vscode
+__pycache__
+.DS_Store
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/.vscode/settings.json b/modules/programming/module_programming_winnowing/.vscode/settings.json
new file mode 100644
index 000000000..9a77d359f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "python.pythonPath": "./.venv/bin/python",
+ "python.analysis.typeCheckingMode": "basic",
+}
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/Dockerfile b/modules/programming/module_programming_winnowing/Dockerfile
new file mode 100644
index 000000000..a0f0db55a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/Dockerfile
@@ -0,0 +1,29 @@
+# syntax=docker/dockerfile:1
+
+# This is the Dockerfile for the module_programming_winnowing.
+
+FROM python:3.11
+LABEL org.opencontainers.image.source=https://github.com/ls1intum/Athena
+
+# Environment variable Python in Docker
+ENV PYTHONUNBUFFERED=1
+
+WORKDIR /code
+
+# Poetry
+RUN pip install --no-cache-dir poetry==1.5.0
+
+# Dependencies
+COPY pyproject.toml poetry.lock ./
+# athena module (from the Dockerfile in the athena folder)
+COPY --from=athena /code /athena
+# install dependencies
+RUN poetry config virtualenvs.create true \
+ && poetry config virtualenvs.in-project true \
+ && poetry install --no-interaction --no-ansi
+
+# Project files
+COPY . ./
+
+# poetry scripts don't work here
+CMD poetry run python -m module_*
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/README.md b/modules/programming/module_programming_winnowing/README.md
new file mode 100644
index 000000000..0bed60b25
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/README.md
@@ -0,0 +1,8 @@
+# Start Directly
+`poetry run module`
+
+# Start with Docker
+`docker-compose up --build`
+
+# Start with Docker in Production Mode
+`docker-compose up --env-file .env.production --build`
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module.conf b/modules/programming/module_programming_winnowing/module.conf
new file mode 100644
index 000000000..4de9dda80
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module.conf
@@ -0,0 +1,4 @@
+[module]
+name = module_programming_winnowing
+type = programming
+port = 5009
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
new file mode 100644
index 000000000..0f9cfd43e
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
@@ -0,0 +1,171 @@
+"""
+Entry point for the module_programming_winnowing module.
+"""
+import random
+from typing import List, Any, cast
+from pydantic import BaseModel, Field
+
+from athena import app, config_schema_provider, submissions_consumer, submission_selector, feedback_consumer, feedback_provider, evaluation_provider, emit_meta
+from athena.programming import Exercise, Submission, Feedback, get_stored_feedback_suggestions, \
+ count_stored_submissions, get_stored_submissions
+from athena.logger import logger
+from athena.storage import store_exercise, store_submissions, store_feedback, store_feedback_suggestions
+from module_programming_winnowing.convert_code_to_ast.get_feedback_methods import get_feedback_method
+from module_programming_winnowing.feedback_suggestions.feedback_suggestions import create_feedback_suggestions
+from module_programming_winnowing.feedback_suggestions.remove_overlapping import filter_overlapping_suggestions
+from module_programming_winnowing.feedback_suggestions.remove_suspicious import filter_suspicious
+
+
+@config_schema_provider
+class Configuration(BaseModel):
+ """Example configuration for the module_programming_winnowing module."""
+ debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.")
+
+
+@submissions_consumer
+def receive_submissions(exercise: Exercise, submissions: List[Submission], module_config: Configuration):
+ logger.info("receive_submissions: Received %d submissions for exercise %d", len(submissions), exercise.id)
+ for submission in submissions:
+ logger.info("- Submission %d", submission.id)
+ zip_content = submission.get_zip()
+ # list the files in the zip
+ for file in zip_content.namelist():
+ logger.info(" - %s", file)
+ # Do something with the submissions
+ logger.info("Doing stuff")
+
+ # Example use module config
+ # If you are not using module_config for your module, you can remove it from the function signature
+ logger.info("Config: %s", module_config)
+ if module_config.debug:
+ emit_meta('debug', True)
+ emit_meta('comment', 'You can add any metadata you want here')
+
+ # Add data to exercise
+ exercise.meta["some_data"] = "some_value"
+ logger.info("- Exercise meta: %s", exercise.meta)
+
+ # Add data to submission
+ for submission in submissions:
+ submission.meta["some_data"] = "some_value"
+ logger.info("- Submission %d meta: %s", submission.id, submission.meta)
+
+ store_exercise(exercise)
+ store_submissions(submissions)
+
+
+@submission_selector
+def select_submission(exercise: Exercise, submissions: List[Submission]) -> Submission:
+ logger.info("select_submission: Received %d submissions for exercise %d", len(submissions), exercise.id)
+ for submission in submissions:
+ logger.info("- Submission %d", submission.id)
+ # Do something with the submissions and return the one that should be assessed next
+ return submissions[0]
+
+
+@feedback_consumer
+def process_incoming_feedback(exercise: Exercise, submission: Submission, feedbacks: List[Feedback]):
+ logger.info("process_feedback: Received %d feedbacks for submission %d of exercise %d", len(feedbacks),
+ submission.id, exercise.id)
+ logger.info("process_feedback: Feedbacks: %s", feedbacks)
+
+ programming_language = exercise.programming_language.lower()
+ # Currently only works with Java and Python - can be extended with more languages if the grammar is available
+ if programming_language not in ["java", "python"]:
+ logger.info("The winnowing module currently only works with Java and Python. Not consuming feedback.")
+ return
+
+ # Remove unreferenced feedbacks
+ feedbacks = list(filter(lambda f: f.file_path is not None and f.line_start is not None, feedbacks))
+
+ # Add method metadata to feedbacks
+ feedbacks_with_method = []
+ for feedback in feedbacks:
+ feedback_method = get_feedback_method(submission, feedback, programming_language)
+ if feedback_method is None:
+ # don't consider feedback without a method
+ continue
+ logger.debug("Feedback #%d: Found method %s", feedback.id, feedback_method.name)
+ feedback.meta["method_name"] = feedback_method.name
+ feedback.meta["method_code"] = feedback_method.source_code
+ feedback.meta["method_line_start"] = feedback_method.line_start
+ feedback.meta["method_line_end"] = feedback_method.line_end
+ feedback.meta["method_ast"] = feedback_method.ast
+ feedbacks_with_method.append(feedback)
+ feedbacks = feedbacks_with_method
+
+ # find all submissions for this exercise
+ exercise_submissions = cast(List[Submission], list(get_stored_submissions(exercise.id)))
+
+ # create feedback suggestions
+ logger.info("Creating feedback suggestions for %d feedbacks", len(feedbacks))
+ feedback_suggestions = create_feedback_suggestions(exercise_submissions, feedbacks, programming_language)
+
+ # additionally, store metadata about how impactful each feedback was, i.e. how many suggestions were given based on it
+ for feedback in feedbacks:
+ # count how many suggestions were given based on this feedback
+ feedback.meta["n_feedback_suggestions"] = len(
+ [f for f in feedback_suggestions if f.meta["original_feedback_id"] == feedback.id])
+ # store the information on the suggestions as well for quicker access later
+ for suggestion in feedback_suggestions:
+ if suggestion.meta["original_feedback_id"] == feedback.id:
+ suggestion.meta["n_feedback_suggestions"] = feedback.meta["n_feedback_suggestions"]
+
+ # save to database
+ # type: ignore
+ store_feedback_suggestions(feedback_suggestions)
+ for feedback in feedbacks:
+ store_feedback(feedback)
+
+ logger.debug("Feedbacks processed")
+
+@feedback_provider
+def suggest_feedback(exercise: Exercise, submission: Submission, is_graded: bool, module_config: Configuration) -> List[Feedback]:
+ logger.info("suggest_feedback: Suggestions for submission %d of exercise %d were requested", submission.id,
+ exercise.id)
+ # Do something with the submission and return a list of feedback
+ # ThemisML currently only works with Java
+ if exercise.programming_language.lower() not in ["java", "python"]:
+ logger.info("The Winnowing module currently only works with Java and Python. Returning no suggestions.")
+ return []
+
+ suggested_feedbacks = cast(List[Feedback], list(get_stored_feedback_suggestions(exercise.id, submission.id)))
+ logger.debug("Found %d feedback suggestions (unfiltered)", len(suggested_feedbacks))
+ suggested_feedbacks = filter_suspicious(suggested_feedbacks, count_stored_submissions(exercise.id))
+ logger.debug("Found %d feedback suggestions (removed suspicious suggestions)", len(suggested_feedbacks))
+ suggested_feedbacks = filter_overlapping_suggestions(suggested_feedbacks)
+ logger.debug("Found %d feedback suggestions (removed overlapping suggestions)", len(suggested_feedbacks))
+
+ logger.info("Suggesting %d filtered feedback suggestions", len(suggested_feedbacks))
+ logger.debug("Suggested Feedback suggestions: %s", suggested_feedbacks)
+
+ return suggested_feedbacks
+
+
+# Only if it makes sense for a module (Optional)
+@evaluation_provider
+def evaluate_feedback(exercise: Exercise, submission: Submission, true_feedbacks: List[Feedback], predicted_feedbacks: List[Feedback]) -> Any:
+ logger.info(
+ "evaluate_feedback: Evaluation for submission %d of exercise %d was requested with %d true and %d predicted feedbacks",
+ submission.id, exercise.id, len(true_feedbacks), len(predicted_feedbacks)
+ )
+
+ # Do something with the true and predicted feedback and return the evaluation result
+ # Generate some example evaluation result
+ evaluation_results = []
+ true_feedback_embeddings = [random.random() for _ in true_feedbacks]
+ predicted_feedback_embeddings = [random.random() for _ in predicted_feedbacks]
+ for feedback, embedding in zip(predicted_feedbacks, predicted_feedback_embeddings):
+ feedback_evaluation = {
+ "feedback_id": feedback.id,
+ "embedding": embedding,
+ "has_match": len([t for t in true_feedback_embeddings if abs(t - embedding) < 0.1]) > 0,
+ "correctness": random.random()
+ }
+ evaluation_results.append(feedback_evaluation)
+
+ return evaluation_results
+
+
+if __name__ == "__main__":
+ app.start()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
new file mode 100644
index 000000000..19dd7d422
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
@@ -0,0 +1,63 @@
+from antlr4 import CommonTokenStream, InputStream
+from antlr4.tree.Tree import ParseTreeWalker
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaLexer
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3MethodParserListener import \
+ MethodParserListener as PythonMethodParserListener
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaMethodParserListener import \
+ MethodParserListener as JavaMethodParserListener
+
+# Grammars for programming languages have different parse rules
+JAVA_PARSE_RULE = "compilationUnit"
+PYTHON_PARSE_RULE = "file_input"
+
+def parse_java_file(source_code: str):
+ return parse_file(source_code, JavaLexer, JavaParser, JAVA_PARSE_RULE, JavaMethodParserListener)
+
+
+def parse_python_file(source_code: str):
+ return parse_file(source_code, Python3Lexer, Python3Parser, PYTHON_PARSE_RULE, PythonMethodParserListener)
+
+
+def parse_file(source_code, lexer_class, parser_class, parse_rule, listener_class):
+ input_stream = InputStream(source_code)
+ lexer = lexer_class(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = parser_class(stream)
+ tree = getattr(parser, parse_rule)()
+
+ listener = listener_class(parser)
+ walker = ParseTreeWalker()
+ walker.walk(listener, tree)
+ print(listener.methods)
+
+ return listener.methods.copy()
+
+
+def parse(source_code: str, programming_language: str):
+ if programming_language == "java":
+ return parse_java_file(source_code)
+ if programming_language == "python":
+ return parse_python_file(source_code)
+ raise ValueError(f"Unsupported programming language: {programming_language}")
+
+
+if __name__ == "__main__":
+ # file_path2 = "../test_files/test_java_1.java"
+ # parse_java_file(file_path2)
+
+ code = """def process_numbers(numbers):
+ total = 0
+ for number in numbers:
+ if number % 2 == 1:
+ total += number
+ else:
+ total -= number
+ if total > 0:
+ print("Positive total:", total)
+ else:
+ print("Non-positive total:", total)"""
+ code1 = parse_python_file(code)
+ code2 = parse_python_file(code)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
new file mode 100644
index 000000000..f1e26a5a8
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
@@ -0,0 +1,27 @@
+from typing import Optional
+
+from athena.programming import Submission, Feedback
+from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse
+from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode
+from athena.logger import logger
+
+
+def get_feedback_method(submission: Submission, feedback: Feedback, programming_language: str) -> Optional[MethodNode]:
+ """Find method that the feedback is on"""
+ if feedback.file_path is None or feedback.line_start is None:
+ return None
+ try:
+ code = submission.get_code(feedback.file_path)
+ except UnicodeDecodeError:
+ logger.warning("File %s in submission %d is not UTF-8 encoded.", feedback.file_path, submission.id)
+ return None
+ methods = parse(code, programming_language)
+ for m in methods:
+ if m.line_start is None or m.line_end is None:
+ continue
+ # method has to contain all feedback lines
+ if m.line_start <= feedback.line_start:
+ feedback_line_end = feedback.line_end if feedback.line_end is not None else feedback.line_start
+ if m.line_end >= feedback_line_end:
+ return m
+ return None
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
new file mode 100644
index 000000000..583b82e04
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
@@ -0,0 +1,133 @@
+from antlr4 import *
+
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaLexer import Java20Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParserVisitor import Java20ParserVisitor
+
+
+class RemoveVariableNames(Java20ParserVisitor):
+ def visitVariableDeclaratorId(self, ctx):
+ if ctx.Identifier():
+ token = ctx.Identifier().symbol
+ token.text = 'x'
+ return self.visitChildren(ctx)
+
+
+class CustomJavaVisitor(Java20ParserVisitor):
+ def __init__(self):
+ self.loop_count = 0
+ self.if_count = 0
+ self.method_count = 0
+
+ def visitWhileStatement(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitForStatement(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitIfStatement(self, ctx):
+ self.if_count += 1
+ return self.visitChildren(ctx)
+
+ def visitMethodDeclaration(self, ctx):
+ self.method_count += 1
+ return self.visitChildren(ctx)
+
+
+def mutate(source_code):
+ input_stream = InputStream(source_code)
+ lexer = Java20Lexer(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = Java20Parser(stream)
+ tree = parser.compilationUnit()
+
+ # Transform the AST
+ transformer = RemoveVariableNames()
+ transformer.visit(tree)
+
+ return tree
+
+
+level0 = []
+level1 = []
+level2 = []
+
+
+def find_levels(node, parser, level=0):
+ if level == 0:
+ level0.append(node.toStringTree(recog=parser))
+ elif level == 1:
+ level1.append(node.toStringTree(recog=parser))
+ elif level == 2:
+ level2.append(node.toStringTree(recog=parser))
+
+ for child in node.getChildren():
+ if isinstance(child, ParserRuleContext):
+ find_levels(child, parser, level=level + 1)
+
+
+def get_children(node, parser):
+ if isinstance(node, TerminalNode):
+ parent = node.getText()
+ children = []
+ else:
+ parent = node.toStringTree(recog=parser)
+ children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for
+ child in node.getChildren()]
+ return parent, children
+
+
+parents1 = []
+parents2 = []
+children1 = []
+children2 = []
+
+
+def get_parent_children_relation(root, parser, level=0):
+ for child in root.getChildren():
+ if isinstance(child, ParserRuleContext):
+ p, c = get_children(child, parser)
+ if level == 0:
+ parents1.append(p)
+ children1.append(c)
+ elif level == 1:
+ parents2.append(p)
+ children2.append(c)
+ get_parent_children_relation(child, parser, level + 1)
+
+
+def analyze(source_code):
+ input_tree = mutate(source_code)
+
+ parser = Java20Parser(CommonTokenStream(Java20Lexer(InputStream(source_code))))
+
+ visitor = CustomJavaVisitor()
+ visitor.visit(input_tree)
+ count_l = visitor.loop_count
+ count_if = visitor.if_count
+ count_f = visitor.method_count
+
+ # Finden der Ebenen
+ find_levels(input_tree, parser)
+
+ # Eltern-Kind-Beziehungen finden
+ get_parent_children_relation(input_tree, parser)
+
+ counts = [count_l, count_if, count_f]
+ levels = [level0, level1, level2]
+
+ return counts, levels
+
+
+if __name__ == "__main__":
+ file_path = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+ }
+ """
+ counts, levels = analyze(file_path)
+ print(counts, levels)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
new file mode 100644
index 000000000..6f1da3778
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
@@ -0,0 +1,815 @@
+# Generated from JavaLexer.g4 by ANTLR 4.13.1
+from antlr4 import *
+from io import StringIO
+import sys
+
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+def serializedATN():
+ return [
+ 4, 0, 126, 1264, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7,
+ 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12,
+ 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19,
+ 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25,
+ 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32,
+ 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38,
+ 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45,
+ 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51,
+ 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58,
+ 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64,
+ 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71,
+ 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77,
+ 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84,
+ 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90,
+ 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97,
+ 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103,
+ 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108,
+ 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114,
+ 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119,
+ 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125,
+ 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130,
+ 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136,
+ 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141,
+ 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147,
+ 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152,
+ 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158,
+ 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163,
+ 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169,
+ 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
+ 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1,
+ 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1,
+ 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1,
+ 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1,
+ 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1,
+ 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1,
+ 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1,
+ 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1,
+ 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1,
+ 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1,
+ 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1,
+ 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1,
+ 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1,
+ 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1,
+ 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1,
+ 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1,
+ 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1,
+ 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1,
+ 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1,
+ 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1,
+ 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1,
+ 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1,
+ 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1,
+ 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1,
+ 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1,
+ 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1,
+ 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1,
+ 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1,
+ 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1,
+ 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1,
+ 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1,
+ 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1,
+ 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 805, 8, 68, 1,
+ 69, 1, 69, 3, 69, 809, 8, 69, 1, 70, 1, 70, 3, 70, 813, 8, 70, 1, 71, 1, 71, 3, 71, 817,
+ 8, 71, 1, 72, 1, 72, 3, 72, 821, 8, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 828, 8,
+ 74, 1, 74, 1, 74, 1, 74, 3, 74, 833, 8, 74, 3, 74, 835, 8, 74, 1, 75, 1, 75, 3, 75, 839,
+ 8, 75, 1, 75, 3, 75, 842, 8, 75, 1, 76, 1, 76, 3, 76, 846, 8, 76, 1, 77, 1, 77, 1, 78, 4,
+ 78, 851, 8, 78, 11, 78, 12, 78, 852, 1, 79, 1, 79, 3, 79, 857, 8, 79, 1, 80, 4, 80, 860,
+ 8, 80, 11, 80, 12, 80, 861, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 870, 8, 82,
+ 1, 82, 3, 82, 873, 8, 82, 1, 83, 1, 83, 1, 84, 4, 84, 878, 8, 84, 11, 84, 12, 84, 879,
+ 1, 85, 1, 85, 3, 85, 884, 8, 85, 1, 86, 1, 86, 3, 86, 888, 8, 86, 1, 86, 1, 86, 1, 87, 1,
+ 87, 3, 87, 894, 8, 87, 1, 87, 3, 87, 897, 8, 87, 1, 88, 1, 88, 1, 89, 4, 89, 902, 8, 89,
+ 11, 89, 12, 89, 903, 1, 90, 1, 90, 3, 90, 908, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92,
+ 1, 92, 3, 92, 916, 8, 92, 1, 92, 3, 92, 919, 8, 92, 1, 93, 1, 93, 1, 94, 4, 94, 924, 8,
+ 94, 11, 94, 12, 94, 925, 1, 95, 1, 95, 3, 95, 930, 8, 95, 1, 96, 1, 96, 3, 96, 934, 8,
+ 96, 1, 97, 1, 97, 1, 97, 3, 97, 939, 8, 97, 1, 97, 3, 97, 942, 8, 97, 1, 97, 3, 97, 945,
+ 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 950, 8, 97, 1, 97, 3, 97, 953, 8, 97, 1, 97, 1, 97, 1,
+ 97, 3, 97, 958, 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 963, 8, 97, 1, 98, 1, 98, 1, 98, 1, 99,
+ 1, 99, 1, 100, 3, 100, 971, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1,
+ 103, 1, 103, 1, 103, 3, 103, 982, 8, 103, 1, 104, 1, 104, 3, 104, 986, 8, 104, 1, 104,
+ 1, 104, 1, 104, 3, 104, 991, 8, 104, 1, 104, 1, 104, 3, 104, 995, 8, 104, 1, 105, 1,
+ 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107,
+ 1, 107, 1, 107, 3, 107, 1011, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108,
+ 1, 108, 1, 108, 3, 108, 1021, 8, 108, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1027,
+ 8, 110, 1, 110, 1, 110, 1, 111, 4, 111, 1032, 8, 111, 11, 111, 12, 111, 1033, 1, 112,
+ 1, 112, 3, 112, 1038, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 1045,
+ 8, 113, 10, 113, 12, 113, 1048, 9, 113, 1, 113, 1, 113, 5, 113, 1052, 8, 113, 10, 113,
+ 12, 113, 1055, 9, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114,
+ 3, 114, 1065, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115,
+ 1, 115, 1, 115, 1, 115, 3, 115, 1078, 8, 115, 1, 116, 1, 116, 1, 117, 1, 117, 4, 117,
+ 1084, 8, 117, 11, 117, 12, 117, 1085, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118,
+ 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122,
+ 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127,
+ 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131,
+ 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137,
+ 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141,
+ 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144,
+ 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 149,
+ 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154,
+ 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158,
+ 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162,
+ 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165,
+ 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 5, 166, 1221, 8, 166, 10, 166, 12, 166,
+ 1224, 9, 166, 1, 167, 3, 167, 1227, 8, 167, 1, 168, 1, 168, 3, 168, 1231, 8, 168, 1,
+ 169, 4, 169, 1234, 8, 169, 11, 169, 12, 169, 1235, 1, 169, 1, 169, 1, 170, 1, 170,
+ 1, 170, 1, 170, 5, 170, 1244, 8, 170, 10, 170, 12, 170, 1247, 9, 170, 1, 170, 1, 170,
+ 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 1258, 8, 171, 10, 171,
+ 12, 171, 1261, 9, 171, 1, 171, 1, 171, 1, 1245, 0, 172, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11,
+ 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17,
+ 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28,
+ 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39,
+ 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50,
+ 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119,
+ 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69,
+ 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 0, 159,
+ 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 0, 181,
+ 0, 183, 0, 185, 0, 187, 0, 189, 0, 191, 0, 193, 70, 195, 0, 197, 0, 199, 0, 201, 0, 203,
+ 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 71, 217, 72, 219, 0, 221, 73, 223, 0,
+ 225, 0, 227, 74, 229, 0, 231, 0, 233, 0, 235, 0, 237, 75, 239, 76, 241, 77, 243, 78,
+ 245, 79, 247, 80, 249, 81, 251, 82, 253, 83, 255, 84, 257, 85, 259, 86, 261, 87, 263,
+ 88, 265, 89, 267, 90, 269, 91, 271, 92, 273, 93, 275, 94, 277, 95, 279, 96, 281, 97,
+ 283, 98, 285, 99, 287, 100, 289, 101, 291, 102, 293, 103, 295, 104, 297, 105, 299,
+ 106, 301, 107, 303, 108, 305, 109, 307, 110, 309, 111, 311, 112, 313, 113, 315,
+ 114, 317, 115, 319, 116, 321, 117, 323, 118, 325, 119, 327, 120, 329, 121, 331,
+ 122, 333, 123, 335, 0, 337, 0, 339, 124, 341, 125, 343, 126, 1, 0, 21, 2, 0, 76, 76,
+ 108, 108, 1, 0, 49, 57, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48,
+ 55, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4,
+ 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 80, 80, 112, 112, 4, 0, 10, 10, 13, 13,
+ 39, 39, 92, 92, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10,
+ 13, 13, 3, 0, 8, 8, 13, 13, 46, 46, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110,
+ 110, 114, 114, 116, 116, 1, 0, 48, 51, 402, 0, 36, 36, 65, 90, 95, 95, 97, 122, 162,
+ 165, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,
+ 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904,
+ 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369,
+ 1369, 1377, 1415, 1423, 1423, 1488, 1514, 1520, 1522, 1547, 1547, 1568, 1610,
+ 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791,
+ 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037,
+ 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144,
+ 2154, 2208, 2228, 2230, 2237, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401,
+ 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486,
+ 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2547, 2555, 2556,
+ 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616,
+ 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728,
+ 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2801,
+ 2801, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867,
+ 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949,
+ 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980,
+ 2984, 2986, 2990, 3001, 3024, 3024, 3065, 3065, 3077, 3084, 3086, 3088, 3090,
+ 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, 3200, 3200, 3205, 3212,
+ 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296,
+ 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406,
+ 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517,
+ 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3647, 3654, 3713, 3714, 3716, 3716,
+ 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749,
+ 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780,
+ 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096,
+ 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208,
+ 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348,
+ 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749,
+ 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824,
+ 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740,
+ 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5905, 5920,
+ 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6107, 6108,
+ 6176, 6263, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480,
+ 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823,
+ 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245,
+ 7247, 7258, 7293, 7296, 7304, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615,
+ 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027,
+ 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132,
+ 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255,
+ 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8352, 8383, 8450, 8450,
+ 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488,
+ 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584,
+ 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520,
+ 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670,
+ 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720,
+ 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329,
+ 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540,
+ 12543, 12549, 12590, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893,
+ 19968, 40938, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538,
+ 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888,
+ 42891, 42926, 42928, 42935, 42999, 43009, 43011, 43013, 43015, 43018, 43020,
+ 43042, 43064, 43064, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259,
+ 43261, 43261, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471,
+ 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586,
+ 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701,
+ 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754,
+ 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816,
+ 43822, 43824, 43866, 43868, 43877, 43888, 44002, 44032, 55203, 55216, 55238,
+ 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285,
+ 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321,
+ 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008,
+ 65020, 65075, 65076, 65101, 65103, 65129, 65129, 65136, 65140, 65142, 65276,
+ 65284, 65284, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474,
+ 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65505, 65509, 65510,
+ 228, 0, 48, 57, 127, 159, 173, 173, 768, 879, 1155, 1159, 1425, 1469, 1471, 1471,
+ 1473, 1474, 1476, 1477, 1479, 1479, 1536, 1541, 1552, 1562, 1564, 1564, 1611,
+ 1641, 1648, 1648, 1750, 1757, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785,
+ 1807, 1807, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2070,
+ 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2260, 2307, 2362, 2364,
+ 2366, 2383, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2435, 2492, 2492, 2494,
+ 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2561, 2563,
+ 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2673, 2677,
+ 2677, 2689, 2691, 2748, 2748, 2750, 2757, 2759, 2761, 2763, 2765, 2786, 2787,
+ 2790, 2799, 2810, 2815, 2817, 2819, 2876, 2876, 2878, 2884, 2887, 2888, 2891,
+ 2893, 2902, 2903, 2914, 2915, 2918, 2927, 2946, 2946, 3006, 3010, 3014, 3016,
+ 3018, 3021, 3031, 3031, 3046, 3055, 3072, 3075, 3134, 3140, 3142, 3144, 3146,
+ 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3201, 3203, 3260, 3260, 3262, 3268,
+ 3270, 3272, 3274, 3277, 3285, 3286, 3298, 3299, 3302, 3311, 3328, 3331, 3387,
+ 3388, 3390, 3396, 3398, 3400, 3402, 3405, 3415, 3415, 3426, 3427, 3430, 3439,
+ 3458, 3459, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570,
+ 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3769,
+ 3771, 3772, 3784, 3789, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895,
+ 3895, 3897, 3897, 3902, 3903, 3953, 3972, 3974, 3975, 3981, 3991, 3993, 4028,
+ 4038, 4038, 4139, 4158, 4160, 4169, 4182, 4185, 4190, 4192, 4194, 4196, 4199,
+ 4205, 4209, 4212, 4226, 4237, 4239, 4253, 4957, 4959, 5906, 5908, 5938, 5940,
+ 5970, 5971, 6002, 6003, 6068, 6099, 6109, 6109, 6112, 6121, 6155, 6158, 6160,
+ 6169, 6277, 6278, 6313, 6313, 6432, 6443, 6448, 6459, 6470, 6479, 6608, 6617,
+ 6679, 6683, 6741, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6832, 6845, 6912,
+ 6916, 6964, 6980, 6992, 7001, 7019, 7027, 7040, 7042, 7073, 7085, 7088, 7097,
+ 7142, 7155, 7204, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7400, 7405,
+ 7405, 7410, 7412, 7415, 7417, 7616, 7673, 7675, 7679, 8203, 8207, 8234, 8238,
+ 8288, 8292, 8294, 8303, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647,
+ 11647, 11744, 11775, 12330, 12335, 12441, 12442, 42528, 42537, 42607, 42607,
+ 42612, 42621, 42654, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019,
+ 43019, 43043, 43047, 43136, 43137, 43188, 43205, 43216, 43225, 43232, 43249,
+ 43264, 43273, 43302, 43309, 43335, 43347, 43392, 43395, 43443, 43456, 43472,
+ 43481, 43493, 43493, 43504, 43513, 43561, 43574, 43587, 43587, 43596, 43597,
+ 43600, 43609, 43643, 43645, 43696, 43696, 43698, 43700, 43703, 43704, 43710,
+ 43711, 43713, 43713, 43755, 43759, 43765, 43766, 44003, 44010, 44012, 44013,
+ 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65071, 65279, 65279, 65296,
+ 65305, 65529, 65531, 3, 0, 9, 10, 12, 13, 32, 32, 1278, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0,
+ 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0,
+ 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0,
+ 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0,
+ 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0,
+ 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0,
+ 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0,
+ 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0,
+ 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0,
+ 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0,
+ 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0,
+ 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113,
+ 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0,
+ 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1,
+ 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0,
+ 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 237, 1, 0,
+ 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247,
+ 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0,
+ 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1,
+ 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0,
+ 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0,
+ 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293,
+ 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0,
+ 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1,
+ 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0,
+ 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0,
+ 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343,
+ 1, 0, 0, 0, 1, 345, 1, 0, 0, 0, 3, 353, 1, 0, 0, 0, 5, 360, 1, 0, 0, 0, 7, 371, 1, 0, 0, 0,
+ 9, 374, 1, 0, 0, 0, 11, 379, 1, 0, 0, 0, 13, 385, 1, 0, 0, 0, 15, 393, 1, 0, 0, 0, 17, 402,
+ 1, 0, 0, 0, 19, 409, 1, 0, 0, 0, 21, 418, 1, 0, 0, 0, 23, 425, 1, 0, 0, 0, 25, 428, 1, 0,
+ 0, 0, 27, 439, 1, 0, 0, 0, 29, 444, 1, 0, 0, 0, 31, 448, 1, 0, 0, 0, 33, 453, 1, 0, 0, 0,
+ 35, 459, 1, 0, 0, 0, 37, 468, 1, 0, 0, 0, 39, 475, 1, 0, 0, 0, 41, 483, 1, 0, 0, 0, 43, 489,
+ 1, 0, 0, 0, 45, 494, 1, 0, 0, 0, 47, 499, 1, 0, 0, 0, 49, 505, 1, 0, 0, 0, 51, 510, 1, 0,
+ 0, 0, 53, 516, 1, 0, 0, 0, 55, 522, 1, 0, 0, 0, 57, 531, 1, 0, 0, 0, 59, 539, 1, 0, 0, 0,
+ 61, 542, 1, 0, 0, 0, 63, 549, 1, 0, 0, 0, 65, 554, 1, 0, 0, 0, 67, 559, 1, 0, 0, 0, 69, 567,
+ 1, 0, 0, 0, 71, 573, 1, 0, 0, 0, 73, 581, 1, 0, 0, 0, 75, 587, 1, 0, 0, 0, 77, 591, 1, 0,
+ 0, 0, 79, 594, 1, 0, 0, 0, 81, 599, 1, 0, 0, 0, 83, 610, 1, 0, 0, 0, 85, 617, 1, 0, 0, 0,
+ 87, 628, 1, 0, 0, 0, 89, 632, 1, 0, 0, 0, 91, 642, 1, 0, 0, 0, 93, 647, 1, 0, 0, 0, 95, 654,
+ 1, 0, 0, 0, 97, 658, 1, 0, 0, 0, 99, 666, 1, 0, 0, 0, 101, 674, 1, 0, 0, 0, 103, 684, 1,
+ 0, 0, 0, 105, 691, 1, 0, 0, 0, 107, 698, 1, 0, 0, 0, 109, 704, 1, 0, 0, 0, 111, 711, 1,
+ 0, 0, 0, 113, 720, 1, 0, 0, 0, 115, 726, 1, 0, 0, 0, 117, 733, 1, 0, 0, 0, 119, 746, 1,
+ 0, 0, 0, 121, 751, 1, 0, 0, 0, 123, 757, 1, 0, 0, 0, 125, 764, 1, 0, 0, 0, 127, 774, 1,
+ 0, 0, 0, 129, 778, 1, 0, 0, 0, 131, 783, 1, 0, 0, 0, 133, 792, 1, 0, 0, 0, 135, 798, 1,
+ 0, 0, 0, 137, 804, 1, 0, 0, 0, 139, 806, 1, 0, 0, 0, 141, 810, 1, 0, 0, 0, 143, 814, 1,
+ 0, 0, 0, 145, 818, 1, 0, 0, 0, 147, 822, 1, 0, 0, 0, 149, 834, 1, 0, 0, 0, 151, 836, 1,
+ 0, 0, 0, 153, 845, 1, 0, 0, 0, 155, 847, 1, 0, 0, 0, 157, 850, 1, 0, 0, 0, 159, 856, 1,
+ 0, 0, 0, 161, 859, 1, 0, 0, 0, 163, 863, 1, 0, 0, 0, 165, 867, 1, 0, 0, 0, 167, 874, 1,
+ 0, 0, 0, 169, 877, 1, 0, 0, 0, 171, 883, 1, 0, 0, 0, 173, 885, 1, 0, 0, 0, 175, 891, 1,
+ 0, 0, 0, 177, 898, 1, 0, 0, 0, 179, 901, 1, 0, 0, 0, 181, 907, 1, 0, 0, 0, 183, 909, 1,
+ 0, 0, 0, 185, 913, 1, 0, 0, 0, 187, 920, 1, 0, 0, 0, 189, 923, 1, 0, 0, 0, 191, 929, 1,
+ 0, 0, 0, 193, 933, 1, 0, 0, 0, 195, 962, 1, 0, 0, 0, 197, 964, 1, 0, 0, 0, 199, 967, 1,
+ 0, 0, 0, 201, 970, 1, 0, 0, 0, 203, 974, 1, 0, 0, 0, 205, 976, 1, 0, 0, 0, 207, 978, 1,
+ 0, 0, 0, 209, 994, 1, 0, 0, 0, 211, 996, 1, 0, 0, 0, 213, 999, 1, 0, 0, 0, 215, 1010, 1,
+ 0, 0, 0, 217, 1020, 1, 0, 0, 0, 219, 1022, 1, 0, 0, 0, 221, 1024, 1, 0, 0, 0, 223, 1031,
+ 1, 0, 0, 0, 225, 1037, 1, 0, 0, 0, 227, 1039, 1, 0, 0, 0, 229, 1064, 1, 0, 0, 0, 231, 1077,
+ 1, 0, 0, 0, 233, 1079, 1, 0, 0, 0, 235, 1081, 1, 0, 0, 0, 237, 1092, 1, 0, 0, 0, 239, 1097,
+ 1, 0, 0, 0, 241, 1099, 1, 0, 0, 0, 243, 1101, 1, 0, 0, 0, 245, 1103, 1, 0, 0, 0, 247, 1105,
+ 1, 0, 0, 0, 249, 1107, 1, 0, 0, 0, 251, 1109, 1, 0, 0, 0, 253, 1111, 1, 0, 0, 0, 255, 1113,
+ 1, 0, 0, 0, 257, 1115, 1, 0, 0, 0, 259, 1119, 1, 0, 0, 0, 261, 1121, 1, 0, 0, 0, 263, 1124,
+ 1, 0, 0, 0, 265, 1126, 1, 0, 0, 0, 267, 1128, 1, 0, 0, 0, 269, 1130, 1, 0, 0, 0, 271, 1132,
+ 1, 0, 0, 0, 273, 1134, 1, 0, 0, 0, 275, 1136, 1, 0, 0, 0, 277, 1138, 1, 0, 0, 0, 279, 1141,
+ 1, 0, 0, 0, 281, 1144, 1, 0, 0, 0, 283, 1147, 1, 0, 0, 0, 285, 1150, 1, 0, 0, 0, 287, 1153,
+ 1, 0, 0, 0, 289, 1156, 1, 0, 0, 0, 291, 1159, 1, 0, 0, 0, 293, 1162, 1, 0, 0, 0, 295, 1165,
+ 1, 0, 0, 0, 297, 1167, 1, 0, 0, 0, 299, 1169, 1, 0, 0, 0, 301, 1171, 1, 0, 0, 0, 303, 1173,
+ 1, 0, 0, 0, 305, 1175, 1, 0, 0, 0, 307, 1177, 1, 0, 0, 0, 309, 1179, 1, 0, 0, 0, 311, 1181,
+ 1, 0, 0, 0, 313, 1184, 1, 0, 0, 0, 315, 1187, 1, 0, 0, 0, 317, 1190, 1, 0, 0, 0, 319, 1193,
+ 1, 0, 0, 0, 321, 1196, 1, 0, 0, 0, 323, 1199, 1, 0, 0, 0, 325, 1202, 1, 0, 0, 0, 327, 1205,
+ 1, 0, 0, 0, 329, 1209, 1, 0, 0, 0, 331, 1213, 1, 0, 0, 0, 333, 1218, 1, 0, 0, 0, 335, 1226,
+ 1, 0, 0, 0, 337, 1230, 1, 0, 0, 0, 339, 1233, 1, 0, 0, 0, 341, 1239, 1, 0, 0, 0, 343, 1253,
+ 1, 0, 0, 0, 345, 346, 5, 101, 0, 0, 346, 347, 5, 120, 0, 0, 347, 348, 5, 112, 0, 0, 348,
+ 349, 5, 111, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 116, 0, 0, 351, 352, 5, 115,
+ 0, 0, 352, 2, 1, 0, 0, 0, 353, 354, 5, 109, 0, 0, 354, 355, 5, 111, 0, 0, 355, 356, 5,
+ 100, 0, 0, 356, 357, 5, 117, 0, 0, 357, 358, 5, 108, 0, 0, 358, 359, 5, 101, 0, 0, 359,
+ 4, 1, 0, 0, 0, 360, 361, 5, 110, 0, 0, 361, 362, 5, 111, 0, 0, 362, 363, 5, 110, 0, 0,
+ 363, 364, 5, 45, 0, 0, 364, 365, 5, 115, 0, 0, 365, 366, 5, 101, 0, 0, 366, 367, 5, 97,
+ 0, 0, 367, 368, 5, 108, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 100, 0, 0, 370, 6,
+ 1, 0, 0, 0, 371, 372, 5, 60, 0, 0, 372, 373, 5, 62, 0, 0, 373, 8, 1, 0, 0, 0, 374, 375,
+ 5, 111, 0, 0, 375, 376, 5, 112, 0, 0, 376, 377, 5, 101, 0, 0, 377, 378, 5, 110, 0, 0,
+ 378, 10, 1, 0, 0, 0, 379, 380, 5, 111, 0, 0, 380, 381, 5, 112, 0, 0, 381, 382, 5, 101,
+ 0, 0, 382, 383, 5, 110, 0, 0, 383, 384, 5, 115, 0, 0, 384, 12, 1, 0, 0, 0, 385, 386, 5,
+ 112, 0, 0, 386, 387, 5, 101, 0, 0, 387, 388, 5, 114, 0, 0, 388, 389, 5, 109, 0, 0, 389,
+ 390, 5, 105, 0, 0, 390, 391, 5, 116, 0, 0, 391, 392, 5, 115, 0, 0, 392, 14, 1, 0, 0, 0,
+ 393, 394, 5, 112, 0, 0, 394, 395, 5, 114, 0, 0, 395, 396, 5, 111, 0, 0, 396, 397, 5,
+ 118, 0, 0, 397, 398, 5, 105, 0, 0, 398, 399, 5, 100, 0, 0, 399, 400, 5, 101, 0, 0, 400,
+ 401, 5, 115, 0, 0, 401, 16, 1, 0, 0, 0, 402, 403, 5, 114, 0, 0, 403, 404, 5, 101, 0, 0,
+ 404, 405, 5, 99, 0, 0, 405, 406, 5, 111, 0, 0, 406, 407, 5, 114, 0, 0, 407, 408, 5, 100,
+ 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 114, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5,
+ 113, 0, 0, 412, 413, 5, 117, 0, 0, 413, 414, 5, 105, 0, 0, 414, 415, 5, 114, 0, 0, 415,
+ 416, 5, 101, 0, 0, 416, 417, 5, 115, 0, 0, 417, 20, 1, 0, 0, 0, 418, 419, 5, 115, 0, 0,
+ 419, 420, 5, 101, 0, 0, 420, 421, 5, 97, 0, 0, 421, 422, 5, 108, 0, 0, 422, 423, 5, 101,
+ 0, 0, 423, 424, 5, 100, 0, 0, 424, 22, 1, 0, 0, 0, 425, 426, 5, 116, 0, 0, 426, 427, 5,
+ 111, 0, 0, 427, 24, 1, 0, 0, 0, 428, 429, 5, 116, 0, 0, 429, 430, 5, 114, 0, 0, 430, 431,
+ 5, 97, 0, 0, 431, 432, 5, 110, 0, 0, 432, 433, 5, 115, 0, 0, 433, 434, 5, 105, 0, 0, 434,
+ 435, 5, 116, 0, 0, 435, 436, 5, 105, 0, 0, 436, 437, 5, 118, 0, 0, 437, 438, 5, 101,
+ 0, 0, 438, 26, 1, 0, 0, 0, 439, 440, 5, 117, 0, 0, 440, 441, 5, 115, 0, 0, 441, 442, 5,
+ 101, 0, 0, 442, 443, 5, 115, 0, 0, 443, 28, 1, 0, 0, 0, 444, 445, 5, 118, 0, 0, 445, 446,
+ 5, 97, 0, 0, 446, 447, 5, 114, 0, 0, 447, 30, 1, 0, 0, 0, 448, 449, 5, 119, 0, 0, 449,
+ 450, 5, 105, 0, 0, 450, 451, 5, 116, 0, 0, 451, 452, 5, 104, 0, 0, 452, 32, 1, 0, 0, 0,
+ 453, 454, 5, 121, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 101, 0, 0, 456, 457, 5,
+ 108, 0, 0, 457, 458, 5, 100, 0, 0, 458, 34, 1, 0, 0, 0, 459, 460, 5, 97, 0, 0, 460, 461,
+ 5, 98, 0, 0, 461, 462, 5, 115, 0, 0, 462, 463, 5, 116, 0, 0, 463, 464, 5, 114, 0, 0, 464,
+ 465, 5, 97, 0, 0, 465, 466, 5, 99, 0, 0, 466, 467, 5, 116, 0, 0, 467, 36, 1, 0, 0, 0, 468,
+ 469, 5, 97, 0, 0, 469, 470, 5, 115, 0, 0, 470, 471, 5, 115, 0, 0, 471, 472, 5, 101, 0,
+ 0, 472, 473, 5, 114, 0, 0, 473, 474, 5, 116, 0, 0, 474, 38, 1, 0, 0, 0, 475, 476, 5, 98,
+ 0, 0, 476, 477, 5, 111, 0, 0, 477, 478, 5, 111, 0, 0, 478, 479, 5, 108, 0, 0, 479, 480,
+ 5, 101, 0, 0, 480, 481, 5, 97, 0, 0, 481, 482, 5, 110, 0, 0, 482, 40, 1, 0, 0, 0, 483,
+ 484, 5, 98, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 101, 0, 0, 486, 487, 5, 97, 0,
+ 0, 487, 488, 5, 107, 0, 0, 488, 42, 1, 0, 0, 0, 489, 490, 5, 98, 0, 0, 490, 491, 5, 121,
+ 0, 0, 491, 492, 5, 116, 0, 0, 492, 493, 5, 101, 0, 0, 493, 44, 1, 0, 0, 0, 494, 495, 5,
+ 99, 0, 0, 495, 496, 5, 97, 0, 0, 496, 497, 5, 115, 0, 0, 497, 498, 5, 101, 0, 0, 498,
+ 46, 1, 0, 0, 0, 499, 500, 5, 99, 0, 0, 500, 501, 5, 97, 0, 0, 501, 502, 5, 116, 0, 0, 502,
+ 503, 5, 99, 0, 0, 503, 504, 5, 104, 0, 0, 504, 48, 1, 0, 0, 0, 505, 506, 5, 99, 0, 0, 506,
+ 507, 5, 104, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 114, 0, 0, 509, 50, 1, 0, 0, 0,
+ 510, 511, 5, 99, 0, 0, 511, 512, 5, 108, 0, 0, 512, 513, 5, 97, 0, 0, 513, 514, 5, 115,
+ 0, 0, 514, 515, 5, 115, 0, 0, 515, 52, 1, 0, 0, 0, 516, 517, 5, 99, 0, 0, 517, 518, 5,
+ 111, 0, 0, 518, 519, 5, 110, 0, 0, 519, 520, 5, 115, 0, 0, 520, 521, 5, 116, 0, 0, 521,
+ 54, 1, 0, 0, 0, 522, 523, 5, 99, 0, 0, 523, 524, 5, 111, 0, 0, 524, 525, 5, 110, 0, 0,
+ 525, 526, 5, 116, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 110, 0, 0, 528, 529, 5,
+ 117, 0, 0, 529, 530, 5, 101, 0, 0, 530, 56, 1, 0, 0, 0, 531, 532, 5, 100, 0, 0, 532, 533,
+ 5, 101, 0, 0, 533, 534, 5, 102, 0, 0, 534, 535, 5, 97, 0, 0, 535, 536, 5, 117, 0, 0, 536,
+ 537, 5, 108, 0, 0, 537, 538, 5, 116, 0, 0, 538, 58, 1, 0, 0, 0, 539, 540, 5, 100, 0, 0,
+ 540, 541, 5, 111, 0, 0, 541, 60, 1, 0, 0, 0, 542, 543, 5, 100, 0, 0, 543, 544, 5, 111,
+ 0, 0, 544, 545, 5, 117, 0, 0, 545, 546, 5, 98, 0, 0, 546, 547, 5, 108, 0, 0, 547, 548,
+ 5, 101, 0, 0, 548, 62, 1, 0, 0, 0, 549, 550, 5, 101, 0, 0, 550, 551, 5, 108, 0, 0, 551,
+ 552, 5, 115, 0, 0, 552, 553, 5, 101, 0, 0, 553, 64, 1, 0, 0, 0, 554, 555, 5, 101, 0, 0,
+ 555, 556, 5, 110, 0, 0, 556, 557, 5, 117, 0, 0, 557, 558, 5, 109, 0, 0, 558, 66, 1, 0,
+ 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 120, 0, 0, 561, 562, 5, 116, 0, 0, 562, 563,
+ 5, 101, 0, 0, 563, 564, 5, 110, 0, 0, 564, 565, 5, 100, 0, 0, 565, 566, 5, 115, 0, 0,
+ 566, 68, 1, 0, 0, 0, 567, 568, 5, 102, 0, 0, 568, 569, 5, 105, 0, 0, 569, 570, 5, 110,
+ 0, 0, 570, 571, 5, 97, 0, 0, 571, 572, 5, 108, 0, 0, 572, 70, 1, 0, 0, 0, 573, 574, 5,
+ 102, 0, 0, 574, 575, 5, 105, 0, 0, 575, 576, 5, 110, 0, 0, 576, 577, 5, 97, 0, 0, 577,
+ 578, 5, 108, 0, 0, 578, 579, 5, 108, 0, 0, 579, 580, 5, 121, 0, 0, 580, 72, 1, 0, 0, 0,
+ 581, 582, 5, 102, 0, 0, 582, 583, 5, 108, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5,
+ 97, 0, 0, 585, 586, 5, 116, 0, 0, 586, 74, 1, 0, 0, 0, 587, 588, 5, 102, 0, 0, 588, 589,
+ 5, 111, 0, 0, 589, 590, 5, 114, 0, 0, 590, 76, 1, 0, 0, 0, 591, 592, 5, 105, 0, 0, 592,
+ 593, 5, 102, 0, 0, 593, 78, 1, 0, 0, 0, 594, 595, 5, 103, 0, 0, 595, 596, 5, 111, 0, 0,
+ 596, 597, 5, 116, 0, 0, 597, 598, 5, 111, 0, 0, 598, 80, 1, 0, 0, 0, 599, 600, 5, 105,
+ 0, 0, 600, 601, 5, 109, 0, 0, 601, 602, 5, 112, 0, 0, 602, 603, 5, 108, 0, 0, 603, 604,
+ 5, 101, 0, 0, 604, 605, 5, 109, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 110, 0, 0,
+ 607, 608, 5, 116, 0, 0, 608, 609, 5, 115, 0, 0, 609, 82, 1, 0, 0, 0, 610, 611, 5, 105,
+ 0, 0, 611, 612, 5, 109, 0, 0, 612, 613, 5, 112, 0, 0, 613, 614, 5, 111, 0, 0, 614, 615,
+ 5, 114, 0, 0, 615, 616, 5, 116, 0, 0, 616, 84, 1, 0, 0, 0, 617, 618, 5, 105, 0, 0, 618,
+ 619, 5, 110, 0, 0, 619, 620, 5, 115, 0, 0, 620, 621, 5, 116, 0, 0, 621, 622, 5, 97, 0,
+ 0, 622, 623, 5, 110, 0, 0, 623, 624, 5, 99, 0, 0, 624, 625, 5, 101, 0, 0, 625, 626, 5,
+ 111, 0, 0, 626, 627, 5, 102, 0, 0, 627, 86, 1, 0, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630,
+ 5, 110, 0, 0, 630, 631, 5, 116, 0, 0, 631, 88, 1, 0, 0, 0, 632, 633, 5, 105, 0, 0, 633,
+ 634, 5, 110, 0, 0, 634, 635, 5, 116, 0, 0, 635, 636, 5, 101, 0, 0, 636, 637, 5, 114,
+ 0, 0, 637, 638, 5, 102, 0, 0, 638, 639, 5, 97, 0, 0, 639, 640, 5, 99, 0, 0, 640, 641,
+ 5, 101, 0, 0, 641, 90, 1, 0, 0, 0, 642, 643, 5, 108, 0, 0, 643, 644, 5, 111, 0, 0, 644,
+ 645, 5, 110, 0, 0, 645, 646, 5, 103, 0, 0, 646, 92, 1, 0, 0, 0, 647, 648, 5, 110, 0, 0,
+ 648, 649, 5, 97, 0, 0, 649, 650, 5, 116, 0, 0, 650, 651, 5, 105, 0, 0, 651, 652, 5, 118,
+ 0, 0, 652, 653, 5, 101, 0, 0, 653, 94, 1, 0, 0, 0, 654, 655, 5, 110, 0, 0, 655, 656, 5,
+ 101, 0, 0, 656, 657, 5, 119, 0, 0, 657, 96, 1, 0, 0, 0, 658, 659, 5, 112, 0, 0, 659, 660,
+ 5, 97, 0, 0, 660, 661, 5, 99, 0, 0, 661, 662, 5, 107, 0, 0, 662, 663, 5, 97, 0, 0, 663,
+ 664, 5, 103, 0, 0, 664, 665, 5, 101, 0, 0, 665, 98, 1, 0, 0, 0, 666, 667, 5, 112, 0, 0,
+ 667, 668, 5, 114, 0, 0, 668, 669, 5, 105, 0, 0, 669, 670, 5, 118, 0, 0, 670, 671, 5,
+ 97, 0, 0, 671, 672, 5, 116, 0, 0, 672, 673, 5, 101, 0, 0, 673, 100, 1, 0, 0, 0, 674, 675,
+ 5, 112, 0, 0, 675, 676, 5, 114, 0, 0, 676, 677, 5, 111, 0, 0, 677, 678, 5, 116, 0, 0,
+ 678, 679, 5, 101, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 116, 0, 0, 681, 682, 5, 101,
+ 0, 0, 682, 683, 5, 100, 0, 0, 683, 102, 1, 0, 0, 0, 684, 685, 5, 112, 0, 0, 685, 686,
+ 5, 117, 0, 0, 686, 687, 5, 98, 0, 0, 687, 688, 5, 108, 0, 0, 688, 689, 5, 105, 0, 0, 689,
+ 690, 5, 99, 0, 0, 690, 104, 1, 0, 0, 0, 691, 692, 5, 114, 0, 0, 692, 693, 5, 101, 0, 0,
+ 693, 694, 5, 116, 0, 0, 694, 695, 5, 117, 0, 0, 695, 696, 5, 114, 0, 0, 696, 697, 5,
+ 110, 0, 0, 697, 106, 1, 0, 0, 0, 698, 699, 5, 115, 0, 0, 699, 700, 5, 104, 0, 0, 700,
+ 701, 5, 111, 0, 0, 701, 702, 5, 114, 0, 0, 702, 703, 5, 116, 0, 0, 703, 108, 1, 0, 0,
+ 0, 704, 705, 5, 115, 0, 0, 705, 706, 5, 116, 0, 0, 706, 707, 5, 97, 0, 0, 707, 708, 5,
+ 116, 0, 0, 708, 709, 5, 105, 0, 0, 709, 710, 5, 99, 0, 0, 710, 110, 1, 0, 0, 0, 711, 712,
+ 5, 115, 0, 0, 712, 713, 5, 116, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 105, 0, 0,
+ 715, 716, 5, 99, 0, 0, 716, 717, 5, 116, 0, 0, 717, 718, 5, 102, 0, 0, 718, 719, 5, 112,
+ 0, 0, 719, 112, 1, 0, 0, 0, 720, 721, 5, 115, 0, 0, 721, 722, 5, 117, 0, 0, 722, 723,
+ 5, 112, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 114, 0, 0, 725, 114, 1, 0, 0, 0, 726,
+ 727, 5, 115, 0, 0, 727, 728, 5, 119, 0, 0, 728, 729, 5, 105, 0, 0, 729, 730, 5, 116,
+ 0, 0, 730, 731, 5, 99, 0, 0, 731, 732, 5, 104, 0, 0, 732, 116, 1, 0, 0, 0, 733, 734, 5,
+ 115, 0, 0, 734, 735, 5, 121, 0, 0, 735, 736, 5, 110, 0, 0, 736, 737, 5, 99, 0, 0, 737,
+ 738, 5, 104, 0, 0, 738, 739, 5, 114, 0, 0, 739, 740, 5, 111, 0, 0, 740, 741, 5, 110,
+ 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 122, 0, 0, 743, 744, 5, 101, 0, 0, 744, 745,
+ 5, 100, 0, 0, 745, 118, 1, 0, 0, 0, 746, 747, 5, 116, 0, 0, 747, 748, 5, 104, 0, 0, 748,
+ 749, 5, 105, 0, 0, 749, 750, 5, 115, 0, 0, 750, 120, 1, 0, 0, 0, 751, 752, 5, 116, 0,
+ 0, 752, 753, 5, 104, 0, 0, 753, 754, 5, 114, 0, 0, 754, 755, 5, 111, 0, 0, 755, 756,
+ 5, 119, 0, 0, 756, 122, 1, 0, 0, 0, 757, 758, 5, 116, 0, 0, 758, 759, 5, 104, 0, 0, 759,
+ 760, 5, 114, 0, 0, 760, 761, 5, 111, 0, 0, 761, 762, 5, 119, 0, 0, 762, 763, 5, 115,
+ 0, 0, 763, 124, 1, 0, 0, 0, 764, 765, 5, 116, 0, 0, 765, 766, 5, 114, 0, 0, 766, 767,
+ 5, 97, 0, 0, 767, 768, 5, 110, 0, 0, 768, 769, 5, 115, 0, 0, 769, 770, 5, 105, 0, 0, 770,
+ 771, 5, 101, 0, 0, 771, 772, 5, 110, 0, 0, 772, 773, 5, 116, 0, 0, 773, 126, 1, 0, 0,
+ 0, 774, 775, 5, 116, 0, 0, 775, 776, 5, 114, 0, 0, 776, 777, 5, 121, 0, 0, 777, 128,
+ 1, 0, 0, 0, 778, 779, 5, 118, 0, 0, 779, 780, 5, 111, 0, 0, 780, 781, 5, 105, 0, 0, 781,
+ 782, 5, 100, 0, 0, 782, 130, 1, 0, 0, 0, 783, 784, 5, 118, 0, 0, 784, 785, 5, 111, 0,
+ 0, 785, 786, 5, 108, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 116, 0, 0, 788, 789, 5,
+ 105, 0, 0, 789, 790, 5, 108, 0, 0, 790, 791, 5, 101, 0, 0, 791, 132, 1, 0, 0, 0, 792,
+ 793, 5, 119, 0, 0, 793, 794, 5, 104, 0, 0, 794, 795, 5, 105, 0, 0, 795, 796, 5, 108,
+ 0, 0, 796, 797, 5, 101, 0, 0, 797, 134, 1, 0, 0, 0, 798, 799, 5, 95, 0, 0, 799, 136, 1,
+ 0, 0, 0, 800, 805, 3, 139, 69, 0, 801, 805, 3, 141, 70, 0, 802, 805, 3, 143, 71, 0, 803,
+ 805, 3, 145, 72, 0, 804, 800, 1, 0, 0, 0, 804, 801, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804,
+ 803, 1, 0, 0, 0, 805, 138, 1, 0, 0, 0, 806, 808, 3, 149, 74, 0, 807, 809, 3, 147, 73,
+ 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 140, 1, 0, 0, 0, 810, 812, 3, 163,
+ 81, 0, 811, 813, 3, 147, 73, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 142,
+ 1, 0, 0, 0, 814, 816, 3, 173, 86, 0, 815, 817, 3, 147, 73, 0, 816, 815, 1, 0, 0, 0, 816,
+ 817, 1, 0, 0, 0, 817, 144, 1, 0, 0, 0, 818, 820, 3, 183, 91, 0, 819, 821, 3, 147, 73,
+ 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 146, 1, 0, 0, 0, 822, 823, 7, 0, 0,
+ 0, 823, 148, 1, 0, 0, 0, 824, 835, 5, 48, 0, 0, 825, 832, 3, 155, 77, 0, 826, 828, 3,
+ 151, 75, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 833, 1, 0, 0, 0, 829, 830,
+ 3, 161, 80, 0, 830, 831, 3, 151, 75, 0, 831, 833, 1, 0, 0, 0, 832, 827, 1, 0, 0, 0, 832,
+ 829, 1, 0, 0, 0, 833, 835, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 835,
+ 150, 1, 0, 0, 0, 836, 841, 3, 153, 76, 0, 837, 839, 3, 157, 78, 0, 838, 837, 1, 0, 0,
+ 0, 838, 839, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 842, 3, 153, 76, 0, 841, 838, 1, 0,
+ 0, 0, 841, 842, 1, 0, 0, 0, 842, 152, 1, 0, 0, 0, 843, 846, 5, 48, 0, 0, 844, 846, 3, 155,
+ 77, 0, 845, 843, 1, 0, 0, 0, 845, 844, 1, 0, 0, 0, 846, 154, 1, 0, 0, 0, 847, 848, 7, 1,
+ 0, 0, 848, 156, 1, 0, 0, 0, 849, 851, 3, 159, 79, 0, 850, 849, 1, 0, 0, 0, 851, 852, 1,
+ 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 158, 1, 0, 0, 0, 854, 857, 3,
+ 153, 76, 0, 855, 857, 5, 95, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 160,
+ 1, 0, 0, 0, 858, 860, 5, 95, 0, 0, 859, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 859,
+ 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 162, 1, 0, 0, 0, 863, 864, 5, 48, 0, 0, 864, 865,
+ 7, 2, 0, 0, 865, 866, 3, 165, 82, 0, 866, 164, 1, 0, 0, 0, 867, 872, 3, 167, 83, 0, 868,
+ 870, 3, 169, 84, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871,
+ 873, 3, 167, 83, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 166, 1, 0, 0, 0, 874,
+ 875, 7, 3, 0, 0, 875, 168, 1, 0, 0, 0, 876, 878, 3, 171, 85, 0, 877, 876, 1, 0, 0, 0, 878,
+ 879, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 170, 1, 0, 0, 0, 881,
+ 884, 3, 167, 83, 0, 882, 884, 5, 95, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0,
+ 884, 172, 1, 0, 0, 0, 885, 887, 5, 48, 0, 0, 886, 888, 3, 161, 80, 0, 887, 886, 1, 0,
+ 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 3, 175, 87, 0, 890, 174, 1,
+ 0, 0, 0, 891, 896, 3, 177, 88, 0, 892, 894, 3, 179, 89, 0, 893, 892, 1, 0, 0, 0, 893,
+ 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 897, 3, 177, 88, 0, 896, 893, 1, 0, 0, 0, 896,
+ 897, 1, 0, 0, 0, 897, 176, 1, 0, 0, 0, 898, 899, 7, 4, 0, 0, 899, 178, 1, 0, 0, 0, 900,
+ 902, 3, 181, 90, 0, 901, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903,
+ 904, 1, 0, 0, 0, 904, 180, 1, 0, 0, 0, 905, 908, 3, 177, 88, 0, 906, 908, 5, 95, 0, 0,
+ 907, 905, 1, 0, 0, 0, 907, 906, 1, 0, 0, 0, 908, 182, 1, 0, 0, 0, 909, 910, 5, 48, 0, 0,
+ 910, 911, 7, 5, 0, 0, 911, 912, 3, 185, 92, 0, 912, 184, 1, 0, 0, 0, 913, 918, 3, 187,
+ 93, 0, 914, 916, 3, 189, 94, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917,
+ 1, 0, 0, 0, 917, 919, 3, 187, 93, 0, 918, 915, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 186,
+ 1, 0, 0, 0, 920, 921, 7, 6, 0, 0, 921, 188, 1, 0, 0, 0, 922, 924, 3, 191, 95, 0, 923, 922,
+ 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 923, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 190,
+ 1, 0, 0, 0, 927, 930, 3, 187, 93, 0, 928, 930, 5, 95, 0, 0, 929, 927, 1, 0, 0, 0, 929,
+ 928, 1, 0, 0, 0, 930, 192, 1, 0, 0, 0, 931, 934, 3, 195, 97, 0, 932, 934, 3, 207, 103,
+ 0, 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 194, 1, 0, 0, 0, 935, 936, 3, 151,
+ 75, 0, 936, 938, 5, 46, 0, 0, 937, 939, 3, 151, 75, 0, 938, 937, 1, 0, 0, 0, 938, 939,
+ 1, 0, 0, 0, 939, 941, 1, 0, 0, 0, 940, 942, 3, 197, 98, 0, 941, 940, 1, 0, 0, 0, 941, 942,
+ 1, 0, 0, 0, 942, 944, 1, 0, 0, 0, 943, 945, 3, 205, 102, 0, 944, 943, 1, 0, 0, 0, 944,
+ 945, 1, 0, 0, 0, 945, 963, 1, 0, 0, 0, 946, 947, 5, 46, 0, 0, 947, 949, 3, 151, 75, 0,
+ 948, 950, 3, 197, 98, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 952, 1, 0, 0,
+ 0, 951, 953, 3, 205, 102, 0, 952, 951, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 963, 1,
+ 0, 0, 0, 954, 955, 3, 151, 75, 0, 955, 957, 3, 197, 98, 0, 956, 958, 3, 205, 102, 0,
+ 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 963, 1, 0, 0, 0, 959, 960, 3, 151, 75,
+ 0, 960, 961, 3, 205, 102, 0, 961, 963, 1, 0, 0, 0, 962, 935, 1, 0, 0, 0, 962, 946, 1,
+ 0, 0, 0, 962, 954, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 196, 1, 0, 0, 0, 964, 965, 3,
+ 199, 99, 0, 965, 966, 3, 201, 100, 0, 966, 198, 1, 0, 0, 0, 967, 968, 7, 7, 0, 0, 968,
+ 200, 1, 0, 0, 0, 969, 971, 3, 203, 101, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0,
+ 971, 972, 1, 0, 0, 0, 972, 973, 3, 151, 75, 0, 973, 202, 1, 0, 0, 0, 974, 975, 7, 8, 0,
+ 0, 975, 204, 1, 0, 0, 0, 976, 977, 7, 9, 0, 0, 977, 206, 1, 0, 0, 0, 978, 979, 3, 209,
+ 104, 0, 979, 981, 3, 211, 105, 0, 980, 982, 3, 205, 102, 0, 981, 980, 1, 0, 0, 0, 981,
+ 982, 1, 0, 0, 0, 982, 208, 1, 0, 0, 0, 983, 985, 3, 163, 81, 0, 984, 986, 5, 46, 0, 0,
+ 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 995, 1, 0, 0, 0, 987, 988, 5, 48, 0, 0,
+ 988, 990, 7, 2, 0, 0, 989, 991, 3, 165, 82, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0,
+ 0, 991, 992, 1, 0, 0, 0, 992, 993, 5, 46, 0, 0, 993, 995, 3, 165, 82, 0, 994, 983, 1,
+ 0, 0, 0, 994, 987, 1, 0, 0, 0, 995, 210, 1, 0, 0, 0, 996, 997, 3, 213, 106, 0, 997, 998,
+ 3, 201, 100, 0, 998, 212, 1, 0, 0, 0, 999, 1000, 7, 10, 0, 0, 1000, 214, 1, 0, 0, 0, 1001,
+ 1002, 5, 116, 0, 0, 1002, 1003, 5, 114, 0, 0, 1003, 1004, 5, 117, 0, 0, 1004, 1011,
+ 5, 101, 0, 0, 1005, 1006, 5, 102, 0, 0, 1006, 1007, 5, 97, 0, 0, 1007, 1008, 5, 108,
+ 0, 0, 1008, 1009, 5, 115, 0, 0, 1009, 1011, 5, 101, 0, 0, 1010, 1001, 1, 0, 0, 0, 1010,
+ 1005, 1, 0, 0, 0, 1011, 216, 1, 0, 0, 0, 1012, 1013, 5, 39, 0, 0, 1013, 1014, 3, 219,
+ 109, 0, 1014, 1015, 5, 39, 0, 0, 1015, 1021, 1, 0, 0, 0, 1016, 1017, 5, 39, 0, 0, 1017,
+ 1018, 3, 229, 114, 0, 1018, 1019, 5, 39, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1012,
+ 1, 0, 0, 0, 1020, 1016, 1, 0, 0, 0, 1021, 218, 1, 0, 0, 0, 1022, 1023, 8, 11, 0, 0, 1023,
+ 220, 1, 0, 0, 0, 1024, 1026, 5, 34, 0, 0, 1025, 1027, 3, 223, 111, 0, 1026, 1025, 1,
+ 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 5, 34, 0, 0, 1029,
+ 222, 1, 0, 0, 0, 1030, 1032, 3, 225, 112, 0, 1031, 1030, 1, 0, 0, 0, 1032, 1033, 1,
+ 0, 0, 0, 1033, 1031, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 224, 1, 0, 0, 0, 1035,
+ 1038, 8, 12, 0, 0, 1036, 1038, 3, 229, 114, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1036,
+ 1, 0, 0, 0, 1038, 226, 1, 0, 0, 0, 1039, 1040, 5, 34, 0, 0, 1040, 1041, 5, 34, 0, 0, 1041,
+ 1042, 5, 34, 0, 0, 1042, 1046, 1, 0, 0, 0, 1043, 1045, 7, 13, 0, 0, 1044, 1043, 1, 0,
+ 0, 0, 1045, 1048, 1, 0, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1049,
+ 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1049, 1053, 7, 14, 0, 0, 1050, 1052, 7, 15, 0, 0,
+ 1051, 1050, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054,
+ 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1057, 5, 34, 0, 0, 1057,
+ 1058, 5, 34, 0, 0, 1058, 1059, 5, 34, 0, 0, 1059, 228, 1, 0, 0, 0, 1060, 1061, 5, 92,
+ 0, 0, 1061, 1065, 7, 16, 0, 0, 1062, 1065, 3, 231, 115, 0, 1063, 1065, 3, 235, 117,
+ 0, 1064, 1060, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1063, 1, 0, 0, 0, 1065, 230,
+ 1, 0, 0, 0, 1066, 1067, 5, 92, 0, 0, 1067, 1078, 3, 177, 88, 0, 1068, 1069, 5, 92, 0,
+ 0, 1069, 1070, 3, 177, 88, 0, 1070, 1071, 3, 177, 88, 0, 1071, 1078, 1, 0, 0, 0, 1072,
+ 1073, 5, 92, 0, 0, 1073, 1074, 3, 233, 116, 0, 1074, 1075, 3, 177, 88, 0, 1075, 1076,
+ 3, 177, 88, 0, 1076, 1078, 1, 0, 0, 0, 1077, 1066, 1, 0, 0, 0, 1077, 1068, 1, 0, 0, 0,
+ 1077, 1072, 1, 0, 0, 0, 1078, 232, 1, 0, 0, 0, 1079, 1080, 7, 17, 0, 0, 1080, 234, 1,
+ 0, 0, 0, 1081, 1083, 5, 92, 0, 0, 1082, 1084, 5, 117, 0, 0, 1083, 1082, 1, 0, 0, 0, 1084,
+ 1085, 1, 0, 0, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1087, 1, 0, 0,
+ 0, 1087, 1088, 3, 167, 83, 0, 1088, 1089, 3, 167, 83, 0, 1089, 1090, 3, 167, 83, 0,
+ 1090, 1091, 3, 167, 83, 0, 1091, 236, 1, 0, 0, 0, 1092, 1093, 5, 110, 0, 0, 1093, 1094,
+ 5, 117, 0, 0, 1094, 1095, 5, 108, 0, 0, 1095, 1096, 5, 108, 0, 0, 1096, 238, 1, 0, 0,
+ 0, 1097, 1098, 5, 40, 0, 0, 1098, 240, 1, 0, 0, 0, 1099, 1100, 5, 41, 0, 0, 1100, 242,
+ 1, 0, 0, 0, 1101, 1102, 5, 123, 0, 0, 1102, 244, 1, 0, 0, 0, 1103, 1104, 5, 125, 0, 0,
+ 1104, 246, 1, 0, 0, 0, 1105, 1106, 5, 91, 0, 0, 1106, 248, 1, 0, 0, 0, 1107, 1108, 5,
+ 93, 0, 0, 1108, 250, 1, 0, 0, 0, 1109, 1110, 5, 59, 0, 0, 1110, 252, 1, 0, 0, 0, 1111,
+ 1112, 5, 44, 0, 0, 1112, 254, 1, 0, 0, 0, 1113, 1114, 5, 46, 0, 0, 1114, 256, 1, 0, 0,
+ 0, 1115, 1116, 5, 46, 0, 0, 1116, 1117, 5, 46, 0, 0, 1117, 1118, 5, 46, 0, 0, 1118,
+ 258, 1, 0, 0, 0, 1119, 1120, 5, 64, 0, 0, 1120, 260, 1, 0, 0, 0, 1121, 1122, 5, 58, 0,
+ 0, 1122, 1123, 5, 58, 0, 0, 1123, 262, 1, 0, 0, 0, 1124, 1125, 5, 61, 0, 0, 1125, 264,
+ 1, 0, 0, 0, 1126, 1127, 5, 62, 0, 0, 1127, 266, 1, 0, 0, 0, 1128, 1129, 5, 60, 0, 0, 1129,
+ 268, 1, 0, 0, 0, 1130, 1131, 5, 33, 0, 0, 1131, 270, 1, 0, 0, 0, 1132, 1133, 5, 126,
+ 0, 0, 1133, 272, 1, 0, 0, 0, 1134, 1135, 5, 63, 0, 0, 1135, 274, 1, 0, 0, 0, 1136, 1137,
+ 5, 58, 0, 0, 1137, 276, 1, 0, 0, 0, 1138, 1139, 5, 45, 0, 0, 1139, 1140, 5, 62, 0, 0,
+ 1140, 278, 1, 0, 0, 0, 1141, 1142, 5, 61, 0, 0, 1142, 1143, 5, 61, 0, 0, 1143, 280,
+ 1, 0, 0, 0, 1144, 1145, 5, 60, 0, 0, 1145, 1146, 5, 61, 0, 0, 1146, 282, 1, 0, 0, 0, 1147,
+ 1148, 5, 62, 0, 0, 1148, 1149, 5, 61, 0, 0, 1149, 284, 1, 0, 0, 0, 1150, 1151, 5, 33,
+ 0, 0, 1151, 1152, 5, 61, 0, 0, 1152, 286, 1, 0, 0, 0, 1153, 1154, 5, 38, 0, 0, 1154,
+ 1155, 5, 38, 0, 0, 1155, 288, 1, 0, 0, 0, 1156, 1157, 5, 124, 0, 0, 1157, 1158, 5, 124,
+ 0, 0, 1158, 290, 1, 0, 0, 0, 1159, 1160, 5, 43, 0, 0, 1160, 1161, 5, 43, 0, 0, 1161,
+ 292, 1, 0, 0, 0, 1162, 1163, 5, 45, 0, 0, 1163, 1164, 5, 45, 0, 0, 1164, 294, 1, 0, 0,
+ 0, 1165, 1166, 5, 43, 0, 0, 1166, 296, 1, 0, 0, 0, 1167, 1168, 5, 45, 0, 0, 1168, 298,
+ 1, 0, 0, 0, 1169, 1170, 5, 42, 0, 0, 1170, 300, 1, 0, 0, 0, 1171, 1172, 5, 47, 0, 0, 1172,
+ 302, 1, 0, 0, 0, 1173,
+74, 5, 38, 0, 0, 1174, 304, 1, 0, 0, 0, 1175, 1176, 5, 124,
+ 0, 0, 1176, 306, 1, 0, 0, 0, 1177, 1178, 5, 94, 0, 0, 1178, 308, 1, 0, 0, 0, 1179, 1180,
+ 5, 37, 0, 0, 1180, 310, 1, 0, 0, 0, 1181, 1182, 5, 43, 0, 0, 1182, 1183, 5, 61, 0, 0,
+ 1183, 312, 1, 0, 0, 0, 1184, 1185, 5, 45, 0, 0, 1185, 1186, 5, 61, 0, 0, 1186, 314,
+ 1, 0, 0, 0, 1187, 1188, 5, 42, 0, 0, 1188, 1189, 5, 61, 0, 0, 1189, 316, 1, 0, 0, 0, 1190,
+ 1191, 5, 47, 0, 0, 1191, 1192, 5, 61, 0, 0, 1192, 318, 1, 0, 0, 0, 1193, 1194, 5, 38,
+ 0, 0, 1194, 1195, 5, 61, 0, 0, 1195, 320, 1, 0, 0, 0, 1196, 1197, 5, 124, 0, 0, 1197,
+ 1198, 5, 61, 0, 0, 1198, 322, 1, 0, 0, 0, 1199, 1200, 5, 94, 0, 0, 1200, 1201, 5, 61,
+ 0, 0, 1201, 324, 1, 0, 0, 0, 1202, 1203, 5, 37, 0, 0, 1203, 1204, 5, 61, 0, 0, 1204,
+ 326, 1, 0, 0, 0, 1205, 1206, 5, 60, 0, 0, 1206, 1207, 5, 60, 0, 0, 1207, 1208, 5, 61,
+ 0, 0, 1208, 328, 1, 0, 0, 0, 1209, 1210, 5, 62, 0, 0, 1210, 1211, 5, 62, 0, 0, 1211,
+ 1212, 5, 61, 0, 0, 1212, 330, 1, 0, 0, 0, 1213, 1214, 5, 62, 0, 0, 1214, 1215, 5, 62,
+ 0, 0, 1215, 1216, 5, 62, 0, 0, 1216, 1217, 5, 61, 0, 0, 1217, 332, 1, 0, 0, 0, 1218,
+ 1222, 3, 335, 167, 0, 1219, 1221, 3, 337, 168, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1224,
+ 1, 0, 0, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 334, 1, 0, 0, 0, 1224,
+ 1222, 1, 0, 0, 0, 1225, 1227, 7, 18, 0, 0, 1226, 1225, 1, 0, 0, 0, 1227, 336, 1, 0, 0,
+ 0, 1228, 1231, 3, 335, 167, 0, 1229, 1231, 7, 19, 0, 0, 1230, 1228, 1, 0, 0, 0, 1230,
+ 1229, 1, 0, 0, 0, 1231, 338, 1, 0, 0, 0, 1232, 1234, 7, 20, 0, 0, 1233, 1232, 1, 0, 0,
+ 0, 1234, 1235, 1, 0, 0, 0, 1235, 1233, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237,
+ 1, 0, 0, 0, 1237, 1238, 6, 169, 0, 0, 1238, 340, 1, 0, 0, 0, 1239, 1240, 5, 47, 0, 0,
+ 1240, 1241, 5, 42, 0, 0, 1241, 1245, 1, 0, 0, 0, 1242, 1244, 9, 0, 0, 0, 1243, 1242,
+ 1, 0, 0, 0, 1244, 1247, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246,
+ 1248, 1, 0, 0, 0, 1247, 1245, 1, 0, 0, 0, 1248, 1249, 5, 42, 0, 0, 1249, 1250, 5, 47,
+ 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 6, 170, 1, 0, 1252, 342, 1, 0, 0, 0, 1253,
+ 1254, 5, 47, 0, 0, 1254, 1255, 5, 47, 0, 0, 1255, 1259, 1, 0, 0, 0, 1256, 1258, 8, 14,
+ 0, 0, 1257, 1256, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1259, 1260,
+ 1, 0, 0, 0, 1260, 1262, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1263, 6, 171, 1, 0,
+ 1263, 344, 1, 0, 0, 0, 57, 0, 804, 808, 812, 816, 820, 827, 832, 834, 838, 841, 845,
+ 852, 856, 861, 869, 872, 879, 883, 887, 893, 896, 903, 907, 915, 918, 925, 929,
+ 933, 938, 941, 944, 949, 952, 957, 962, 970, 981, 985, 990, 994, 1010, 1020, 1026,
+ 1033, 1037, 1046, 1053, 1064, 1077, 1085, 1222, 1226, 1230, 1235, 1245, 1259,
+ 2, 6, 0, 0, 0, 1, 0
+ ]
+
+
+class Java20Lexer(Lexer):
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ EXPORTS = 1
+ MODULE = 2
+ NONSEALED = 3
+ OACA = 4
+ OPEN = 5
+ OPENS = 6
+ PERMITS = 7
+ PROVIDES = 8
+ RECORD = 9
+ REQUIRES = 10
+ SEALED = 11
+ TO = 12
+ TRANSITIVE = 13
+ USES = 14
+ VAR = 15
+ WITH = 16
+ YIELD = 17
+ ABSTRACT = 18
+ ASSERT = 19
+ BOOLEAN = 20
+ BREAK = 21
+ BYTE = 22
+ CASE = 23
+ CATCH = 24
+ CHAR = 25
+ CLASS = 26
+ CONST = 27
+ CONTINUE = 28
+ DEFAULT = 29
+ DO = 30
+ DOUBLE = 31
+ ELSE = 32
+ ENUM = 33
+ EXTENDS = 34
+ FINAL = 35
+ FINALLY = 36
+ FLOAT = 37
+ FOR = 38
+ IF = 39
+ GOTO = 40
+ IMPLEMENTS = 41
+ IMPORT = 42
+ INSTANCEOF = 43
+ INT = 44
+ INTERFACE = 45
+ LONG = 46
+ NATIVE = 47
+ NEW = 48
+ PACKAGE = 49
+ PRIVATE = 50
+ PROTECTED = 51
+ PUBLIC = 52
+ RETURN = 53
+ SHORT = 54
+ STATIC = 55
+ STRICTFP = 56
+ SUPER = 57
+ SWITCH = 58
+ SYNCHRONIZED = 59
+ THIS = 60
+ THROW = 61
+ THROWS = 62
+ TRANSIENT = 63
+ TRY = 64
+ VOID = 65
+ VOLATILE = 66
+ WHILE = 67
+ UNDER_SCORE = 68
+ IntegerLiteral = 69
+ FloatingPointLiteral = 70
+ BooleanLiteral = 71
+ CharacterLiteral = 72
+ StringLiteral = 73
+ TextBlock = 74
+ NullLiteral = 75
+ LPAREN = 76
+ RPAREN = 77
+ LBRACE = 78
+ RBRACE = 79
+ LBRACK = 80
+ RBRACK = 81
+ SEMI = 82
+ COMMA = 83
+ DOT = 84
+ ELLIPSIS = 85
+ AT = 86
+ COLONCOLON = 87
+ ASSIGN = 88
+ GT = 89
+ LT = 90
+ BANG = 91
+ TILDE = 92
+ QUESTION = 93
+ COLON = 94
+ ARROW = 95
+ EQUAL = 96
+ LE = 97
+ GE = 98
+ NOTEQUAL = 99
+ AND = 100
+ OR = 101
+ INC = 102
+ DEC = 103
+ ADD = 104
+ SUB = 105
+ MUL = 106
+ DIV = 107
+ BITAND = 108
+ BITOR = 109
+ CARET = 110
+ MOD = 111
+ ADD_ASSIGN = 112
+ SUB_ASSIGN = 113
+ MUL_ASSIGN = 114
+ DIV_ASSIGN = 115
+ AND_ASSIGN = 116
+ OR_ASSIGN = 117
+ XOR_ASSIGN = 118
+ MOD_ASSIGN = 119
+ LSHIFT_ASSIGN = 120
+ RSHIFT_ASSIGN = 121
+ URSHIFT_ASSIGN = 122
+ Identifier = 123
+ WS = 124
+ COMMENT = 125
+ LINE_COMMENT = 126
+
+ channelNames = [u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN"]
+
+ modeNames = ["DEFAULT_MODE"]
+
+ literalNames = ["",
+ "'exports'", "'module'", "'non-sealed'", "'<>'", "'open'", "'opens'",
+ "'permits'", "'provides'", "'record'", "'requires'", "'sealed'",
+ "'to'", "'transitive'", "'uses'", "'var'", "'with'", "'yield'",
+ "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'",
+ "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'",
+ "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'",
+ "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'",
+ "'implements'", "'import'", "'instanceof'", "'int'", "'interface'",
+ "'long'", "'native'", "'new'", "'package'", "'private'", "'protected'",
+ "'public'", "'return'", "'short'", "'static'", "'strictfp'",
+ "'super'", "'switch'", "'synchronized'", "'this'", "'throw'",
+ "'throws'", "'transient'", "'try'", "'void'", "'volatile'",
+ "'while'", "'_'", "'null'", "'('", "')'", "'{'", "'}'", "'['",
+ "']'", "';'", "','", "'.'", "'...'", "'@'", "'::'", "'='", "'>'",
+ "'<'", "'!'", "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='",
+ "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", "'*'",
+ "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='", "'*='", "'/='",
+ "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'>>>='"]
+
+ symbolicNames = ["",
+ "EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS", "PERMITS",
+ "PROVIDES", "RECORD", "REQUIRES", "SEALED", "TO", "TRANSITIVE",
+ "USES", "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN",
+ "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST",
+ "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS",
+ "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE",
+ "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN",
+ "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE",
+ "WHILE", "UNDER_SCORE", "IntegerLiteral", "FloatingPointLiteral",
+ "BooleanLiteral", "CharacterLiteral", "StringLiteral", "TextBlock",
+ "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK",
+ "RBRACK", "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON",
+ "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON",
+ "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC",
+ "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET",
+ "MOD", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN",
+ "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT",
+ "LINE_COMMENT"]
+
+ ruleNames = ["EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS",
+ "PERMITS", "PROVIDES", "RECORD", "REQUIRES", "SEALED",
+ "TO", "TRANSITIVE", "USES", "VAR", "WITH", "YIELD", "ABSTRACT",
+ "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH",
+ "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO",
+ "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY",
+ "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT",
+ "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN",
+ "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
+ "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral",
+ "DecimalIntegerLiteral", "HexIntegerLiteral", "OctalIntegerLiteral",
+ "BinaryIntegerLiteral", "IntegerTypeSuffix", "DecimalNumeral",
+ "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores",
+ "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits",
+ "HexDigit", "HexDigitsAndUnderscores", "HexDigitOrUnderscore",
+ "OctalNumeral", "OctalDigits", "OctalDigit", "OctalDigitsAndUnderscores",
+ "OctalDigitOrUnderscore", "BinaryNumeral", "BinaryDigits",
+ "BinaryDigit", "BinaryDigitsAndUnderscores", "BinaryDigitOrUnderscore",
+ "FloatingPointLiteral", "DecimalFloatingPointLiteral",
+ "ExponentPart", "ExponentIndicator", "SignedInteger",
+ "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral",
+ "HexSignificand", "BinaryExponent", "BinaryExponentIndicator",
+ "BooleanLiteral", "CharacterLiteral", "SingleCharacter",
+ "StringLiteral", "StringCharacters", "StringCharacter",
+ "TextBlock", "EscapeSequence", "OctalEscape", "ZeroToThree",
+ "UnicodeEscape", "NullLiteral", "LPAREN", "RPAREN", "LBRACE",
+ "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT",
+ "ELLIPSIS", "AT", "COLONCOLON", "ASSIGN", "GT", "LT",
+ "BANG", "TILDE", "QUESTION", "COLON", "ARROW", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD",
+ "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD",
+ "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN",
+ "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier",
+ "IdentifierStart", "IdentifierPart", "WS", "COMMENT",
+ "LINE_COMMENT"]
+
+ grammarFileName = "Java20Lexer.g4"
+
+ def __init__(self, input=None, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
+ self._actions = None
+ self._predicates = None
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
new file mode 100644
index 000000000..f3d825c72
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
@@ -0,0 +1,73 @@
+# Generated from JavaParser.g4 by ANTLR 4.11.1
+from dataclasses import dataclass
+from antlr4 import *
+
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser
+
+
+@dataclass
+class MethodNode:
+ line_start: int
+ line_end: int
+ source_code: str
+ name: str
+ ast: any
+ ast_string: str
+
+ def __str__(self):
+ return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})"
+
+
+def _extract_method_name(ctx):
+ # Navigate through the methodHeader context to find the method name
+ if hasattr(ctx, 'methodHeader'):
+ method_header = ctx.methodHeader()
+ if method_header:
+ method_declarator = method_header.methodDeclarator()
+ if method_declarator and hasattr(method_declarator, 'Identifier'):
+ return method_declarator.Identifier().getText()
+ elif method_declarator and hasattr(method_declarator, 'identifier'):
+ return method_declarator.identifier().getText()
+ else:
+ # Traverse the children to find the identifier
+ for child in method_declarator.children:
+ if isinstance(child, TerminalNode) and child.symbol.type == JavaParser.Identifier:
+ return child.getText()
+ return "Unknown"
+
+
+class MethodParserListener(ParseTreeListener):
+ def __init__(self, parser):
+ self.methods = []
+ self.parser = parser
+
+ def enterMethodDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterConstructorDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterGenericMethodDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterGenericConstructorDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def _enter_method(self, ctx):
+ ast_string = ctx.toStringTree(recog=self.parser)
+ method_name = _extract_method_name(ctx)
+
+ me = MethodNode(
+ line_start=ctx.start.line,
+ line_end=ctx.stop.line,
+ source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop),
+ name=method_name,
+ ast=ctx,
+ ast_string=ast_string
+ )
+ self.methods.append(me)
+ print("Method found:", method_name)
+
+ def enterIdentifier(self, ctx: ParserRuleContext):
+ if self.methods and self.methods[-1].name is None:
+ self.methods[-1].name = ctx.getText()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
new file mode 100644
index 000000000..76380e530
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
@@ -0,0 +1,20451 @@
+# Generated from JavaParser.g4 by ANTLR 4.13.1
+# encoding: utf-8
+from antlr4 import *
+from io import StringIO
+import sys
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+def serializedATN():
+ return [
+ 4, 1, 126, 2946, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6,
+ 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7,
+ 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2,
+ 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7,
+ 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
+ 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7,
+ 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2,
+ 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7,
+ 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2,
+ 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
+ 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2,
+ 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7,
+ 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2,
+ 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7,
+ 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2,
+ 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103,
+ 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109,
+ 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114,
+ 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120,
+ 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125,
+ 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131,
+ 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136,
+ 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142,
+ 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147,
+ 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153,
+ 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158,
+ 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164,
+ 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169,
+ 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175,
+ 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180,
+ 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186,
+ 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191,
+ 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197,
+ 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202,
+ 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208,
+ 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213,
+ 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219,
+ 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224,
+ 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230,
+ 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235,
+ 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241,
+ 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1,
+ 2, 1, 2, 1, 3, 1, 3, 1, 4, 5, 4, 501, 8, 4, 10, 4, 12, 4, 504, 9, 4, 1, 4, 1, 4, 3, 4, 508,
+ 8, 4, 1, 5, 1, 5, 3, 5, 512, 8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 521, 8, 8,
+ 1, 9, 1, 9, 5, 9, 525, 8, 9, 10, 9, 12, 9, 528, 9, 9, 1, 9, 1, 9, 3, 9, 532, 8, 9, 1, 9, 3,
+ 9, 535, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 540, 8, 10, 1, 10, 5, 10, 543, 8, 10, 10, 10,
+ 12, 10, 546, 9, 10, 1, 10, 1, 10, 3, 10, 550, 8, 10, 1, 10, 3, 10, 553, 8, 10, 1, 11, 5,
+ 11, 556, 8, 11, 10, 11, 12, 11, 559, 9, 11, 1, 11, 1, 11, 3, 11, 563, 8, 11, 1, 11, 1,
+ 11, 1, 11, 5, 11, 568, 8, 11, 10, 11, 12, 11, 571, 9, 11, 1, 11, 1, 11, 3, 11, 575, 8,
+ 11, 1, 11, 1, 11, 1, 11, 5, 11, 580, 8, 11, 10, 11, 12, 11, 583, 9, 11, 1, 11, 1, 11, 3,
+ 11, 587, 8, 11, 3, 11, 589, 8, 11, 1, 12, 1, 12, 1, 13, 5, 13, 594, 8, 13, 10, 13, 12,
+ 13, 597, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1,
+ 14, 3, 14, 610, 8, 14, 1, 15, 5, 15, 613, 8, 15, 10, 15, 12, 15, 616, 9, 15, 1, 15, 1,
+ 15, 1, 15, 5, 15, 621, 8, 15, 10, 15, 12, 15, 624, 9, 15, 1, 15, 1, 15, 5, 15, 628, 8,
+ 15, 10, 15, 12, 15, 631, 9, 15, 1, 16, 5, 16, 634, 8, 16, 10, 16, 12, 16, 637, 9, 16,
+ 1, 16, 1, 16, 3, 16, 641, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 649, 8,
+ 18, 10, 18, 12, 18, 652, 9, 18, 3, 18, 654, 8, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1,
+ 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 666, 8, 21, 10, 21, 12, 21, 669, 9, 21, 1, 22, 1,
+ 22, 3, 22, 673, 8, 22, 1, 23, 5, 23, 676, 8, 23, 10, 23, 12, 23, 679, 9, 23, 1, 23, 1,
+ 23, 3, 23, 683, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 689, 8, 24, 1, 25, 1, 25, 1, 25,
+ 3, 25, 694, 8, 25, 1, 26, 1, 26, 1, 26, 3, 26, 699, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 704,
+ 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 709, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 714, 8, 29, 1,
+ 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 3, 31, 723, 8, 31, 1, 32, 1, 32, 3, 32, 727,
+ 8, 32, 1, 33, 3, 33, 730, 8, 33, 1, 33, 5, 33, 733, 8, 33, 10, 33, 12, 33, 736, 9, 33,
+ 1, 33, 5, 33, 739, 8, 33, 10, 33, 12, 33, 742, 9, 33, 1, 34, 5, 34, 745, 8, 34, 10, 34,
+ 12, 34, 748, 9, 34, 1, 34, 1, 34, 1, 35, 5, 35, 753, 8, 35, 10, 35, 12, 35, 756, 9, 35,
+ 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 762, 8, 35, 10, 35, 12, 35, 765, 9, 35, 1, 35, 1, 35,
+ 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 775, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38,
+ 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40,
+ 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 804, 8, 42,
+ 1, 43, 5, 43, 807, 8, 43, 10, 43, 12, 43, 810, 9, 43, 1, 43, 3, 43, 813, 8, 43, 1, 43,
+ 1, 43, 1, 43, 1, 43, 5, 43, 819, 8, 43, 10, 43, 12, 43, 822, 9, 43, 1, 43, 1, 43, 5, 43,
+ 826, 8, 43, 10, 43, 12, 43, 829, 9, 43, 1, 43, 1, 43, 1, 44, 1, 44, 5, 44, 835, 8, 44,
+ 10, 44, 12, 44, 838, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
+ 5, 44, 849, 8, 44, 10, 44, 12, 44, 852, 9, 44, 3, 44, 854, 8, 44, 1, 44, 1, 44, 1, 44,
+ 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 864, 8, 44, 10, 44, 12, 44, 867, 9, 44, 3, 44,
+ 869, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
+ 1, 44, 5, 44, 883, 8, 44, 10, 44, 12, 44, 886, 9, 44, 1, 44, 1, 44, 3, 44, 890, 8, 44,
+ 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 897, 8, 46, 1, 47, 5, 47, 900, 8, 47, 10, 47,
+ 12, 47, 903, 9, 47, 1, 47, 1, 47, 1, 47, 3, 47, 908, 8, 47, 1, 47, 3, 47, 911, 8, 47, 1,
+ 47, 3, 47, 914, 8, 47, 1, 47, 3, 47, 917, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48,
+ 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 931, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49,
+ 1, 50, 1, 50, 1, 50, 5, 50, 940, 8, 50, 10, 50, 12, 50, 943, 9, 50, 1, 51, 1, 51, 1, 51,
+ 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 5, 53, 954, 8, 53, 10, 53, 12, 53, 957, 9, 53,
+ 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 963, 8, 54, 10, 54, 12, 54, 966, 9, 54, 1, 55, 1, 55,
+ 5, 55, 970, 8, 55, 10, 55, 12, 55, 973, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56,
+ 3, 56, 981, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 988, 8, 57, 1, 58, 5, 58, 991,
+ 8, 58, 10, 58, 12, 58, 994, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59,
+ 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1008, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1013, 8, 60,
+ 10, 60, 12, 60, 1016, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1021, 8, 61, 1, 62, 1, 62, 3,
+ 62, 1025, 8, 62, 1, 63, 1, 63, 3, 63, 1029, 8, 63, 1, 64, 1, 64, 3, 64, 1033, 8, 64, 1,
+ 65, 1, 65, 3, 65, 1037, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1042, 8, 66, 1, 67, 1, 67, 1,
+ 67, 5, 67, 1047, 8, 67, 10, 67, 12, 67, 1050, 9, 67, 3, 67, 1052, 8, 67, 1, 67, 1, 67,
+ 3, 67, 1056, 8, 67, 1, 67, 3, 67, 1059, 8, 67, 1, 68, 1, 68, 5, 68, 1063, 8, 68, 10, 68,
+ 12, 68, 1066, 9, 68, 1, 68, 1, 68, 3, 68, 1070, 8, 68, 1, 68, 3, 68, 1073, 8, 68, 1, 69,
+ 1, 69, 3, 69, 1077, 8, 69, 1, 69, 1, 69, 3, 69, 1081, 8, 69, 1, 69, 1, 69, 5, 69, 1085,
+ 8, 69, 10, 69, 12, 69, 1088, 9, 69, 1, 69, 1, 69, 3, 69, 1092, 8, 69, 3, 69, 1094, 8,
+ 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1103, 8, 72, 1, 72, 1, 72, 1,
+ 73, 5, 73, 1108, 8, 73, 10, 73, 12, 73, 1111, 9, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74,
+ 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1126, 8, 74, 1, 75, 1, 75,
+ 5, 75, 1130, 8, 75, 10, 75, 12, 75, 1133, 9, 75, 3, 75, 1135, 8, 75, 1, 75, 1, 75, 1,
+ 75, 3, 75, 1140, 8, 75, 1, 76, 1, 76, 3, 76, 1144, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1,
+ 77, 3, 77, 1151, 8, 77, 1, 77, 3, 77, 1154, 8, 77, 1, 77, 1, 77, 3, 77, 1158, 8, 77, 1,
+ 78, 5, 78, 1161, 8, 78, 10, 78, 12, 78, 1164, 9, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1169,
+ 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 5, 79, 1176, 8, 79, 10, 79, 12, 79, 1179, 9,
+ 79, 1, 80, 5, 80, 1182, 8, 80, 10, 80, 12, 80, 1185, 9, 80, 1, 80, 1, 80, 1, 80, 1, 80,
+ 3, 80, 1191, 8, 80, 1, 81, 5, 81, 1194, 8, 81, 10, 81, 12, 81, 1197, 9, 81, 1, 81, 1,
+ 81, 5, 81, 1201, 8, 81, 10, 81, 12, 81, 1204, 9, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82,
+ 3, 82, 1211, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1219, 8, 84, 10, 84,
+ 12, 84, 1222, 9, 84, 1, 85, 1, 85, 3, 85, 1226, 8, 85, 1, 86, 1, 86, 3, 86, 1230, 8, 86,
+ 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 5, 89, 1238, 8, 89, 10, 89, 12, 89, 1241, 9,
+ 89, 1, 89, 1, 89, 3, 89, 1245, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1253,
+ 8, 90, 1, 91, 3, 91, 1256, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1263, 8, 91,
+ 1, 91, 3, 91, 1266, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 1274, 8, 93,
+ 1, 93, 3, 93, 1277, 8, 93, 1, 93, 1, 93, 1, 94, 3, 94, 1282, 8, 94, 1, 94, 1, 94, 1, 94,
+ 3, 94, 1287, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1293, 8, 94, 1, 94, 1, 94, 3, 94,
+ 1297, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1302, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1307,
+ 8, 94, 1, 95, 5, 95, 1310, 8, 95, 10, 95, 12, 95, 1313, 9, 95, 1, 95, 1, 95, 1, 95, 3,
+ 95, 1318, 8, 95, 1, 95, 1, 95, 1, 96, 1, 96, 3, 96, 1324, 8, 96, 1, 96, 3, 96, 1327, 8,
+ 96, 1, 96, 3, 96, 1330, 8, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 5, 97, 1337, 8, 97, 10,
+ 97, 12, 97, 1340, 9, 97, 1, 98, 5, 98, 1343, 8, 98, 10, 98, 12, 98, 1346, 9, 98, 1, 98,
+ 1, 98, 1, 98, 3, 98, 1351, 8, 98, 1, 98, 3, 98, 1354, 8, 98, 1, 98, 3, 98, 1357, 8, 98,
+ 1, 99, 1, 99, 1, 100, 1, 100, 5, 100, 1363, 8, 100, 10, 100, 12, 100, 1366, 9, 100,
+ 1, 101, 5, 101, 1369, 8, 101, 10, 101, 12, 101, 1372, 9, 101, 1, 101, 1, 101, 1, 101,
+ 3, 101, 1377, 8, 101, 1, 101, 1, 101, 3, 101, 1381, 8, 101, 1, 101, 1, 101, 1, 102,
+ 1, 102, 3, 102, 1387, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 5, 103, 1394,
+ 8, 103, 10, 103, 12, 103, 1397, 9, 103, 1, 104, 5, 104, 1400, 8, 104, 10, 104, 12,
+ 104, 1403, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1409, 8, 104, 1, 105, 5,
+ 105, 1412, 8, 105, 10, 105, 12, 105, 1415, 9, 105, 1, 105, 1, 105, 5, 105, 1419, 8,
+ 105, 10, 105, 12, 105, 1422, 9, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107,
+ 1, 107, 5, 107, 1431, 8, 107, 10, 107, 12, 107, 1434, 9, 107, 1, 107, 1, 107, 1, 108,
+ 1, 108, 3, 108, 1440, 8, 108, 1, 109, 5, 109, 1443, 8, 109, 10, 109, 12, 109, 1446,
+ 9, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1453, 8, 110, 1, 111, 5, 111,
+ 1456, 8, 111, 10, 111, 12, 111, 1459, 9, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1464,
+ 8, 111, 1, 111, 3, 111, 1467, 8, 111, 1, 111, 3, 111, 1470, 8, 111, 1, 111, 1, 111,
+ 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1483,
+ 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 1492, 8, 114,
+ 10, 114, 12, 114, 1495, 9, 114, 1, 115, 1, 115, 5, 115, 1499, 8, 115, 10, 115, 12,
+ 115, 1502, 9, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1511,
+ 8, 116, 1, 117, 5, 117, 1514, 8, 117, 10, 117, 12, 117, 1517, 9, 117, 1, 117, 1, 117,
+ 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1527, 8, 118, 1, 119, 5, 119,
+ 1530, 8, 119, 10, 119, 12, 119, 1533, 9, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120,
+ 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1545, 8, 120, 1, 121, 5, 121, 1548,
+ 8, 121, 10, 121, 12, 121, 1551, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122,
+ 1, 122, 5, 122, 1560, 8, 122, 10, 122, 12, 122, 1563, 9, 122, 1, 122, 1, 122, 1, 123,
+ 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1572, 8, 123, 1, 124, 5, 124, 1575, 8, 124,
+ 10, 124, 12, 124, 1578, 9, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1585,
+ 8, 124, 1, 124, 3, 124, 1588, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 3, 125,
+ 1595, 8, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 3, 127, 1603, 8, 127,
+ 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1609, 8, 128, 1, 128, 1, 128, 1, 129, 1, 129,
+ 1, 129, 5, 129, 1616, 8, 129, 10, 129, 12, 129, 1619, 9, 129, 1, 130, 1, 130, 1, 130,
+ 1, 130, 1, 131, 1, 131, 1, 131, 3, 131, 1628, 8, 131, 1, 132, 1, 132, 3, 132, 1632,
+ 8, 132, 1, 132, 3, 132, 1635, 8, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 5, 133,
+ 1642, 8, 133, 10, 133, 12, 133, 1645, 9, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135,
+ 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, 1658, 8, 136, 1, 136, 3, 136,
+ 1661, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 5, 137, 1668, 8, 137, 10, 137,
+ 12, 137, 1671, 9, 137, 1, 138, 1, 138, 3, 138, 1675, 8, 138, 1, 138, 1, 138, 1, 139,
+ 1, 139, 5, 139, 1681, 8, 139, 10, 139, 12, 139, 1684, 9, 139, 1, 140, 1, 140, 1, 140,
+ 3, 140, 1689, 8, 140, 1, 141, 1, 141, 3, 141, 1693, 8, 141, 1, 142, 5, 142, 1696, 8,
+ 142, 10, 142, 12, 142, 1699, 9, 142, 1, 142, 1, 142, 3, 142, 1703, 8, 142, 1, 143,
+ 1, 143, 3, 143, 1707, 8, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145,
+ 1, 145, 1, 145, 3, 145, 1718, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146,
+ 1725, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147,
+ 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1740, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149,
+ 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152,
+ 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 1762, 8, 152, 1, 153, 1, 153, 1, 153,
+ 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154,
+ 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156,
+ 1, 156, 3, 156, 1790, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157,
+ 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1803, 8, 158, 10, 158, 12, 158, 1806, 9, 158,
+ 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1812, 8, 158, 10, 158, 12, 158, 1815, 9, 158,
+ 1, 158, 1, 158, 1, 158, 5, 158, 1820, 8, 158, 10, 158, 12, 158, 1823, 9, 158, 1, 158,
+ 3, 158, 1826, 8, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159,
+ 1835, 8, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 5, 160, 1842, 8, 160, 10, 160,
+ 12, 160, 1845, 9, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 1853,
+ 8, 161, 10, 161, 12, 161, 1856, 9, 161, 1, 161, 3, 161, 1859, 8, 161, 1, 162, 1, 162,
+ 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164,
+ 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166,
+ 3, 166, 1885, 8, 166, 1, 167, 1, 167, 3, 167, 1889, 8, 167, 1, 168, 1, 168, 1, 168,
+ 3, 168, 1894, 8, 168, 1, 168, 1, 168, 3, 168, 1898, 8, 168, 1, 168, 1, 168, 3, 168,
+ 1902, 8, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 3, 169, 1910, 8, 169,
+ 1, 169, 1, 169, 3, 169, 1914, 8, 169, 1, 169, 1, 169, 3, 169, 1918, 8, 169, 1, 169,
+ 1, 169, 1, 169, 1, 170, 1, 170, 3, 170, 1925, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172,
+ 1, 172, 5, 172, 1932, 8, 172, 10, 172, 12, 172, 1935, 9, 172, 1, 173, 1, 173, 1, 173,
+ 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174,
+ 1, 174, 1, 174, 1, 175, 1, 175, 3, 175, 1955, 8, 175, 1, 175, 1, 175, 1, 176, 1, 176,
+ 3, 176, 1961, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 3, 177, 1967, 8, 177, 1, 177,
+ 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179,
+ 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180,
+ 3, 180, 1992, 8, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1997, 8, 180, 1, 181, 1, 181,
+ 5, 181, 2001, 8, 181, 10, 181, 12, 181, 2004, 9, 181, 1, 182, 1, 182, 1, 182, 1, 182,
+ 1, 182, 1, 182, 1, 183, 5, 183, 2013, 8, 183, 10, 183, 12, 183, 2016, 9, 183, 1, 183,
+ 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 5, 184, 2024, 8, 184, 10, 184, 12, 184, 2027,
+ 9, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2036, 8, 186,
+ 1, 186, 3, 186, 2039, 8, 186, 1, 187, 1, 187, 1, 187, 3, 187, 2044, 8, 187, 1, 187,
+ 1, 187, 1, 188, 1, 188, 1, 188, 5, 188, 2051, 8, 188, 10, 188, 12, 188, 2054, 9, 188,
+ 1, 189, 1, 189, 3, 189, 2058, 8, 189, 1, 190, 1, 190, 3, 190, 2062, 8, 190, 1, 191,
+ 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 3, 194, 2074,
+ 8, 194, 1, 195, 1, 195, 3, 195, 2078, 8, 195, 1, 196, 1, 196, 3, 196, 2082, 8, 196,
+ 1, 196, 1, 196, 3, 196, 2086, 8, 196, 1, 196, 1, 196, 3, 196, 2090, 8, 196, 1, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2096, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2102, 8, 196, 1, 196, 1, 196, 3, 196, 2106, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196,
+ 3, 196, 2112, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2118, 8, 196, 1, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2124, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2130, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2138, 8, 196,
+ 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2145, 8, 196, 1, 196, 1, 196, 1, 196,
+ 1, 196, 1, 196, 3, 196, 2152, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2157, 8, 196,
+ 1, 196, 1, 196, 3, 196, 2161, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2166, 8, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2171, 8, 196, 1, 196, 1, 196, 3, 196, 2175, 8, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2180, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2185,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2189, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2194,
+ 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2199, 8, 196, 1, 196, 1, 196, 3, 196, 2203,
+ 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2208, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2213, 8, 196, 1, 196, 1, 196, 3, 196, 2217, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196,
+ 1, 196, 3, 196, 2224, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2229, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2233, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2238, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2242, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2247, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2251, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2256, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2260, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2265, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2269, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2276,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2280, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2285,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2289, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2295, 8, 196, 3, 196, 2297, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 2302, 8, 197, 1,
+ 197, 1, 197, 1, 197, 3, 197, 2307, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2313,
+ 8, 197, 1, 197, 1, 197, 3, 197, 2317, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2322,
+ 8, 197, 1, 197, 1, 197, 3, 197, 2326, 8, 197, 1, 197, 1, 197, 3, 197, 2330, 8, 197,
+ 1, 197, 1, 197, 3, 197, 2334, 8, 197, 3, 197, 2336, 8, 197, 1, 198, 1, 198, 1, 198,
+ 5, 198, 2341, 8, 198, 10, 198, 12, 198, 2344, 9, 198, 1, 198, 1, 198, 1, 198, 1, 198,
+ 1, 198, 1, 198, 5, 198, 2352, 8, 198, 10, 198, 12, 198, 2355, 9, 198, 1, 198, 1, 198,
+ 1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2363, 8, 198, 10, 198, 12, 198, 2366, 9, 198,
+ 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2373, 8, 198, 1, 199, 1, 199, 1, 199,
+ 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2384, 8, 199, 1, 200, 1, 200,
+ 3, 200, 2388, 8, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2393, 8, 200, 1, 200, 1, 200,
+ 3, 200, 2397, 8, 200, 1, 201, 5, 201, 2400, 8, 201, 10, 201, 12, 201, 2403, 9, 201,
+ 1, 201, 1, 201, 1, 201, 5, 201, 2408, 8, 201, 10, 201, 12, 201, 2411, 9, 201, 1, 201,
+ 5, 201, 2414, 8, 201, 10, 201, 12, 201, 2417, 9, 201, 1, 201, 3, 201, 2420, 8, 201,
+ 1, 202, 1, 202, 3, 202, 2424, 8, 202, 1, 203, 1, 203, 3, 203, 2428, 8, 203, 1, 204,
+ 1, 204, 1, 204, 1, 204, 3, 204, 2434, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204,
+ 2440, 8, 204, 3, 204, 2442, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205,
+ 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 2454, 8, 205, 1, 206, 1, 206, 5, 206, 2458,
+ 8, 206, 10, 206, 12, 206, 2461, 9, 206, 1, 207, 5, 207, 2464, 8, 207, 10, 207, 12,
+ 207, 2467, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1,
+ 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208,
+ 3, 208, 2488, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209,
+ 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2503, 8, 209, 1, 210, 1, 210, 1, 210,
+ 3, 210, 2508, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2515, 8, 210,
+ 1, 210, 1, 210, 1, 210, 3, 210, 2520, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210,
+ 3, 210, 2527, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2532, 8, 210, 1, 210, 1, 210,
+ 1, 210, 1, 210, 1, 210, 3, 210, 2539, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2544,
+ 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2551, 8, 210, 1, 210, 1, 210,
+ 1, 210, 3, 210, 2556, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210,
+ 2564, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2569, 8, 210, 1, 210, 1, 210, 3, 210,
+ 2573, 8, 210, 1, 211, 1, 211, 1, 211, 5, 211, 2578, 8, 211, 10, 211, 12, 211, 2581,
+ 9, 211, 1, 212, 1, 212, 1, 212, 3, 212, 2586, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212,
+ 1, 212, 3, 212, 2593, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2600,
+ 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2607, 8, 212, 1, 212, 1, 212,
+ 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2615, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212,
+ 1, 212, 3, 212, 2622, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212,
+ 2630, 8, 212, 1, 213, 1, 213, 3, 213, 2634, 8, 213, 1, 213, 1, 213, 3, 213, 2638, 8,
+ 213, 3, 213, 2640, 8, 213, 1, 214, 1, 214, 3, 214, 2644, 8, 214, 1, 214, 1, 214, 3,
+ 214, 2648, 8, 214, 3, 214, 2650, 8, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1,
+ 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2665, 8, 217, 1,
+ 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220,
+ 1, 220, 1, 220, 3, 220, 2680, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221,
+ 1, 221, 1, 221, 5, 221, 2690, 8, 221, 10, 221, 12, 221, 2693, 9, 221, 1, 221, 1, 221,
+ 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2701, 8, 221, 10, 221, 12, 221, 2704, 9, 221,
+ 1, 221, 1, 221, 1, 221, 3, 221, 2709, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222,
+ 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2723, 8, 222, 10, 222,
+ 12, 222, 2726, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223,
+ 1, 223, 5, 223, 2737, 8, 223, 10, 223, 12, 223, 2740, 9, 223, 1, 224, 1, 224, 1, 224,
+ 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224,
+ 1, 224, 1, 224, 5, 224, 2758, 8, 224, 10, 224, 12, 224, 2761, 9, 224, 1, 225, 1, 225,
+ 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225,
+ 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 2782, 8, 225, 5, 225, 2784,
+ 8, 225, 10, 225, 12, 225, 2787, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226,
+ 1, 226, 1, 226, 1, 226, 5, 226, 2798, 8, 226, 10, 226, 12, 226, 2801, 9, 226, 1, 227,
+ 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 2809, 8, 227, 10, 227, 12, 227, 2812,
+ 9, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 5, 228, 2820, 8, 228, 10, 228,
+ 12, 228, 2823, 9, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 5, 229, 2831,
+ 8, 229, 10, 229, 12, 229, 2834, 9, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230,
+ 5, 230, 2842, 8, 230, 10, 230, 12, 230, 2845, 9, 230, 1, 231, 1, 231, 1, 231, 1, 231,
+ 1, 231, 1, 231, 5, 231, 2853, 8, 231, 10, 231, 12, 231, 2856, 9, 231, 1, 232, 1, 232,
+ 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232,
+ 3, 232, 2871, 8, 232, 1, 233, 1, 233, 3, 233, 2875, 8, 233, 1, 234, 1, 234, 1, 234,
+ 1, 234, 1, 235, 1, 235, 1, 235, 3, 235, 2884, 8, 235, 1, 236, 1, 236, 1, 237, 1, 237,
+ 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2894, 8, 238, 1, 238, 1, 238, 3, 238, 2898,
+ 8, 238, 1, 239, 1, 239, 1, 239, 5, 239, 2903, 8, 239, 10, 239, 12, 239, 2906, 9, 239,
+ 1, 239, 1, 239, 1, 239, 5, 239, 2911, 8, 239, 10, 239, 12, 239, 2914, 9, 239, 3, 239,
+ 2916, 8, 239, 1, 240, 5, 240, 2919, 8, 240, 10, 240, 12, 240, 2922, 9, 240, 1, 240,
+ 1, 240, 1, 240, 1, 240, 3, 240, 2928, 8, 240, 1, 241, 1, 241, 3, 241, 2932, 8, 241,
+ 1, 242, 1, 242, 3, 242, 2936, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243,
+ 1, 244, 1, 244, 1, 244, 0, 10, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 245,
+ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
+ 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
+ 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
+ 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156,
+ 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188,
+ 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220,
+ 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252,
+ 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284,
+ 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316,
+ 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348,
+ 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380,
+ 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412,
+ 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444,
+ 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476,
+ 478, 480, 482, 484, 486, 488, 0, 6, 1, 0, 69, 75, 5, 0, 22, 22, 25, 25, 44, 44, 46, 46,
+ 54, 54, 2, 0, 31, 31, 37, 37, 2, 0, 13, 13, 55, 55, 2, 0, 57, 57, 60, 60, 2, 0, 88, 88,
+ 112, 122, 3206, 0, 490, 1, 0, 0, 0, 2, 493, 1, 0, 0, 0, 4, 495, 1, 0, 0, 0, 6, 497, 1, 0,
+ 0, 0, 8, 502, 1, 0, 0, 0, 10, 511, 1, 0, 0, 0, 12, 513, 1, 0, 0, 0, 14, 515, 1, 0, 0, 0, 16,
+ 520, 1, 0, 0, 0, 18, 522, 1, 0, 0, 0, 20, 539, 1, 0, 0, 0, 22, 588, 1, 0, 0, 0, 24, 590,
+ 1, 0, 0, 0, 26, 595, 1, 0, 0, 0, 28, 609, 1, 0, 0, 0, 30, 614, 1, 0, 0, 0, 32, 635, 1, 0,
+ 0, 0, 34, 642, 1, 0, 0, 0, 36, 644, 1, 0, 0, 0, 38, 655, 1, 0, 0, 0, 40, 658, 1, 0, 0, 0,
+ 42, 662, 1, 0, 0, 0, 44, 672, 1, 0, 0, 0, 46, 677, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 690,
+ 1, 0, 0, 0, 52, 695, 1, 0, 0, 0, 54, 700, 1, 0, 0, 0, 56, 705, 1, 0, 0, 0, 58, 713, 1, 0,
+ 0, 0, 60, 717, 1, 0, 0, 0, 62, 719, 1, 0, 0, 0, 64, 726, 1, 0, 0, 0, 66, 729, 1, 0, 0, 0,
+ 68, 746, 1, 0, 0, 0, 70, 754, 1, 0, 0, 0, 72, 768, 1, 0, 0, 0, 74, 774, 1, 0, 0, 0, 76, 776,
+ 1, 0, 0, 0, 78, 780, 1, 0, 0, 0, 80, 786, 1, 0, 0, 0, 82, 793, 1, 0, 0, 0, 84, 803, 1, 0,
+ 0, 0, 86, 808, 1, 0, 0, 0, 88, 889, 1, 0, 0, 0, 90, 891, 1, 0, 0, 0, 92, 896, 1, 0, 0, 0,
+ 94, 901, 1, 0, 0, 0, 96, 930, 1, 0, 0, 0, 98, 932, 1, 0, 0, 0, 100, 936, 1, 0, 0, 0, 102,
+ 944, 1, 0, 0, 0, 104, 947, 1, 0, 0, 0, 106, 950, 1, 0, 0, 0, 108, 958, 1, 0, 0, 0, 110,
+ 967, 1, 0, 0, 0, 112, 980, 1, 0, 0, 0, 114, 987, 1, 0, 0, 0, 116, 992, 1, 0, 0, 0, 118,
+ 1007, 1, 0, 0, 0, 120, 1009, 1, 0, 0, 0, 122, 1017, 1, 0, 0, 0, 124, 1022, 1, 0, 0, 0,
+ 126, 1028, 1, 0, 0, 0, 128, 1032, 1, 0, 0, 0, 130, 1036, 1, 0, 0, 0, 132, 1041, 1, 0,
+ 0, 0, 134, 1051, 1, 0, 0, 0, 136, 1060, 1, 0, 0, 0, 138, 1093, 1, 0, 0, 0, 140, 1095,
+ 1, 0, 0, 0, 142, 1097, 1, 0, 0, 0, 144, 1102, 1, 0, 0, 0, 146, 1109, 1, 0, 0, 0, 148, 1125,
+ 1, 0, 0, 0, 150, 1134, 1, 0, 0, 0, 152, 1143, 1, 0, 0, 0, 154, 1145, 1, 0, 0, 0, 156, 1162,
+ 1, 0, 0, 0, 158, 1172, 1, 0, 0, 0, 160, 1190, 1, 0, 0, 0, 162, 1195, 1, 0, 0, 0, 164, 1210,
+ 1, 0, 0, 0, 166, 1212, 1, 0, 0, 0, 168, 1215, 1, 0, 0, 0, 170, 1225, 1, 0, 0, 0, 172, 1229,
+ 1, 0, 0, 0, 174, 1231, 1, 0, 0, 0, 176, 1233, 1, 0, 0, 0, 178, 1239, 1, 0, 0, 0, 180, 1252,
+ 1, 0, 0, 0, 182, 1255, 1, 0, 0, 0, 184, 1269, 1, 0, 0, 0, 186, 1271, 1, 0, 0, 0, 188, 1306,
+ 1, 0, 0, 0, 190, 1311, 1, 0, 0, 0, 192, 1321, 1, 0, 0, 0, 194, 1333, 1, 0, 0, 0, 196, 1344,
+ 1, 0, 0, 0, 198, 1358, 1, 0, 0, 0, 200, 1360, 1, 0, 0, 0, 202, 1370, 1, 0, 0, 0, 204, 1384,
+ 1, 0, 0, 0, 206, 1390, 1, 0, 0, 0, 208, 1408, 1, 0, 0, 0, 210, 1413, 1, 0, 0, 0, 212, 1426,
+ 1, 0, 0, 0, 214, 1428, 1, 0, 0, 0, 216, 1439, 1, 0, 0, 0, 218, 1444, 1, 0, 0, 0, 220, 1452,
+ 1, 0, 0, 0, 222, 1457, 1, 0, 0, 0, 224, 1482, 1, 0, 0, 0, 226, 1484, 1, 0, 0, 0, 228, 1487,
+ 1, 0, 0, 0, 230, 1496, 1, 0, 0, 0, 232, 1510, 1, 0, 0, 0, 234, 1515, 1, 0, 0, 0, 236, 1526,
+ 1, 0, 0, 0, 238, 1531, 1, 0, 0, 0, 240, 1544, 1, 0, 0, 0, 242, 1549, 1, 0, 0, 0, 244, 1557,
+ 1, 0, 0, 0, 246, 1571, 1, 0, 0, 0, 248, 1576, 1, 0, 0, 0, 250, 1594, 1, 0, 0, 0, 252, 1596,
+ 1, 0, 0, 0, 254, 1602, 1, 0, 0, 0, 256, 1604, 1, 0, 0, 0, 258, 1612, 1, 0, 0, 0, 260, 1620,
+ 1, 0, 0, 0, 262, 1627, 1, 0, 0, 0, 264, 1629, 1, 0, 0, 0, 266, 1638, 1, 0, 0, 0, 268, 1646,
+ 1, 0, 0, 0, 270, 1649, 1, 0, 0, 0, 272, 1655, 1, 0, 0, 0, 274, 1664, 1, 0, 0, 0, 276, 1672,
+ 1, 0, 0, 0, 278, 1678, 1, 0, 0, 0, 280, 1688, 1, 0, 0, 0, 282, 1692, 1, 0, 0, 0, 284, 1697,
+ 1, 0, 0, 0, 286, 1706, 1, 0, 0, 0, 288, 1708, 1, 0, 0, 0, 290, 1717, 1, 0, 0, 0, 292, 1724,
+ 1, 0, 0, 0, 294, 1739, 1, 0, 0, 0, 296, 1741, 1, 0, 0, 0, 298, 1743, 1, 0, 0, 0, 300, 1747,
+ 1, 0, 0, 0, 302, 1751, 1, 0, 0, 0, 304, 1761, 1, 0, 0, 0, 306, 1763, 1, 0, 0, 0, 308, 1769,
+ 1, 0, 0, 0, 310, 1777, 1, 0, 0, 0, 312, 1785, 1, 0, 0, 0, 314, 1793, 1, 0, 0, 0, 316, 1825,
+ 1, 0, 0, 0, 318, 1827, 1, 0, 0, 0, 320, 1836, 1, 0, 0, 0, 322, 1858, 1, 0, 0, 0, 324, 1860,
+ 1, 0, 0, 0, 326, 1862, 1, 0, 0, 0, 328, 1868, 1, 0, 0, 0, 330, 1874, 1, 0, 0, 0, 332, 1884,
+ 1, 0, 0, 0, 334, 1888, 1, 0, 0, 0, 336, 1890, 1, 0, 0, 0, 338, 1906, 1, 0, 0, 0, 340, 1924,
+ 1, 0, 0, 0, 342, 1926, 1, 0, 0, 0, 344, 1928, 1, 0, 0, 0, 346, 1936, 1, 0, 0, 0, 348, 1944,
+ 1, 0, 0, 0, 350, 1952, 1, 0, 0, 0, 352, 1958, 1, 0, 0, 0, 354, 1964, 1, 0, 0, 0, 356, 1970,
+ 1, 0, 0, 0, 358, 1974, 1, 0, 0, 0, 360, 1996, 1, 0, 0, 0, 362, 1998, 1, 0, 0, 0, 364, 2005,
+ 1, 0, 0, 0, 366, 2014, 1, 0, 0, 0, 368, 2020, 1, 0, 0, 0, 370, 2028, 1, 0, 0, 0, 372, 2031,
+ 1, 0, 0, 0, 374, 2040, 1, 0, 0, 0, 376, 2047, 1, 0, 0, 0, 378, 2057, 1, 0, 0, 0, 380, 2061,
+ 1, 0, 0, 0, 382, 2063, 1, 0, 0, 0, 384, 2067, 1, 0, 0, 0, 386, 2069, 1, 0, 0, 0, 388, 2073,
+ 1, 0, 0, 0, 390, 2077, 1, 0, 0, 0, 392, 2296, 1, 0, 0, 0, 394, 2335, 1, 0, 0, 0, 396, 2372,
+ 1, 0, 0, 0, 398, 2383, 1, 0, 0, 0, 400, 2385, 1, 0, 0, 0, 402, 2401, 1, 0, 0, 0, 404, 2423,
+ 1, 0, 0, 0, 406, 2427, 1, 0, 0, 0, 408, 2441, 1, 0, 0, 0, 410, 2453, 1, 0, 0, 0, 412, 2455,
+ 1, 0, 0, 0, 414, 2465, 1, 0, 0, 0, 416, 2487, 1, 0, 0, 0, 418, 2502, 1, 0, 0, 0, 420, 2572,
+ 1, 0, 0, 0, 422, 2574, 1, 0, 0, 0, 424, 2629, 1, 0, 0, 0, 426, 2639, 1, 0, 0, 0, 428, 2649,
+ 1, 0, 0, 0, 430, 2651, 1, 0, 0, 0, 432, 2654, 1, 0, 0, 0, 434, 2664, 1, 0, 0, 0, 436, 2666,
+ 1, 0, 0, 0, 438, 2669, 1, 0, 0, 0, 440, 2679, 1, 0, 0, 0, 442, 2708, 1, 0, 0, 0, 444, 2710,
+ 1, 0, 0, 0, 446, 2727, 1, 0, 0, 0, 448, 2741, 1, 0, 0, 0, 450, 2762, 1, 0, 0, 0, 452, 2788,
+ 1, 0, 0, 0, 454, 2802, 1, 0, 0, 0, 456, 2813, 1, 0, 0, 0, 458, 2824, 1, 0, 0, 0, 460, 2835,
+ 1, 0, 0, 0, 462, 2846, 1, 0, 0, 0, 464, 2870, 1, 0, 0, 0, 466, 2874, 1, 0, 0, 0, 468, 2876,
+ 1, 0, 0, 0, 470, 2883, 1, 0, 0, 0, 472, 2885, 1, 0, 0, 0, 474, 2887, 1, 0, 0, 0, 476, 2897,
+ 1, 0, 0, 0, 478, 2915, 1, 0, 0, 0, 480, 2927, 1, 0, 0, 0, 482, 2931, 1, 0, 0, 0, 484, 2935,
+ 1, 0, 0, 0, 486, 2937, 1, 0, 0, 0, 488, 2943, 1, 0, 0, 0, 490, 491, 3, 64, 32, 0, 491,
+ 492, 5, 0, 0, 1, 492, 1, 1, 0, 0, 0, 493, 494, 7, 0, 0, 0, 494, 3, 1, 0, 0, 0, 495, 496,
+ 5, 123, 0, 0, 496, 5, 1, 0, 0, 0, 497, 498, 5, 123, 0, 0, 498, 7, 1, 0, 0, 0, 499, 501,
+ 3, 254, 127, 0, 500, 499, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502,
+ 503, 1, 0, 0, 0, 503, 507, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 508, 3, 10, 5, 0, 506,
+ 508, 5, 20, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 9, 1, 0, 0, 0, 509, 512,
+ 3, 12, 6, 0, 510, 512, 3, 14, 7, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 11,
+ 1, 0, 0, 0, 513, 514, 7, 1, 0, 0, 514, 13, 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 15, 1,
+ 0, 0, 0, 517, 521, 3, 20, 10, 0, 518, 521, 3, 26, 13, 0, 519, 521, 3, 28, 14, 0, 520,
+ 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 17, 1, 0, 0, 0, 522, 526,
+ 5, 84, 0, 0, 523, 525, 3, 254, 127, 0, 524, 523, 1, 0, 0, 0, 525, 528, 1, 0, 0, 0, 526,
+ 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 529, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 529,
+ 531, 3, 4, 2, 0, 530, 532, 3, 40, 20, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532,
+ 534, 1, 0, 0, 0, 533, 535, 3, 18, 9, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535,
+ 19, 1, 0, 0, 0, 536, 537, 3, 52, 26, 0, 537, 538, 5, 84, 0, 0, 538, 540, 1, 0, 0, 0, 539,
+ 536, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 544, 1, 0, 0, 0, 541, 543, 3, 254, 127, 0,
+ 542, 541, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0,
+ 545, 547, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 547, 549, 3, 4, 2, 0, 548, 550, 3, 40, 20,
+ 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 553, 3, 18, 9,
+ 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 21, 1, 0, 0, 0, 554, 556, 3, 254, 127,
+ 0, 555, 554, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0,
+ 0, 558, 560, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 560, 562, 3, 4, 2, 0, 561, 563, 3, 40, 20,
+ 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 589, 1, 0, 0, 0, 564, 565, 3, 52, 26,
+ 0, 565, 569, 5, 84, 0, 0, 566, 568, 3, 254, 127, 0, 567, 566, 1, 0, 0, 0, 568, 571, 1,
+ 0, 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 569, 1,
+ 0, 0, 0, 572, 574, 3, 4, 2, 0, 573, 575, 3, 40, 20, 0, 574, 573, 1, 0, 0, 0, 574, 575,
+ 1, 0, 0, 0, 575, 589, 1, 0, 0, 0, 576, 577, 3, 20, 10, 0, 577, 581, 5, 84, 0, 0, 578, 580,
+ 3, 254, 127, 0, 579, 578, 1, 0, 0, 0, 580, 583, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581,
+ 582, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 584, 586, 3, 4, 2, 0, 585,
+ 587, 3, 40, 20, 0, 586, 585, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, 588,
+ 557, 1, 0, 0, 0, 588, 564, 1, 0, 0, 0, 588, 576, 1, 0, 0, 0, 589, 23, 1, 0, 0, 0, 590, 591,
+ 3, 22, 11, 0, 591, 25, 1, 0, 0, 0, 592, 594, 3, 254, 127, 0, 593, 592, 1, 0, 0, 0, 594,
+ 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, 597,
+ 595, 1, 0, 0, 0, 598, 599, 3, 4, 2, 0, 599, 27, 1, 0, 0, 0, 600, 601, 3, 8, 4, 0, 601, 602,
+ 3, 30, 15, 0, 602, 610, 1, 0, 0, 0, 603, 604, 3, 22, 11, 0, 604, 605, 3, 30, 15, 0, 605,
+ 610, 1, 0, 0, 0, 606, 607, 3, 26, 13, 0, 607, 608, 3, 30, 15, 0, 608, 610, 1, 0, 0, 0,
+ 609, 600, 1, 0, 0, 0, 609, 603, 1, 0, 0, 0, 609, 606, 1, 0, 0, 0, 610, 29, 1, 0, 0, 0, 611,
+ 613, 3, 254, 127, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0,
+ 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 618, 5, 80, 0, 0,
+ 618, 629, 5, 81, 0, 0, 619, 621, 3, 254, 127, 0, 620, 619, 1, 0, 0, 0, 621, 624, 1, 0,
+ 0, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 625, 1, 0, 0, 0, 624, 622, 1, 0,
+ 0, 0, 625, 626, 5, 80, 0, 0, 626, 628, 5, 81, 0, 0, 627, 622, 1, 0, 0, 0, 628, 631, 1,
+ 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 31, 1, 0, 0, 0, 631, 629, 1, 0,
+ 0, 0, 632, 634, 3, 34, 17, 0, 633, 632, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1,
+ 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 640, 3,
+ 4, 2, 0, 639, 641, 3, 36, 18, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 33, 1,
+ 0, 0, 0, 642, 643, 3, 254, 127, 0, 643, 35, 1, 0, 0, 0, 644, 653, 5, 34, 0, 0, 645, 654,
+ 3, 26, 13, 0, 646, 650, 3, 20, 10, 0, 647, 649, 3, 38, 19, 0, 648, 647, 1, 0, 0, 0, 649,
+ 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652,
+ 650, 1, 0, 0, 0, 653, 645, 1, 0, 0, 0, 653, 646, 1, 0, 0, 0, 654, 37, 1, 0, 0, 0, 655, 656,
+ 5, 108, 0, 0, 656, 657, 3, 24, 12, 0, 657, 39, 1, 0, 0, 0, 658, 659, 5, 90, 0, 0, 659,
+ 660, 3, 42, 21, 0, 660, 661, 5, 89, 0, 0, 661, 41, 1, 0, 0, 0, 662, 667, 3, 44, 22, 0,
+ 663, 664, 5, 83, 0, 0, 664, 666, 3, 44, 22, 0, 665, 663, 1, 0, 0, 0, 666, 669, 1, 0, 0,
+ 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 43, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0,
+ 670, 673, 3, 16, 8, 0, 671, 673, 3, 46, 23, 0, 672, 670, 1, 0, 0, 0, 672, 671, 1, 0, 0,
+ 0, 673, 45, 1, 0, 0, 0, 674, 676, 3, 254, 127, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0,
+ 0, 0, 677, 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 677, 1, 0,
+ 0, 0, 680, 682, 5, 93, 0, 0, 681, 683, 3, 48, 24, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1,
+ 0, 0, 0, 683, 47, 1, 0, 0, 0, 684, 685, 5, 34, 0, 0, 685, 689, 3, 16, 8, 0, 686, 687, 5,
+ 57, 0, 0, 687, 689, 3, 16, 8, 0, 688, 684, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 49, 1,
+ 0, 0, 0, 690, 693, 5, 123, 0, 0, 691, 692, 5, 84, 0, 0, 692, 694, 3, 50, 25, 0, 693, 691,
+ 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 51, 1, 0, 0, 0, 695, 698, 5, 123, 0, 0, 696, 697,
+ 5, 84, 0, 0, 697, 699, 3, 52, 26, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 53,
+ 1, 0, 0, 0, 700, 703, 3, 52, 26, 0, 701, 702, 5, 84, 0, 0, 702, 704, 3, 4, 2, 0, 703, 701,
+ 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 55, 1, 0, 0, 0, 705, 708, 5, 123, 0, 0, 706, 707,
+ 5, 84, 0, 0, 707, 709, 3, 56, 28, 0, 708, 706, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 57,
+ 1, 0, 0, 0, 710, 711, 3, 62, 31, 0, 711, 712, 5, 84, 0, 0, 712, 714, 1, 0, 0, 0, 713, 710,
+ 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 5, 123, 0, 0, 716, 59,
+ 1, 0, 0, 0, 717, 718, 3, 6, 3, 0, 718, 61, 1, 0, 0, 0, 719, 722, 5, 123, 0, 0, 720, 721,
+ 5, 84, 0, 0, 721, 723, 3, 62, 31, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 63,
+ 1, 0, 0, 0, 724, 727, 3, 66, 33, 0, 725, 727, 3, 68, 34, 0, 726, 724, 1, 0, 0, 0, 726,
+ 725, 1, 0, 0, 0, 727, 65, 1, 0, 0, 0, 728, 730, 3, 70, 35, 0, 729, 728, 1, 0, 0, 0, 729,
+ 730, 1, 0, 0, 0, 730, 734, 1, 0, 0, 0, 731, 733, 3, 74, 37, 0, 732, 731, 1, 0, 0, 0, 733,
+ 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 740, 1, 0, 0, 0, 736,
+ 734, 1, 0, 0, 0, 737, 739, 3, 84, 42, 0, 738, 737, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740,
+ 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 67, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 745,
+ 3, 74, 37, 0, 744, 743, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747,
+ 1, 0, 0, 0, 747, 749, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 3, 86, 43, 0, 750, 69,
+ 1, 0, 0, 0, 751, 753, 3, 72, 36, 0, 752, 751, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752,
+ 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758,
+ 5, 49, 0, 0, 758, 763, 5, 123, 0, 0, 759, 760, 5, 84, 0, 0, 760, 762, 5, 123, 0, 0, 761,
+ 759, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764,
+ 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 82, 0, 0, 767, 71, 1, 0, 0, 0, 768,
+ 769, 3, 254, 127, 0, 769, 73, 1, 0, 0, 0, 770, 775, 3, 76, 38, 0, 771, 775, 3, 78, 39,
+ 0, 772, 775, 3, 80, 40, 0, 773, 775, 3, 82, 41, 0, 774, 770, 1, 0, 0, 0, 774, 771, 1,
+ 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 773, 1, 0, 0, 0, 775, 75, 1, 0, 0, 0, 776, 777, 5, 42,
+ 0, 0, 777, 778, 3, 54, 27, 0, 778, 779, 5, 82, 0, 0, 779, 77, 1, 0, 0, 0, 780, 781, 5,
+ 42, 0, 0, 781, 782, 3, 56, 28, 0, 782, 783, 5, 84, 0, 0, 783, 784, 5, 106, 0, 0, 784,
+ 785, 5, 82, 0, 0, 785, 79, 1, 0, 0, 0, 786, 787, 5, 42, 0, 0, 787, 788, 5, 55, 0, 0, 788,
+ 789, 3, 54, 27, 0, 789, 790, 5, 84, 0, 0, 790, 791, 5, 123, 0, 0, 791, 792, 5, 82, 0,
+ 0, 792, 81, 1, 0, 0, 0, 793, 794, 5, 42, 0, 0, 794, 795, 5, 55, 0, 0, 795, 796, 3, 54,
+ 27, 0, 796, 797, 5, 84, 0, 0, 797, 798, 5, 106, 0, 0, 798, 799, 5, 82, 0, 0, 799, 83,
+ 1, 0, 0, 0, 800, 804, 3, 92, 46, 0, 801, 804, 3, 220, 110, 0, 802, 804, 5, 82, 0, 0, 803,
+ 800, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 803, 802, 1, 0, 0, 0, 804, 85, 1, 0, 0, 0, 805, 807,
+ 3, 254, 127, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808,
+ 809, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 813, 5, 5, 0, 0, 812,
+ 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 815, 5, 2, 0, 0, 815,
+ 820, 5, 123, 0, 0, 816, 817, 5, 84, 0, 0, 817, 819, 5, 123, 0, 0, 818, 816, 1, 0, 0, 0,
+ 819, 822, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 823, 1, 0, 0, 0,
+ 822, 820, 1, 0, 0, 0, 823, 827, 5, 78, 0, 0, 824, 826, 3, 88, 44, 0, 825, 824, 1, 0, 0,
+ 0, 826, 829, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 830, 1, 0, 0,
+ 0, 829, 827, 1, 0, 0, 0, 830, 831, 5, 79, 0, 0, 831, 87, 1, 0, 0, 0, 832, 836, 5, 10, 0,
+ 0, 833, 835, 3, 90, 45, 0, 834, 833, 1, 0, 0, 0, 835, 838, 1, 0, 0, 0, 836, 834, 1, 0,
+ 0, 0, 836, 837, 1, 0, 0, 0, 837, 839, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 839, 840, 3, 50,
+ 25, 0, 840, 841, 5, 82, 0, 0, 841, 890, 1, 0, 0, 0, 842, 843, 5, 1, 0, 0, 843, 853, 3,
+ 52, 26, 0, 844, 845, 5, 12, 0, 0, 845, 850, 3, 50, 25, 0, 846, 847, 5, 83, 0, 0, 847,
+ 849, 3, 50, 25, 0, 848, 846, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850,
+ 851, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 844, 1, 0, 0, 0, 853,
+ 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 82, 0, 0, 856, 890, 1, 0, 0, 0, 857,
+ 858, 5, 6, 0, 0, 858, 868, 3, 52, 26, 0, 859, 860, 5, 12, 0, 0, 860, 865, 3, 50, 25, 0,
+ 861, 862, 5, 83, 0, 0, 862, 864, 3, 50, 25, 0, 863, 861, 1, 0, 0, 0, 864, 867, 1, 0, 0,
+ 0, 865, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0,
+ 0, 868, 859, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 5, 82, 0,
+ 0, 871, 890, 1, 0, 0, 0, 872, 873, 5, 14, 0, 0, 873, 874, 3, 54, 27, 0, 874, 875, 5, 82,
+ 0, 0, 875, 890, 1, 0, 0, 0, 876, 877, 5, 8, 0, 0, 877, 878, 3, 54, 27, 0, 878, 879, 5,
+ 16, 0, 0, 879, 884, 3, 54, 27, 0, 880, 881, 5, 83, 0, 0, 881, 883, 3, 54, 27, 0, 882,
+ 880, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 882, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885,
+ 887, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 887, 888, 5, 82, 0, 0, 888, 890, 1, 0, 0, 0, 889,
+ 832, 1, 0, 0, 0, 889, 842, 1, 0, 0, 0, 889, 857, 1, 0, 0, 0, 889, 872, 1, 0, 0, 0, 889,
+ 876, 1, 0, 0, 0, 890, 89, 1, 0, 0, 0, 891, 892, 7, 3, 0, 0, 892, 91, 1, 0, 0, 0, 893, 897,
+ 3, 94, 47, 0, 894, 897, 3, 190, 95, 0, 895, 897, 3, 202, 101, 0, 896, 893, 1, 0, 0, 0,
+ 896, 894, 1, 0, 0, 0, 896, 895, 1, 0, 0, 0, 897, 93, 1, 0, 0, 0, 898, 900, 3, 96, 48, 0,
+ 899, 898, 1, 0, 0, 0, 900, 903, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0,
+ 902, 904, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 904, 905, 5, 26, 0, 0, 905, 907, 3, 4, 2, 0,
+ 906, 908, 3, 98, 49, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 1, 0, 0,
+ 0, 909, 911, 3, 102, 51, 0, 910, 909, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 913, 1, 0,
+ 0, 0, 912, 914, 3, 104, 52, 0, 913, 912, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 1,
+ 0, 0, 0, 915, 917, 3, 108, 54, 0, 916, 915, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918,
+ 1, 0, 0, 0, 918, 919, 3, 110, 55, 0, 919, 95, 1, 0, 0, 0, 920, 931, 3, 254, 127, 0, 921,
+ 931, 5, 52, 0, 0, 922, 931, 5, 51, 0, 0, 923, 931, 5, 50, 0, 0, 924, 931, 5, 18, 0, 0,
+ 925, 931, 5, 55, 0, 0, 926, 931, 5, 35, 0, 0, 927, 931, 5, 11, 0, 0, 928, 931, 5, 3, 0,
+ 0, 929, 931, 5, 56, 0, 0, 930, 920, 1, 0, 0, 0, 930, 921, 1, 0, 0, 0, 930, 922, 1, 0, 0,
+ 0, 930, 923, 1, 0, 0, 0, 930, 924, 1, 0, 0, 0, 930, 925, 1, 0, 0, 0, 930, 926, 1, 0, 0,
+ 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 97, 1, 0, 0, 0,
+ 932, 933, 5, 90, 0, 0, 933, 934, 3, 100, 50, 0, 934, 935, 5, 89, 0, 0, 935, 99, 1, 0,
+ 0, 0, 936, 941, 3, 32, 16, 0, 937, 938, 5, 83, 0, 0, 938, 940, 3, 32, 16, 0, 939, 937,
+ 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 101,
+ 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 945, 5, 34, 0, 0, 945, 946, 3, 22, 11, 0, 946, 103,
+ 1, 0, 0, 0, 947, 948, 5, 41, 0, 0, 948, 949, 3, 106, 53, 0, 949, 105, 1, 0, 0, 0, 950,
+ 955, 3, 24, 12, 0, 951, 952, 5, 83, 0, 0, 952, 954, 3, 24, 12, 0, 953, 951, 1, 0, 0, 0,
+ 954, 957, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 107, 1, 0, 0, 0,
+ 957, 955, 1, 0, 0, 0, 958, 959, 5, 7, 0, 0, 959, 964, 3, 54, 27, 0, 960, 961, 5, 83, 0,
+ 0, 961, 963, 3, 54, 27, 0, 962, 960, 1, 0, 0, 0, 963, 966, 1, 0, 0, 0, 964, 962, 1, 0,
+ 0, 0, 964, 965, 1, 0, 0, 0, 965, 109, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 967, 971, 5, 78,
+ 0, 0, 968, 970, 3, 112, 56, 0, 969, 968, 1, 0, 0, 0, 970, 973, 1, 0, 0, 0, 971, 969, 1,
+ 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 1, 0, 0, 0, 973, 971, 1, 0, 0, 0, 974, 975, 5,
+ 79, 0, 0, 975, 111, 1, 0, 0, 0, 976, 981, 3, 114, 57, 0, 977, 981, 3, 174, 87, 0, 978,
+ 981, 3, 176, 88, 0, 979, 981, 3, 178, 89, 0, 980, 976, 1, 0, 0, 0, 980, 977, 1, 0, 0,
+ 0, 980, 978, 1, 0, 0, 0, 980, 979, 1, 0, 0, 0, 981, 113, 1, 0, 0, 0, 982, 988, 3, 116,
+ 58, 0, 983, 988, 3, 146, 73, 0, 984, 988, 3, 92, 46, 0, 985, 988, 3, 220, 110, 0, 986,
+ 988, 5, 82, 0, 0, 987, 982, 1, 0, 0, 0, 987, 983, 1, 0, 0, 0, 987, 984, 1, 0, 0, 0, 987,
+ 985, 1, 0, 0, 0, 987, 986, 1, 0, 0, 0, 988, 115, 1, 0, 0, 0, 989, 991, 3, 118, 59, 0, 990,
+ 989, 1, 0, 0, 0, 991, 994, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993,
+ 995, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 995, 996, 3, 128, 64, 0, 996, 997, 3, 120, 60,
+ 0, 997, 998, 5, 82, 0, 0, 998, 117, 1, 0, 0, 0, 999, 1008, 3, 254, 127, 0, 1000, 1008,
+ 5, 52, 0, 0, 1001, 1008, 5, 51, 0, 0, 1002, 1008, 5, 50, 0, 0, 1003, 1008, 5, 55, 0,
+ 0, 1004, 1008, 5, 35, 0, 0, 1005, 1008, 5, 63, 0, 0, 1006, 1008, 5, 66, 0, 0, 1007,
+ 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0,
+ 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006,
+ 1, 0, 0, 0, 1008, 119, 1, 0, 0, 0, 1009, 1014, 3, 122, 61, 0, 1010, 1011, 5, 83, 0, 0,
+ 1011, 1013, 3, 122, 61, 0, 1012, 1010, 1, 0, 0, 0, 1013, 1016, 1, 0, 0, 0, 1014, 1012,
+ 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 121, 1, 0, 0, 0, 1016, 1014, 1, 0, 0, 0, 1017,
+ 1020, 3, 124, 62, 0, 1018, 1019, 5, 88, 0, 0, 1019, 1021, 3, 126, 63, 0, 1020, 1018,
+ 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 123, 1, 0, 0, 0, 1022, 1024, 5, 123, 0, 0, 1023,
+ 1025, 3, 30, 15, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 125, 1, 0,
+ 0, 0, 1026, 1029, 3, 388, 194, 0, 1027, 1029, 3, 272, 136, 0, 1028, 1026, 1, 0, 0,
+ 0, 1028, 1027, 1, 0, 0, 0, 1029, 127, 1, 0, 0, 0, 1030, 1033, 3, 130, 65, 0, 1031, 1033,
+ 3, 132, 66, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1031, 1, 0, 0, 0, 1033, 129, 1, 0, 0, 0,
+ 1034, 1037, 3, 10, 5, 0, 1035, 1037, 5, 20, 0, 0, 1036, 1034, 1, 0, 0, 0, 1036, 1035,
+ 1, 0, 0, 0, 1037, 131, 1, 0, 0, 0, 1038, 1042, 3, 134, 67, 0, 1039, 1042, 3, 142, 71,
+ 0, 1040, 1042, 3, 144, 72, 0, 1041, 1038, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1041,
+ 1040, 1, 0, 0, 0, 1042, 133, 1, 0, 0, 0, 1043, 1044, 3, 52, 26, 0, 1044, 1048, 5, 84,
+ 0, 0, 1045, 1047, 3, 254, 127, 0, 1046, 1045, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048,
+ 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0,
+ 0, 1051, 1043, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1055,
+ 3, 4, 2, 0, 1054, 1056, 3, 40, 20, 0, 1055, 1054, 1, 0, 0, 0, 1055, 1056, 1, 0, 0, 0,
+ 1056, 1058, 1, 0, 0, 0, 1057, 1059, 3, 136, 68, 0, 1058, 1057, 1, 0, 0, 0, 1058, 1059,
+ 1, 0, 0, 0, 1059, 135, 1, 0, 0, 0, 1060, 1064, 5, 84, 0, 0, 1061, 1063, 3, 254, 127,
+ 0, 1062, 1061, 1, 0, 0, 0, 1063, 1066, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1065,
+ 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1067, 1069, 3, 4, 2, 0, 1068,
+ 1070, 3, 40, 20, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 1, 0,
+ 0, 0, 1071, 1073, 3, 136, 68, 0, 1072, 1071, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073,
+ 137, 1, 0, 0, 0, 1074, 1076, 3, 4, 2, 0, 1075, 1077, 3, 40, 20, 0, 1076, 1075, 1, 0,
+ 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1094, 1, 0, 0, 0, 1078, 1081, 3, 52, 26, 0, 1079,
+ 1081, 3, 134, 67, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1082, 1,
+ 0, 0, 0, 1082, 1086, 5, 84, 0, 0, 1083, 1085, 3, 254, 127, 0, 1084, 1083, 1, 0, 0, 0,
+ 1085, 1088, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1089,
+ 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1089, 1091, 3, 4, 2, 0, 1090, 1092, 3, 40, 20, 0,
+ 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1074,
+ 1, 0, 0, 0, 1093, 1080, 1, 0, 0, 0, 1094, 139, 1, 0, 0, 0, 1095, 1096, 3, 138, 69, 0,
+ 1096, 141, 1, 0, 0, 0, 1097, 1098, 3, 4, 2, 0, 1098, 143, 1, 0, 0, 0, 1099, 1103, 3,
+ 130, 65, 0, 1100, 1103, 3, 134, 67, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1099, 1, 0,
+ 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105,
+ 3, 30, 15, 0, 1105, 145, 1, 0, 0, 0, 1106, 1108, 3, 148, 74, 0, 1107, 1106, 1, 0, 0,
+ 0, 1108, 1111, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112,
+ 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1112, 1113, 3, 150, 75, 0, 1113, 1114, 3, 172, 86,
+ 0, 1114, 147, 1, 0, 0, 0, 1115, 1126, 3, 254, 127, 0, 1116, 1126, 5, 52, 0, 0, 1117,
+ 1126, 5, 51, 0, 0, 1118, 1126, 5, 50, 0, 0, 1119, 1126, 5, 18, 0, 0, 1120, 1126, 5,
+ 55, 0, 0, 1121, 1126, 5, 35, 0, 0, 1122, 1126, 5, 59, 0, 0, 1123, 1126, 5, 47, 0, 0,
+ 1124, 1126, 5, 56, 0, 0, 1125, 1115, 1, 0, 0, 0, 1125, 1116, 1, 0, 0, 0, 1125, 1117,
+ 1, 0, 0, 0, 1125, 1118, 1, 0, 0, 0, 1125, 1119, 1, 0, 0, 0, 1125, 1120, 1, 0, 0, 0, 1125,
+ 1121, 1, 0, 0, 0, 1125, 1122, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1124, 1, 0, 0,
+ 0, 1126, 149, 1, 0, 0, 0, 1127, 1131, 3, 98, 49, 0, 1128, 1130, 3, 254, 127, 0, 1129,
+ 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0,
+ 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1127, 1, 0, 0, 0, 1134, 1135,
+ 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 3, 152, 76, 0, 1137, 1139, 3, 154, 77,
+ 0, 1138, 1140, 3, 166, 83, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140,
+ 151, 1, 0, 0, 0, 1141, 1144, 3, 128, 64, 0, 1142, 1144, 5, 65, 0, 0, 1143, 1141, 1,
+ 0, 0, 0, 1143, 1142, 1, 0, 0, 0, 1144, 153, 1, 0, 0, 0, 1145, 1146, 5, 123, 0, 0, 1146,
+ 1150, 5, 76, 0, 0, 1147, 1148, 3, 156, 78, 0, 1148, 1149, 5, 83, 0, 0, 1149, 1151,
+ 1, 0, 0, 0, 1150, 1147, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152,
+ 1154, 3, 158, 79, 0, 1153, 1152, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 1,
+ 0, 0, 0, 1155, 1157, 5, 77, 0, 0, 1156, 1158, 3, 30, 15, 0, 1157, 1156, 1, 0, 0, 0, 1157,
+ 1158, 1, 0, 0, 0, 1158, 155, 1, 0, 0, 0, 1159, 1161, 3, 254, 127, 0, 1160, 1159, 1,
+ 0, 0, 0, 1161, 1164, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163,
+ 1165, 1, 0, 0, 0, 1164, 1162, 1, 0, 0, 0, 1165, 1168, 3, 128, 64, 0, 1166, 1167, 5,
+ 123, 0, 0, 1167, 1169, 5, 84, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169,
+ 1170, 1, 0, 0, 0, 1170, 1171, 5, 60, 0, 0, 1171, 157, 1, 0, 0, 0, 1172, 1177, 3, 160,
+ 80, 0, 1173, 1174, 5, 83, 0, 0, 1174, 1176, 3, 160, 80, 0, 1175, 1173, 1, 0, 0, 0, 1176,
+ 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 159, 1, 0, 0,
+ 0, 1179, 1177, 1, 0, 0, 0, 1180, 1182, 3, 164, 82, 0, 1181, 1180, 1, 0, 0, 0, 1182,
+ 1185, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1186, 1, 0, 0,
+ 0, 1185, 1183, 1, 0, 0, 0, 1186, 1187, 3, 128, 64, 0, 1187, 1188, 3, 124, 62, 0, 1188,
+ 1191, 1, 0, 0, 0, 1189, 1191, 3, 162, 81, 0, 1190, 1183, 1, 0, 0, 0, 1190, 1189, 1,
+ 0, 0, 0, 1191, 161, 1, 0, 0, 0, 1192, 1194, 3, 164, 82, 0, 1193, 1192, 1, 0, 0, 0, 1194,
+ 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1198, 1, 0, 0,
+ 0, 1197, 1195, 1, 0, 0, 0, 1198, 1202, 3, 128, 64, 0, 1199, 1201, 3, 254, 127, 0, 1200,
+ 1199, 1, 0, 0, 0, 1201, 1204, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1202, 1203, 1, 0, 0,
+ 0, 1203, 1205, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1205, 1206, 5, 85, 0, 0, 1206, 1207,
+ 5, 123, 0, 0, 1207, 163, 1, 0, 0, 0, 1208, 1211, 3, 254, 127, 0, 1209, 1211, 5, 35,
+ 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 165, 1, 0, 0, 0, 1212, 1213,
+ 5, 62, 0, 0, 1213, 1214, 3, 168, 84, 0, 1214, 167, 1, 0, 0, 0, 1215, 1220, 3, 170, 85,
+ 0, 1216, 1217, 5, 83, 0, 0, 1217, 1219, 3, 170, 85, 0, 1218, 1216, 1, 0, 0, 0, 1219,
+ 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 169, 1, 0, 0,
+ 0, 1222, 1220, 1, 0, 0, 0, 1223, 1226, 3, 22, 11, 0, 1224, 1226, 3, 26, 13, 0, 1225,
+ 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 171, 1, 0, 0, 0, 1227, 1230, 3, 276,
+ 138, 0, 1228, 1230, 5, 82, 0, 0, 1229, 1227, 1, 0, 0, 0, 1229, 1228, 1, 0, 0, 0, 1230,
+ 173, 1, 0, 0, 0, 1231, 1232, 3, 276, 138, 0, 1232, 175, 1, 0, 0, 0, 1233, 1234, 5, 55,
+ 0, 0, 1234, 1235, 3, 276, 138, 0, 1235, 177, 1, 0, 0, 0, 1236, 1238, 3, 180, 90, 0,
+ 1237, 1236, 1, 0, 0, 0, 1238, 1241, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1239, 1240,
+ 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1244, 3, 182, 91, 0,
+ 1243, 1245, 3, 166, 83, 0, 1244, 1243, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246,
+ 1, 0, 0, 0, 1246, 1247, 3, 186, 93, 0, 1247, 179, 1, 0, 0, 0, 1248, 1253, 3, 254, 127,
+ 0, 1249, 1253, 5, 52, 0, 0, 1250, 1253, 5, 51, 0, 0, 1251, 1253, 5, 50, 0, 0, 1252,
+ 1248, 1, 0, 0, 0, 1252, 1249, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1251, 1, 0, 0,
+ 0, 1253, 181, 1, 0, 0, 0, 1254, 1256, 3, 98, 49, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256,
+ 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 3, 184, 92, 0, 1258, 1262, 5, 76, 0,
+ 0, 1259, 1260, 3, 156, 78, 0, 1260, 1261, 5, 83, 0, 0, 1261, 1263, 1, 0, 0, 0, 1262,
+ 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1266, 3, 158,
+ 79, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267,
+ 1268, 5, 77, 0, 0, 1268, 183, 1, 0, 0, 0, 1269, 1270, 3, 4, 2, 0, 1270, 185, 1, 0, 0,
+ 0, 1271, 1273, 5, 78, 0, 0, 1272, 1274, 3, 188, 94, 0, 1273, 1272, 1, 0, 0, 0, 1273,
+ 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 3, 278, 139, 0, 1276, 1275, 1,
+ 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1279, 5, 79, 0, 0, 1279,
+ 187, 1, 0, 0, 0, 1280, 1282, 3, 40, 20, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0,
+ 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 7, 4, 0, 0, 1284, 1286, 5, 76, 0, 0, 1285,
+ 1287, 3, 422, 211, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 1,
+ 0, 0, 0, 1288, 1289, 5, 77, 0, 0, 1289, 1307, 5, 82, 0, 0, 1290, 1293, 3, 58, 29, 0,
+ 1291, 1293, 3, 390, 195, 0, 1292, 1290, 1, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1294,
+ 1, 0, 0, 0, 1294, 1296, 5, 84, 0, 0, 1295, 1297, 3, 40, 20, 0, 1296, 1295, 1, 0, 0, 0,
+ 1296, 1297, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 5, 57, 0, 0, 1299, 1301,
+ 5, 76, 0, 0, 1300, 1302, 3, 422, 211, 0, 1301, 1300, 1, 0, 0, 0, 1301, 1302, 1, 0, 0,
+ 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 5, 77, 0, 0, 1304, 1305, 5, 82, 0, 0, 1305, 1307,
+ 1, 0, 0, 0, 1306, 1281, 1, 0, 0, 0, 1306, 1292, 1, 0, 0, 0, 1307, 189, 1, 0, 0, 0, 1308,
+ 1310, 3, 96, 48, 0, 1309, 1308, 1, 0, 0, 0, 1310, 1313, 1, 0, 0, 0, 1311, 1309, 1, 0,
+ 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1314, 1315,
+ 5, 33, 0, 0, 1315, 1317, 3, 4, 2, 0, 1316, 1318, 3, 104, 52, 0, 1317, 1316, 1, 0, 0,
+ 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 3, 192, 96, 0, 1320,
+ 191, 1, 0, 0, 0, 1321, 1323, 5, 78, 0, 0, 1322, 1324, 3, 194, 97, 0, 1323, 1322, 1,
+ 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, 0, 0, 1325, 1327, 5, 83, 0, 0, 1326,
+ 1325, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, 0, 0, 1328, 1330, 3, 200,
+ 100, 0, 1329, 1328, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331,
+ 1332, 5, 79, 0, 0, 1332, 193, 1, 0, 0, 0, 1333, 1338, 3, 196, 98, 0, 1334, 1335, 5,
+ 83, 0, 0, 1335, 1337, 3, 196, 98, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0,
+ 1338, 1336, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 195, 1, 0, 0, 0, 1340, 1338, 1,
+ 0, 0, 0, 1341, 1343, 3, 198, 99, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344,
+ 1342, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, 1, 0, 0,
+ 0, 1347, 1353, 5, 123, 0, 0, 1348, 1350, 5, 76, 0, 0, 1349, 1351, 3, 422, 211, 0, 1350,
+ 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1354, 5, 77,
+ 0, 0, 1353, 1348, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1356, 1, 0, 0, 0, 1355, 1357,
+ 3, 110, 55, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 197, 1, 0, 0, 0,
+ 1358, 1359, 3, 254, 127, 0, 1359, 199, 1, 0, 0, 0, 1360, 1364, 5, 82, 0, 0, 1361, 1363,
+ 3, 112, 56, 0, 1362, 1361, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0,
+ 1364, 1365, 1, 0, 0, 0, 1365, 201, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1369, 3,
+ 96, 48, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1372, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370,
+ 1371, 1, 0, 0, 0, 1371, 1373, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1374, 5, 9, 0,
+ 0, 1374, 1376, 3, 4, 2, 0, 1375, 1377, 3, 98, 49, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377,
+ 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 3, 204, 102, 0, 1379, 1381, 3, 104,
+ 52, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382,
+ 1383, 3, 214, 107, 0, 1383, 203, 1, 0, 0, 0, 1384, 1386, 5, 76, 0, 0, 1385, 1387, 3,
+ 206, 103, 0, 1386, 1385, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0,
+ 1388, 1389, 5, 77, 0, 0, 1389, 205, 1, 0, 0, 0, 1390, 1395, 3, 208, 104, 0, 1391, 1392,
+ 5, 83, 0, 0, 1392, 1394, 3, 208, 104, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1397, 1, 0, 0,
+ 0, 1395, 1393, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 207, 1, 0, 0, 0, 1397, 1395,
+ 1, 0, 0, 0, 1398, 1400, 3, 212, 106, 0, 1399, 1398, 1, 0, 0, 0, 1400, 1403, 1, 0, 0,
+ 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1404, 1, 0, 0, 0, 1403, 1401,
+ 1, 0, 0, 0, 1404, 1405, 3, 128, 64, 0, 1405, 1406, 5, 123, 0, 0, 1406, 1409, 1, 0, 0,
+ 0, 1407, 1409, 3, 210, 105, 0, 1408, 1401, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409,
+ 209, 1, 0, 0, 0, 1410, 1412, 3, 212, 106, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1,
+ 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1416, 1, 0, 0, 0, 1415,
+ 1413, 1, 0, 0, 0, 1416, 1420, 3, 128, 64, 0, 1417, 1419, 3, 254, 127, 0, 1418, 1417,
+ 1, 0, 0, 0, 1419, 1422, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421,
+ 1423, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1423, 1424, 5, 85, 0, 0, 1424, 1425, 5, 123,
+ 0, 0, 1425, 211, 1, 0, 0, 0, 1426, 1427, 3, 254, 127, 0, 1427, 213, 1, 0, 0, 0, 1428,
+ 1432, 5, 78, 0, 0, 1429, 1431, 3, 216, 108, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1434,
+ 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1435, 1, 0, 0, 0, 1434,
+ 1432, 1, 0, 0, 0, 1435, 1436, 5, 79, 0, 0, 1436, 215, 1, 0, 0, 0, 1437, 1440, 3, 112,
+ 56, 0, 1438, 1440, 3, 218, 109, 0, 1439, 1437, 1, 0, 0, 0, 1439, 1438, 1, 0, 0, 0, 1440,
+ 217, 1, 0, 0, 0, 1441, 1443, 3, 180, 90, 0, 1442, 1441, 1, 0, 0, 0, 1443, 1446, 1, 0,
+ 0, 0, 1444, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1447, 1, 0, 0, 0, 1446, 1444,
+ 1, 0, 0, 0, 1447, 1448, 3, 184, 92, 0, 1448, 1449, 3, 186, 93, 0, 1449, 219, 1, 0, 0,
+ 0, 1450, 1453, 3, 222, 111, 0, 1451, 1453, 3, 242, 121, 0, 1452, 1450, 1, 0, 0, 0,
+ 1452, 1451, 1, 0, 0, 0, 1453, 221, 1, 0, 0, 0, 1454, 1456, 3, 224, 112, 0, 1455, 1454,
+ 1, 0, 0, 0, 1456, 1459, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458,
+ 1460, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1460, 1461, 5, 45, 0, 0, 1461, 1463, 3, 4,
+ 2, 0, 1462, 1464, 3, 98, 49, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464,
+ 1466, 1, 0, 0, 0, 1465, 1467, 3, 226, 113, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1,
+ 0, 0, 0, 1467, 1469, 1, 0, 0, 0, 1468, 1470, 3, 228, 114, 0, 1469, 1468, 1, 0, 0, 0,
+ 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 3, 230, 115, 0, 1472, 223,
+ 1, 0, 0, 0, 1473, 1483, 3, 254, 127, 0, 1474, 1483, 5, 52, 0, 0, 1475, 1483, 5, 51,
+ 0, 0, 1476, 1483, 5, 50, 0, 0, 1477, 1483, 5, 18, 0, 0, 1478, 1483, 5, 55, 0, 0, 1479,
+ 1483, 5, 11, 0, 0, 1480, 1483, 5, 3, 0, 0, 1481, 1483, 5, 56, 0, 0, 1482, 1473, 1, 0,
+ 0, 0, 1482, 1474, 1, 0, 0, 0, 1482, 1475, 1, 0, 0, 0, 1482, 1476, 1, 0, 0, 0, 1482, 1477,
+ 1, 0, 0, 0, 1482, 1478, 1, 0, 0, 0, 1482, 1479, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1482,
+ 1481, 1, 0, 0, 0, 1483, 225, 1, 0, 0, 0, 1484, 1485, 5, 34, 0, 0, 1485, 1486, 3, 106,
+ 53, 0, 1486, 227, 1, 0, 0, 0, 1487, 1488, 5, 7, 0, 0, 1488, 1493, 3, 54, 27, 0, 1489,
+ 1490, 5, 83, 0, 0, 1490, 1492, 3, 54, 27, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1,
+ 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 229, 1, 0, 0, 0, 1495,
+ 1493, 1, 0, 0, 0, 1496, 1500, 5, 78, 0, 0, 1497, 1499, 3, 232, 116, 0, 1498, 1497,
+ 1, 0, 0, 0, 1499, 1502, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501,
+ 1503, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1503, 1504, 5, 79, 0, 0, 1504, 231, 1, 0, 0,
+ 0, 1505, 1511, 3, 234, 117, 0, 1506, 1511, 3, 238, 119, 0, 1507, 1511, 3, 92, 46,
+ 0, 1508, 1511, 3, 220, 110, 0, 1509, 1511, 5, 82, 0, 0, 1510, 1505, 1, 0, 0, 0, 1510,
+ 1506, 1, 0, 0, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1510, 1509, 1, 0, 0,
+ 0, 1511, 233, 1, 0, 0, 0, 1512, 1514, 3, 236, 118, 0, 1513, 1512, 1, 0, 0, 0, 1514,
+ 1517, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1518, 1, 0, 0,
+ 0, 1517, 1515, 1, 0, 0, 0, 1518, 1519, 3, 128, 64, 0, 1519, 1520, 3, 120, 60, 0, 1520,
+ 1521, 5, 82, 0, 0, 1521, 235, 1, 0, 0, 0, 1522, 1527, 3, 254, 127, 0, 1523, 1527, 5,
+ 52, 0, 0, 1524, 1527, 5, 55, 0, 0, 1525, 1527, 5, 35, 0, 0, 1526, 1522, 1, 0, 0, 0, 1526,
+ 1523, 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1525, 1, 0, 0, 0, 1527, 237, 1, 0, 0,
+ 0, 1528, 1530, 3, 240, 120, 0, 1529, 1528, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531,
+ 1529, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1534, 1, 0, 0, 0, 1533, 1531, 1, 0, 0,
+ 0, 1534, 1535, 3, 150, 75, 0, 1535, 1536, 3, 172, 86, 0, 1536, 239, 1, 0, 0, 0, 1537,
+ 1545, 3, 254, 127, 0, 1538, 1545, 5, 52, 0, 0, 1539, 1545, 5, 50, 0, 0, 1540, 1545,
+ 5, 18, 0, 0, 1541, 1545, 5, 29, 0, 0, 1542, 1545, 5, 55, 0, 0, 1543, 1545, 5, 56, 0,
+ 0, 1544, 1537, 1, 0, 0, 0, 1544, 1538, 1, 0, 0, 0, 1544, 1539, 1, 0, 0, 0, 1544, 1540,
+ 1, 0, 0, 0, 1544, 1541, 1, 0, 0, 0, 1544, 1542, 1, 0, 0, 0, 1544, 1543, 1, 0, 0, 0, 1545,
+ 241, 1, 0, 0, 0, 1546, 1548, 3, 224, 112, 0, 1547, 1546, 1, 0, 0, 0, 1548, 1551, 1,
+ 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551,
+ 1549, 1, 0, 0, 0, 1552, 1553, 5, 86, 0, 0, 1553, 1554, 5, 45, 0, 0, 1554, 1555, 3, 4,
+ 2, 0, 1555, 1556, 3, 244, 122, 0, 1556, 243, 1, 0, 0, 0, 1557, 1561, 5, 78, 0, 0, 1558,
+ 1560, 3, 246, 123, 0, 1559, 1558, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1,
+ 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564,
+ 1565, 5, 79, 0, 0, 1565, 245, 1, 0, 0, 0, 1566, 1572, 3, 248, 124, 0, 1567, 1572, 3,
+ 234, 117, 0, 1568, 1572, 3, 92, 46, 0, 1569, 1572, 3, 220, 110, 0, 1570, 1572, 5,
+ 82, 0, 0, 1571, 1566, 1, 0, 0, 0, 1571, 1567, 1, 0, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571,
+ 1569, 1, 0, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 247, 1, 0, 0, 0, 1573, 1575, 3, 250,
+ 125, 0, 1574, 1573, 1, 0, 0, 0, 1575, 1578, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1576,
+ 1577, 1, 0, 0, 0, 1577, 1579, 1, 0, 0, 0, 1578, 1576, 1, 0, 0, 0, 1579, 1580, 3, 128,
+ 64, 0, 1580, 1581, 5, 123, 0, 0, 1581, 1582, 5, 76, 0, 0, 1582, 1584, 5, 77, 0, 0, 1583,
+ 1585, 3, 30, 15, 0, 1584, 1583, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1587, 1, 0,
+ 0, 0, 1586, 1588, 3, 252, 126, 0, 1587, 1586, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588,
+ 1589, 1, 0, 0, 0, 1589, 1590, 5, 82, 0, 0, 1590, 249, 1, 0, 0, 0, 1591, 1595, 3, 254,
+ 127, 0, 1592, 1595, 5, 52, 0, 0, 1593, 1595, 5, 18, 0, 0, 1594, 1591, 1, 0, 0, 0, 1594,
+ 1592, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 251, 1, 0, 0, 0, 1596, 1597, 5, 29, 0,
+ 0, 1597, 1598, 3, 262, 131, 0, 1598, 253, 1, 0, 0, 0, 1599, 1603, 3, 256, 128, 0, 1600,
+ 1603, 3, 268, 134, 0, 1601, 1603, 3, 270, 135, 0, 1602, 1599, 1, 0, 0, 0, 1602, 1600,
+ 1, 0, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 255, 1, 0, 0, 0, 1604, 1605, 5, 86, 0, 0, 1605,
+ 1606, 3, 54, 27, 0, 1606, 1608, 5, 76, 0, 0, 1607, 1609, 3, 258, 129, 0, 1608, 1607,
+ 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 5, 77, 0, 0, 1611,
+ 257, 1, 0, 0, 0, 1612, 1617, 3, 260, 130, 0, 1613, 1614, 5, 83, 0, 0, 1614, 1616, 3,
+ 260, 130, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0,
+ 1617, 1618, 1, 0, 0, 0, 1618, 259, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1621, 5,
+ 123, 0, 0, 1621, 1622, 5, 88, 0, 0, 1622, 1623, 3, 262, 131, 0, 1623, 261, 1, 0, 0,
+ 0, 1624, 1628, 3, 464, 232, 0, 1625, 1628, 3, 264, 132, 0, 1626, 1628, 3, 254, 127,
+ 0, 1627, 1624, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1626, 1, 0, 0, 0, 1628, 263,
+ 1, 0, 0, 0, 1629, 1631, 5, 78, 0, 0, 1630, 1632, 3, 266, 133, 0, 1631, 1630, 1, 0, 0,
+ 0, 1631, 1632, 1, 0, 0, 0, 1632, 1634, 1, 0, 0, 0, 1633, 1635, 5, 83, 0, 0, 1634, 1633,
+ 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1637, 5, 79, 0, 0, 1637,
+ 265, 1, 0, 0, 0, 1638, 1643, 3, 262, 131, 0, 1639, 1640, 5, 83, 0, 0, 1640, 1642, 3,
+ 262, 131, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1645, 1, 0, 0, 0, 1643, 1641, 1, 0, 0, 0,
+ 1643, 1644, 1, 0, 0, 0, 1644, 267, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1646, 1647, 5,
+ 86, 0, 0, 1647, 1648, 3, 54, 27, 0, 1648, 269, 1, 0, 0, 0, 1649, 1650, 5, 86, 0, 0, 1650,
+ 1651, 3, 54, 27, 0, 1651, 1652, 5, 76, 0, 0, 1652, 1653, 3, 262, 131, 0, 1653, 1654,
+ 5, 77, 0, 0, 1654, 271, 1, 0, 0, 0, 1655, 1657, 5, 78, 0, 0, 1656, 1658, 3, 274, 137,
+ 0, 1657, 1656, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1660, 1, 0, 0, 0, 1659, 1661,
+ 5, 83, 0, 0, 1660, 1659, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662,
+ 1663, 5, 79, 0, 0, 1663, 273, 1, 0, 0, 0, 1664, 1669, 3, 126, 63, 0, 1665, 1666, 5,
+ 83, 0, 0, 1666, 1668, 3, 126, 63, 0, 1667, 1665, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0,
+ 1669, 1667, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 275, 1, 0, 0, 0, 1671, 1669, 1,
+ 0, 0, 0, 1672, 1674, 5, 78, 0, 0, 1673, 1675, 3, 278, 139, 0, 1674, 1673, 1, 0, 0, 0,
+ 1674, 1675, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 5, 79, 0, 0, 1677, 277,
+ 1, 0, 0, 0, 1678, 1682, 3, 280, 140, 0, 1679, 1681, 3, 280, 140, 0, 1680, 1679, 1,
+ 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683,
+ 279, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1685, 1689, 3, 282, 141, 0, 1686, 1689, 3,
+ 288, 144, 0, 1687, 1689, 3, 290, 145, 0, 1688, 1685, 1, 0, 0, 0, 1688, 1686, 1, 0,
+ 0, 0, 1688, 1687, 1, 0, 0, 0, 1689, 281, 1, 0, 0, 0, 1690, 1693, 3, 92, 46, 0, 1691,
+ 1693, 3, 222, 111, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1691, 1, 0, 0, 0, 1693, 283, 1,
+ 0, 0, 0, 1694, 1696, 3, 164, 82, 0, 1695, 1694, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697,
+ 1695, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1700, 1, 0, 0, 0, 1699, 1697, 1, 0, 0,
+ 0, 1700, 1702, 3, 286, 143, 0, 1701, 1703, 3, 120, 60, 0, 1702, 1701, 1, 0, 0, 0, 1702,
+ 1703, 1, 0, 0, 0, 1703, 285, 1, 0, 0, 0, 1704, 1707, 3, 128, 64, 0, 1705, 1707, 5, 15,
+ 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 287, 1, 0, 0, 0, 1708, 1709,
+ 3, 284, 142, 0, 1709, 1710, 5, 82, 0, 0, 1710, 289, 1, 0, 0, 0, 1711, 1718, 3, 294,
+ 147, 0, 1712, 1718, 3, 298, 149, 0, 1713, 1718, 3, 306, 153, 0, 1714, 1718, 3, 308,
+ 154, 0, 1715, 1718, 3, 326, 163, 0, 1716, 1718, 3, 332, 166, 0, 1717, 1711, 1, 0,
+ 0, 0, 1717, 1712, 1, 0, 0, 0, 1717, 1713, 1, 0, 0, 0, 1717, 1714, 1, 0, 0, 0, 1717, 1715,
+ 1, 0, 0, 0, 1717, 1716, 1, 0, 0, 0, 1718, 291, 1, 0, 0, 0, 1719, 1725, 3, 294, 147, 0,
+ 1720, 1725, 3, 300, 150, 0, 1721, 1725, 3, 310, 155, 0, 1722, 1725, 3, 328, 164,
+ 0, 1723, 1725, 3, 334, 167, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1720, 1, 0, 0, 0, 1724,
+ 1721, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1723, 1, 0, 0, 0, 1725, 293, 1, 0, 0,
+ 0, 1726, 1740, 3, 276, 138, 0, 1727, 1740, 3, 296, 148, 0, 1728, 1740, 3, 302, 151,
+ 0, 1729, 1740, 3, 312, 156, 0, 1730, 1740, 3, 314, 157, 0, 1731, 1740, 3, 330, 165,
+ 0, 1732, 1740, 3, 350, 175, 0, 1733, 1740, 3, 352, 176, 0, 1734, 1740, 3, 354, 177,
+ 0, 1735, 1740, 3, 358, 179, 0, 1736, 1740, 3, 356, 178, 0, 1737, 1740, 3, 360, 180,
+ 0, 1738, 1740, 3, 382, 191, 0, 1739, 1726, 1, 0, 0, 0, 1739, 1727, 1, 0, 0, 0, 1739,
+ 1728, 1, 0, 0, 0, 1739, 1729, 1, 0, 0, 0, 1739, 1730, 1, 0, 0, 0, 1739, 1731, 1, 0, 0,
+ 0, 1739, 1732, 1, 0, 0, 0, 1739, 1733, 1, 0, 0, 0, 1739, 1734, 1, 0, 0, 0, 1739, 1735,
+ 1, 0, 0, 0, 1739, 1736, 1, 0, 0, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1738, 1, 0, 0, 0, 1740,
+ 295, 1, 0, 0, 0, 1741, 1742, 5, 82, 0, 0, 1742, 297, 1, 0, 0, 0, 1743, 1744, 5, 123,
+ 0, 0, 1744, 1745, 5, 94, 0, 0, 1745, 1746, 3, 290, 145, 0, 1746, 299, 1, 0, 0, 0, 1747,
+ 1748, 5, 123, 0, 0, 1748, 1749, 5, 94, 0, 0, 1749, 1750, 3, 292, 146, 0, 1750, 301,
+ 1, 0, 0, 0, 1751, 1752, 3, 304, 152, 0, 1752, 1753, 5, 82, 0, 0, 1753, 303, 1, 0, 0,
+ 0, 1754, 1762, 3, 468, 234, 0, 1755, 1762, 3, 436, 218, 0, 1756, 1762, 3, 438, 219,
+ 0, 1757, 1762, 3, 430, 215, 0, 1758, 1762, 3, 432, 216, 0, 1759, 1762, 3, 420, 210,
+ 0, 1760, 1762, 3, 398, 199, 0, 1761, 1754, 1, 0, 0, 0, 1761, 1755, 1, 0, 0, 0, 1761,
+ 1756, 1, 0, 0, 0, 1761, 1757, 1, 0, 0, 0, 1761, 1758, 1, 0, 0, 0, 1761, 1759, 1, 0, 0,
+ 0, 1761, 1760, 1, 0, 0, 0, 1762, 305, 1, 0, 0, 0, 1763, 1764, 5, 39, 0, 0, 1764, 1765,
+ 5, 76, 0, 0, 1765, 1766, 3, 388, 194, 0, 1766, 1767, 5, 77, 0, 0, 1767, 1768, 3, 290,
+ 145, 0, 1768, 307, 1, 0, 0, 0, 1769, 1770, 5, 39, 0, 0, 1770, 1771, 5, 76, 0, 0, 1771,
+ 1772, 3, 388, 194, 0, 1772, 1773, 5, 77, 0, 0, 1773, 1774, 3, 292, 146, 0, 1774, 1775,
+ 5, 32, 0, 0, 1775, 1776, 3, 290, 145, 0, 1776, 309, 1, 0, 0, 0, 1777, 1778, 5, 39, 0,
+ 0, 1778, 1779, 5, 76, 0, 0, 1779, 1780, 3, 388, 194, 0, 1780, 1781, 5, 77, 0, 0, 1781,
+ 1782, 3, 292, 146, 0, 1782, 1783, 5, 32, 0, 0, 1783, 1784, 3, 292, 146, 0, 1784, 311,
+ 1, 0, 0, 0, 1785, 1786, 5, 19, 0, 0, 1786, 1789, 3, 388, 194, 0, 1787, 1788, 5, 94,
+ 0, 0, 1788, 1790, 3, 388, 194, 0, 1789, 1787, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790,
+ 1791, 1, 0, 0, 0, 1791, 1792, 5, 82, 0, 0, 1792, 313, 1, 0, 0, 0, 1793, 1794, 5, 58,
+ 0, 0, 1794, 1795, 5, 76, 0, 0, 1795, 1796, 3, 388, 194, 0, 1796, 1797, 5, 77, 0, 0,
+ 1797, 1798, 3, 316, 158, 0, 1798, 315, 1, 0, 0, 0, 1799, 1800, 5, 78, 0, 0, 1800, 1804,
+ 3, 318, 159, 0, 1801, 1803, 3, 318, 159, 0, 1802, 1801, 1, 0, 0, 0, 1803, 1806, 1,
+ 0, 0, 0, 1804, 1802, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1807, 1, 0, 0, 0, 1806,
+ 1804, 1, 0, 0, 0, 1807, 1808, 5, 79, 0, 0, 1808, 1826, 1, 0, 0, 0, 1809, 1813, 5, 78,
+ 0, 0, 1810, 1812, 3, 320, 160, 0, 1811, 1810, 1, 0, 0, 0, 1812, 1815, 1, 0, 0, 0, 1813,
+ 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1821, 1, 0, 0, 0, 1815, 1813, 1, 0, 0,
+ 0, 1816, 1817, 3, 322, 161, 0, 1817, 1818, 5, 94, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819,
+ 1816, 1, 0, 0, 0, 1820, 1823, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0,
+ 0, 1822, 1824, 1, 0, 0, 0, 1823, 1821, 1, 0, 0, 0, 1824, 1826, 5, 79, 0, 0, 1825, 1799,
+ 1, 0, 0, 0, 1825, 1809, 1, 0, 0, 0, 1826, 317, 1, 0, 0, 0, 1827, 1828, 3, 322, 161, 0,
+ 1828, 1834, 5, 95, 0, 0, 1829, 1830, 3, 388, 194, 0, 1830, 1831, 5, 82, 0, 0, 1831,
+ 1835, 1, 0, 0, 0, 1832, 1835, 3, 276, 138, 0, 1833, 1835, 3, 356, 178, 0, 1834, 1829,
+ 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1833, 1, 0, 0, 0, 1835, 319, 1, 0, 0, 0, 1836,
+ 1837, 3, 322, 161, 0, 1837, 1843, 5, 94, 0, 0, 1838, 1839, 3, 322, 161, 0, 1839, 1840,
+ 5, 94, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1838, 1, 0, 0, 0, 1842, 1845, 1, 0, 0, 0, 1843,
+ 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1846, 1, 0, 0, 0, 1845, 1843, 1, 0, 0,
+ 0, 1846, 1847, 3, 278, 139, 0, 1847, 321, 1, 0, 0, 0, 1848, 1849, 5, 23, 0, 0, 1849,
+ 1854, 3, 324, 162, 0, 1850, 1851, 5, 83, 0, 0, 1851, 1853, 3, 324, 162, 0, 1852, 1850,
+ 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855,
+ 1859, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1859, 5, 29, 0, 0, 1858, 1848, 1, 0,
+ 0, 0, 1858, 1857, 1, 0, 0, 0, 1859, 323, 1, 0, 0, 0, 1860, 1861, 3, 464, 232, 0, 1861,
+ 325, 1, 0, 0, 0, 1862, 1863, 5, 67, 0, 0, 1863, 1864, 5, 76, 0, 0, 1864, 1865, 3, 388,
+ 194, 0, 1865, 1866, 5, 77, 0, 0, 1866, 1867, 3, 290, 145, 0, 1867, 327, 1, 0, 0, 0,
+ 1868, 1869, 5, 67, 0, 0, 1869, 1870, 5, 76, 0, 0, 1870, 1871, 3, 388, 194, 0, 1871,
+ 1872, 5, 77, 0, 0, 1872, 1873, 3, 292, 146, 0, 1873, 329, 1, 0, 0, 0, 1874, 1875, 5,
+ 30, 0, 0, 1875, 1876, 3, 290, 145, 0, 1876, 1877, 5, 67, 0, 0, 1877, 1878, 5, 76, 0,
+ 0, 1878, 1879, 3, 388, 194, 0, 1879, 1880, 5, 77, 0, 0, 1880, 1881, 5, 82, 0, 0, 1881,
+ 331, 1, 0, 0, 0, 1882, 1885, 3, 336, 168, 0, 1883, 1885, 3, 346, 173, 0, 1884, 1882,
+ 1, 0, 0, 0, 1884, 1883, 1, 0, 0, 0, 1885, 333, 1, 0, 0, 0, 1886, 1889, 3, 338, 169, 0,
+ 1887, 1889, 3, 348, 174, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1887, 1, 0, 0, 0, 1889, 335,
+ 1, 0, 0, 0, 1890, 1891, 5, 38, 0, 0, 1891, 1893, 5, 76, 0, 0, 1892, 1894, 3, 340, 170,
+ 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897,
+ 5, 82, 0, 0, 1896, 1898, 3, 388, 194, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0,
+ 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 5, 82, 0, 0, 1900, 1902, 3, 342, 171, 0, 1901,
+ 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1904, 5, 77,
+ 0, 0, 1904, 1905, 3, 290, 145, 0, 1905, 337, 1, 0, 0, 0, 1906, 1907, 5, 38, 0, 0, 1907,
+ 1909, 5, 76, 0, 0, 1908, 1910, 3, 340, 170, 0, 1909, 1908, 1, 0, 0, 0, 1909, 1910,
+ 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 5, 82, 0, 0, 1912, 1914, 3, 388, 194,
+ 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917,
+ 5, 82, 0, 0, 1916, 1918, 3, 342, 171, 0, 1917, 1916, 1, 0, 0, 0, 1917, 1918, 1, 0, 0,
+ 0, 1918, 1919, 1, 0, 0, 0, 1919, 1920, 5, 77, 0, 0, 1920, 1921, 3, 292, 146, 0, 1921,
+ 339, 1, 0, 0, 0, 1922, 1925, 3, 344, 172, 0, 1923, 1925, 3, 284, 142, 0, 1924, 1922,
+ 1, 0, 0, 0, 1924, 1923, 1, 0, 0, 0, 1925, 341, 1, 0, 0, 0, 1926, 1927, 3, 344, 172, 0,
+ 1927, 343, 1, 0, 0, 0, 1928, 1933, 3, 304, 152, 0, 1929, 1930, 5, 83, 0, 0, 1930, 1932,
+ 3, 304, 152, 0, 1931, 1929, 1, 0, 0, 0, 1932, 1935, 1, 0, 0, 0, 1933, 1931, 1, 0, 0,
+ 0, 1933, 1934, 1, 0, 0, 0, 1934, 345, 1, 0, 0, 0, 1935, 1933, 1, 0, 0, 0, 1936, 1937,
+ 5, 38, 0, 0, 1937, 1938, 5, 76, 0, 0, 1938, 1939, 3, 284, 142, 0, 1939, 1940, 5, 94,
+ 0, 0, 1940, 1941, 3, 388, 194, 0, 1941, 1942, 5, 77, 0, 0, 1942, 1943, 3, 290, 145,
+ 0, 1943, 347, 1, 0, 0, 0, 1944, 1945, 5, 38, 0, 0, 1945, 1946, 5, 76, 0, 0, 1946, 1947,
+ 3, 284, 142, 0, 1947, 1948, 5, 94, 0, 0, 1948, 1949, 3, 388, 194, 0, 1949, 1950, 5,
+ 77, 0, 0, 1950, 1951, 3, 292, 146, 0, 1951, 349, 1, 0, 0, 0, 1952, 1954, 5, 21, 0, 0,
+ 1953, 1955, 5, 123, 0, 0, 1954, 1953, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1956,
+ 1, 0, 0, 0, 1956, 1957, 5, 82, 0, 0, 1957, 351, 1, 0, 0, 0, 1958, 1960, 5, 28, 0, 0, 1959,
+ 1961, 5, 123, 0, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0,
+ 0, 0, 1962, 1963, 5, 82, 0, 0, 1963, 353, 1, 0, 0, 0, 1964, 1966, 5, 53, 0, 0, 1965,
+ 1967, 3, 388, 194, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1,
+ 0, 0, 0, 1968, 1969, 5, 82, 0, 0, 1969, 355, 1, 0, 0, 0, 1970, 1971, 5, 61, 0, 0, 1971,
+ 1972, 3, 388, 194, 0, 1972, 1973, 5, 82, 0, 0, 1973, 357, 1, 0, 0, 0, 1974, 1975, 5,
+ 59, 0, 0, 1975, 1976, 5, 76, 0, 0, 1976, 1977, 3, 388, 194, 0, 1977, 1978, 5, 77, 0,
+ 0, 1978, 1979, 3, 276, 138, 0, 1979, 359, 1, 0, 0, 0, 1980, 1981, 5, 64, 0, 0, 1981,
+ 1982, 3, 276, 138, 0, 1982, 1983, 3, 362, 181, 0, 1983, 1997, 1, 0, 0, 0, 1984, 1985,
+ 5, 64, 0, 0, 1985, 1986, 3, 276, 138, 0, 1986, 1987, 3, 370, 185, 0, 1987, 1997, 1,
+ 0, 0, 0, 1988, 1989, 5, 64, 0, 0, 1989, 1991, 3, 276, 138, 0, 1990, 1992, 3, 362, 181,
+ 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994,
+ 3, 370, 185, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1997, 3, 372, 186, 0, 1996, 1980, 1,
+ 0, 0, 0, 1996, 1984, 1, 0, 0, 0, 1996, 1988, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1997,
+ 361, 1, 0, 0, 0, 1998, 2002, 3, 364, 182, 0, 1999, 2001, 3, 364, 182, 0, 2000, 1999,
+ 1, 0, 0, 0, 2001, 2004, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003,
+ 363, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2005, 2006, 5, 24, 0, 0, 2006, 2007, 5, 76,
+ 0, 0, 2007, 2008, 3, 366, 183, 0, 2008, 2009, 5, 77, 0, 0, 2009, 2010, 3, 276, 138,
+ 0, 2010, 365, 1, 0, 0, 0, 2011, 2013, 3, 164, 82, 0, 2012, 2011, 1, 0, 0, 0, 2013, 2016,
+ 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 1, 0, 0, 0, 2016,
+ 2014, 1, 0, 0, 0, 2017, 2018, 3, 368, 184, 0, 2018, 2019, 3, 124, 62, 0, 2019, 367,
+ 1, 0, 0, 0, 2020, 2025, 3, 138, 69, 0, 2021, 2022, 5, 109, 0, 0, 2022, 2024, 3, 22,
+ 11, 0, 2023, 2021, 1, 0, 0, 0, 2024, 2027, 1, 0, 0, 0, 2025, 2023, 1, 0, 0, 0, 2025,
+ 2026, 1, 0, 0, 0, 2026, 369, 1, 0, 0, 0, 2027, 2025, 1, 0, 0, 0, 2028, 2029, 5, 36, 0,
+ 0, 2029, 2030, 3, 276, 138, 0, 2030, 371, 1, 0, 0, 0, 2031, 2032, 5, 64, 0, 0, 2032,
+ 2033, 3, 374, 187, 0, 2033, 2035, 3, 276, 138, 0, 2034, 2036, 3, 362, 181, 0, 2035,
+ 2034, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2039, 3, 370,
+ 185, 0, 2038, 2037, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 373, 1, 0, 0, 0, 2040,
+ 2041, 5, 76, 0, 0, 2041, 2043, 3, 376, 188, 0, 2042, 2044, 5, 82, 0, 0, 2043, 2042,
+ 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2046, 5, 77, 0, 0, 2046,
+ 375, 1, 0, 0, 0, 2047, 2052, 3, 378, 189, 0, 2048, 2049, 5, 82, 0, 0, 2049, 2051, 3,
+ 378, 189, 0, 2050, 2048, 1, 0, 0, 0, 2051, 2054, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0,
+ 2052, 2053, 1, 0, 0, 0, 2053, 377, 1, 0, 0, 0, 2054, 2052, 1, 0, 0, 0, 2055, 2058, 3,
+ 284, 142, 0, 2056, 2058, 3, 380, 190, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2056, 1, 0,
+ 0, 0, 2058, 379, 1, 0, 0, 0, 2059, 2062, 3, 58, 29, 0, 2060, 2062, 3, 418, 209, 0, 2061,
+ 2059, 1, 0, 0, 0, 2061, 2060, 1, 0, 0, 0, 2062, 381, 1, 0, 0, 0, 2063, 2064, 5, 17, 0,
+ 0, 2064, 2065, 3, 388, 194, 0, 2065, 2066, 5, 82, 0, 0, 2066, 383, 1, 0, 0, 0, 2067,
+ 2068, 3, 386, 193, 0, 2068, 385, 1, 0, 0, 0, 2069, 2070, 3, 284, 142, 0, 2070, 387,
+ 1, 0, 0, 0, 2071, 2074, 3, 474, 237, 0, 2072, 2074, 3, 466, 233, 0, 2073, 2071, 1,
+ 0, 0, 0, 2073, 2072, 1, 0, 0, 0, 2074, 389, 1, 0, 0, 0, 2075, 2078, 3, 392, 196, 0, 2076,
+ 2078, 3, 406, 203, 0, 2077, 2075, 1, 0, 0, 0, 2077, 2076, 1, 0, 0, 0, 2078, 391, 1,
+ 0, 0, 0, 2079, 2081, 3, 2, 1, 0, 2080, 2082, 3, 394, 197, 0, 2081, 2080, 1, 0, 0, 0,
+ 2081, 2082, 1, 0, 0, 0, 2082, 2297, 1, 0, 0, 0, 2083, 2085, 3, 396, 198, 0, 2084, 2086,
+ 3, 394, 197, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2297, 1, 0, 0,
+ 0, 2087, 2089, 5, 60, 0, 0, 2088, 2090, 3, 394, 197, 0, 2089, 2088, 1, 0, 0, 0, 2089,
+ 2090, 1, 0, 0, 0, 2090, 2297, 1, 0, 0, 0, 2091, 2092, 3, 54, 27, 0, 2092, 2093, 5, 84,
+ 0, 0, 2093, 2095, 5, 60, 0, 0, 2094, 2096, 3, 394, 197, 0, 2095, 2094, 1, 0, 0, 0, 2095,
+ 2096, 1, 0, 0, 0, 2096, 2297, 1, 0, 0, 0, 2097, 2098, 5, 76, 0, 0, 2098, 2099, 3, 388,
+ 194, 0, 2099, 2101, 5, 77, 0, 0, 2100, 2102, 3, 394, 197, 0, 2101, 2100, 1, 0, 0, 0,
+ 2101, 2102, 1, 0, 0, 0, 2102, 2297, 1, 0, 0, 0, 2103, 2105, 3, 400, 200, 0, 2104, 2106,
+ 3, 394, 197, 0, 2105, 2104, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2297, 1, 0, 0,
+ 0, 2107, 2108, 3, 58, 29, 0, 2108, 2109, 5, 84, 0, 0, 2109, 2111, 3, 400, 200, 0, 2110,
+ 2112, 3, 394, 197, 0, 2111, 2110, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2297, 1,
+ 0, 0, 0, 2113, 2114, 3, 406, 203, 0, 2114, 2115, 5, 84, 0, 0, 2115, 2117, 3, 400, 200,
+ 0, 2116, 2118, 3, 394, 197, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118,
+ 2297, 1, 0, 0, 0, 2119, 2120, 3, 406, 203, 0, 2120, 2121, 5, 84, 0, 0, 2121, 2123,
+ 5, 123, 0, 0, 2122, 2124, 3, 394, 197, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0,
+ 0, 0, 2124, 2297, 1, 0, 0, 0, 2125, 2126, 5, 57, 0, 0, 2126, 2127, 5, 84, 0, 0, 2127,
+ 2129, 5, 123, 0, 0, 2128, 2130, 3, 394, 197, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130,
+ 1, 0, 0, 0, 2130, 2297, 1, 0, 0, 0, 2131, 2132, 3, 54, 27, 0, 2132, 2133, 5, 84, 0, 0,
+ 2133, 2134, 5, 57, 0, 0, 2134, 2135, 5, 84, 0, 0, 2135, 2137, 5, 123, 0, 0, 2136, 2138,
+ 3, 394, 197, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2297, 1, 0, 0,
+ 0, 2139, 2140, 3, 58, 29, 0, 2140, 2141, 5, 80, 0, 0, 2141, 2142, 3, 388, 194, 0, 2142,
+ 2144, 5, 81, 0, 0, 2143, 2145, 3, 394, 197, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145,
+ 1, 0, 0, 0, 2145, 2297, 1, 0, 0, 0, 2146, 2147, 3, 410, 205, 0, 2147, 2148, 5, 80, 0,
+ 0, 2148, 2149, 3, 388, 194, 0, 2149, 2151, 5, 81, 0, 0, 2150, 2152, 3, 394, 197, 0,
+ 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2297, 1, 0, 0, 0, 2153, 2154,
+ 3, 60, 30, 0, 2154, 2156, 5, 76, 0, 0, 2155, 2157, 3, 422, 211, 0, 2156, 2155, 1, 0,
+ 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 5, 77, 0, 0, 2159,
+ 2161, 3, 394, 197, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2297, 1,
+ 0, 0, 0, 2162, 2163, 3, 54, 27, 0, 2163, 2165, 5, 84, 0, 0, 2164, 2166, 3, 40, 20, 0,
+ 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168,
+ 5, 123, 0, 0, 2168, 2170, 5, 76, 0, 0, 2169, 2171, 3, 422, 211, 0, 2170, 2169, 1, 0,
+ 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 5, 77, 0, 0, 2173,
+ 2175, 3, 394, 197, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2297, 1,
+ 0, 0, 0, 2176, 2177, 3, 58, 29, 0, 2177, 2179, 5, 84, 0, 0, 2178, 2180, 3, 40, 20, 0,
+ 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2182,
+ 5, 123, 0, 0, 2182, 2184, 5, 76, 0, 0, 2183, 2185, 3, 422, 211, 0, 2184, 2183, 1, 0,
+ 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 5, 77, 0, 0, 2187,
+ 2189, 3, 394, 197, 0, 2188, 2187, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2297, 1,
+ 0, 0, 0, 2190, 2191, 3, 406, 203, 0, 2191, 2193, 5, 84, 0, 0, 2192, 2194, 3, 40, 20,
+ 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196,
+ 5, 123, 0, 0, 2196, 2198, 5, 76, 0, 0, 2197, 2199, 3, 422, 211, 0, 2198, 2197, 1, 0,
+ 0, 0, 2198, 2199, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 5, 77, 0, 0, 2201,
+ 2203, 3, 394, 197, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2297, 1,
+ 0, 0, 0, 2204, 2205, 5, 57, 0, 0, 2205, 2207, 5, 84, 0, 0, 2206, 2208, 3, 40, 20, 0,
+ 2207, 2206, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2210,
+ 5, 123, 0, 0, 2210, 2212, 5, 76, 0, 0, 2211, 2213, 3, 422, 211, 0, 2212, 2211, 1, 0,
+ 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2216, 5, 77, 0, 0, 2215,
+ 2217, 3, 394, 197, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2297, 1,
+ 0, 0, 0, 2218, 2219, 3, 54, 27, 0, 2219, 2220, 5, 84, 0, 0, 2220, 2221, 5, 57, 0, 0,
+ 2221, 2223, 5, 84, 0, 0, 2222, 2224, 3, 40, 20, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224,
+ 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2226, 5, 123, 0, 0, 2226, 2228, 5, 76, 0, 0,
+ 2227, 2229, 3, 422, 211, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230,
+ 1, 0, 0, 0, 2230, 2232, 5, 77, 0, 0, 2231, 2233, 3, 394, 197, 0, 2232, 2231, 1, 0, 0,
+ 0, 2232, 2233, 1, 0, 0, 0, 2233, 2297, 1, 0, 0, 0, 2234, 2235, 3, 58, 29, 0, 2235, 2237,
+ 5, 87, 0, 0, 2236, 2238, 3, 40, 20, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0,
+ 2238, 2239, 1, 0, 0, 0, 2239, 2241, 5, 123, 0, 0, 2240, 2242, 3, 394, 197, 0, 2241,
+ 2240, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2297, 1, 0, 0, 0, 2243, 2244, 3, 406,
+ 203, 0, 2244, 2246, 5, 87, 0, 0, 2245, 2247, 3, 40, 20, 0, 2246, 2245, 1, 0, 0, 0, 2246,
+ 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2250, 5, 123, 0, 0, 2249, 2251, 3, 394,
+ 197, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2297, 1, 0, 0, 0, 2252,
+ 2253, 3, 16, 8, 0, 2253, 2255, 5, 87, 0, 0, 2254, 2256, 3, 40, 20, 0, 2255, 2254, 1,
+ 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2259, 5, 123, 0, 0, 2258,
+ 2260, 3, 394, 197, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2297, 1,
+ 0, 0, 0, 2261, 2262, 5, 57, 0, 0, 2262, 2264, 5, 87, 0, 0, 2263, 2265, 3, 40, 20, 0,
+ 2264, 2263, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2268,
+ 5, 123, 0, 0, 2267, 2269, 3, 394, 197, 0, 2268, 2267, 1, 0, 0, 0, 2268, 2269, 1, 0,
+ 0, 0, 2269, 2297, 1, 0, 0, 0, 2270, 2271, 3, 54, 27, 0, 2271, 2272, 5, 84, 0, 0, 2272,
+ 2273, 5, 57, 0, 0, 2273, 2275, 5, 87, 0, 0, 2274, 2276, 3, 40, 20, 0, 2275, 2274, 1,
+ 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 5, 123, 0, 0, 2278,
+ 2280, 3, 394, 197, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2297, 1,
+ 0, 0, 0, 2281, 2282, 3, 22, 11, 0, 2282, 2284, 5, 87, 0, 0, 2283, 2285, 3, 40, 20, 0,
+ 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2288,
+ 5, 48, 0, 0, 2287, 2289, 3, 394, 197, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0,
+ 0, 2289, 2297, 1, 0, 0, 0, 2290, 2291, 3, 28, 14, 0, 2291, 2292, 5, 87, 0, 0, 2292,
+ 2294, 5, 48, 0, 0, 2293, 2295, 3, 394, 197, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295,
+ 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2079, 1, 0, 0, 0, 2296, 2083, 1, 0, 0, 0, 2296,
+ 2087, 1, 0, 0, 0, 2296, 2091, 1, 0, 0, 0, 2296, 2097, 1, 0, 0, 0, 2296, 2103, 1, 0, 0,
+ 0, 2296, 2107, 1, 0, 0, 0, 2296, 2113, 1, 0, 0, 0, 2296, 2119, 1, 0, 0, 0, 2296, 2125,
+ 1, 0, 0, 0, 2296, 2131, 1, 0, 0, 0, 2296, 2139, 1, 0, 0, 0, 2296, 2146, 1, 0, 0, 0, 2296,
+ 2153, 1, 0, 0, 0, 2296, 2162, 1, 0, 0, 0, 2296, 2176, 1, 0, 0, 0, 2296, 2190, 1, 0, 0,
+ 0, 2296, 2204, 1, 0, 0, 0, 2296, 2218, 1, 0, 0, 0, 2296, 2234, 1, 0, 0, 0, 2296, 2243,
+ 1, 0, 0, 0, 2296, 2252, 1, 0, 0, 0, 2296, 2261, 1, 0, 0, 0, 2296, 2270, 1, 0, 0, 0, 2296,
+ 2281, 1, 0, 0, 0, 2296, 2290, 1, 0, 0, 0, 2297, 393, 1, 0, 0, 0, 2298, 2299, 5, 84, 0,
+ 0, 2299, 2301, 3, 400, 200, 0, 2300, 2302, 3, 394, 197, 0, 2301, 2300, 1, 0, 0, 0,
+ 2301, 2302, 1, 0, 0, 0, 2302, 2336, 1, 0, 0, 0, 2303, 2304, 5, 84, 0, 0, 2304, 2306,
+ 5, 123, 0, 0, 2305, 2307, 3, 394, 197, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0,
+ 0, 0, 2307, 2336, 1, 0, 0, 0, 2308, 2309, 5, 80, 0, 0, 2309, 2310, 3, 388, 194, 0, 2310,
+ 2312, 5, 81, 0, 0, 2311, 2313, 3, 394, 197, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313,
+ 1, 0, 0, 0, 2313, 2336, 1, 0, 0, 0, 2314, 2316, 5, 84, 0, 0, 2315, 2317, 3, 40, 20, 0,
+ 2316, 2315, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2319,
+ 5, 123, 0, 0, 2319, 2321, 5, 76, 0, 0, 2320, 2322, 3, 422, 211, 0, 2321, 2320, 1, 0,
+ 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2325, 5, 77, 0, 0, 2324,
+ 2326, 3, 394, 197, 0, 2325, 2324, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2336, 1,
+ 0, 0, 0, 2327, 2329, 5, 87, 0, 0, 2328, 2330, 3, 40, 20, 0, 2329, 2328, 1, 0, 0, 0, 2329,
+ 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 5, 123, 0, 0, 2332, 2334, 3, 394,
+ 197, 0, 2333, 2332, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 1, 0, 0, 0, 2335,
+ 2298, 1, 0, 0, 0, 2335, 2303, 1, 0, 0, 0, 2335, 2308, 1, 0, 0, 0, 2335, 2314, 1, 0, 0,
+ 0, 2335, 2327, 1, 0, 0, 0, 2336, 395, 1, 0, 0, 0, 2337, 2342, 3, 54, 27, 0, 2338, 2339,
+ 5, 80, 0, 0, 2339, 2341, 5, 81, 0, 0, 2340, 2338, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0,
+ 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2345, 1, 0, 0, 0, 2344, 2342,
+ 1, 0, 0, 0, 2345, 2346, 5, 84, 0, 0, 2346, 2347, 5, 26, 0, 0, 2347, 2373, 1, 0, 0, 0,
+ 2348, 2353, 3, 10, 5, 0, 2349, 2350, 5, 80, 0, 0, 2350, 2352, 5, 81, 0, 0, 2351, 2349,
+ 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354,
+ 2356, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2357, 5, 84, 0, 0, 2357, 2358, 5, 26,
+ 0, 0, 2358, 2373, 1, 0, 0, 0, 2359, 2364, 5, 20, 0, 0, 2360, 2361, 5, 80, 0, 0, 2361,
+ 2363, 5, 81, 0, 0, 2362, 2360, 1, 0, 0, 0, 2363, 2366, 1, 0, 0, 0, 2364, 2362, 1, 0,
+ 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2367, 1, 0, 0, 0, 2366, 2364, 1, 0, 0, 0, 2367, 2368,
+ 5, 84, 0, 0, 2368, 2373, 5, 26, 0, 0, 2369, 2370, 5, 65, 0, 0, 2370, 2371, 5, 84, 0,
+ 0, 2371, 2373, 5, 26, 0, 0, 2372, 2337, 1, 0, 0, 0, 2372, 2348, 1, 0, 0, 0, 2372, 2359,
+ 1, 0, 0, 0, 2372, 2369, 1, 0, 0, 0, 2373, 397, 1, 0, 0, 0, 2374, 2384, 3, 400, 200, 0,
+ 2375, 2376, 3, 58, 29, 0, 2376, 2377, 5, 84, 0, 0, 2377, 2378, 3, 400, 200, 0, 2378,
+ 2384, 1, 0, 0, 0, 2379, 2380, 3, 390, 195, 0, 2380, 2381, 5, 84, 0, 0, 2381, 2382,
+ 3, 400, 200, 0, 2382, 2384, 1, 0, 0, 0, 2383, 2374, 1, 0, 0, 0, 2383, 2375, 1, 0, 0,
+ 0, 2383, 2379, 1, 0, 0, 0, 2384, 399, 1, 0, 0, 0, 2385, 2387, 5, 48, 0, 0, 2386, 2388,
+ 3, 40, 20, 0, 2387, 2386, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0,
+ 2389, 2390, 3, 402, 201, 0, 2390, 2392, 5, 76, 0, 0, 2391, 2393, 3, 422, 211, 0, 2392,
+ 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2396, 5, 77,
+ 0, 0, 2395, 2397, 3, 110, 55, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397,
+ 401, 1, 0, 0, 0, 2398, 2400, 3, 254, 127, 0, 2399, 2398, 1, 0, 0, 0, 2400, 2403, 1,
+ 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403,
+ 2401, 1, 0, 0, 0, 2404, 2415, 5, 123, 0, 0, 2405, 2409, 5, 84, 0, 0, 2406, 2408, 3,
+ 254, 127, 0, 2407, 2406, 1, 0, 0, 0, 2408, 2411, 1, 0, 0, 0, 2409, 2407, 1, 0, 0, 0,
+ 2409, 2410, 1, 0, 0, 0, 2410, 2412, 1, 0, 0, 0, 2411, 2409, 1, 0, 0, 0, 2412, 2414,
+ 5, 123, 0, 0, 2413, 2405, 1, 0, 0, 0, 2414, 2417, 1, 0, 0, 0, 2415, 2413, 1, 0, 0, 0,
+ 2415, 2416, 1, 0, 0, 0, 2416, 2419, 1, 0, 0, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2420,
+ 3, 404, 202, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 403, 1, 0, 0, 0,
+ 2421, 2424, 3, 40, 20, 0, 2422, 2424, 5, 4, 0, 0, 2423, 2421, 1, 0, 0, 0, 2423, 2422,
+ 1, 0, 0, 0, 2424, 405, 1, 0, 0, 0, 2425, 2428, 3, 408, 204, 0, 2426, 2428, 3, 410, 205,
+ 0, 2427, 2425, 1, 0, 0, 0, 2427, 2426, 1, 0, 0, 0, 2428, 407, 1, 0, 0, 0, 2429, 2430,
+ 5, 48, 0, 0, 2430, 2431, 3, 8, 4, 0, 2431, 2433, 3, 412, 206, 0, 2432, 2434, 3, 30,
+ 15, 0, 2433, 2432, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2442, 1, 0, 0, 0, 2435,
+ 2436, 5, 48, 0, 0, 2436, 2437, 3, 22, 11, 0, 2437, 2439, 3, 412, 206, 0, 2438, 2440,
+ 3, 30, 15, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2442, 1, 0, 0, 0,
+ 2441, 2429, 1, 0, 0, 0, 2441, 2435, 1, 0, 0, 0, 2442, 409, 1, 0, 0, 0, 2443, 2444, 5,
+ 48, 0, 0, 2444, 2445, 3, 8, 4, 0, 2445, 2446, 3, 30, 15, 0, 2446, 2447, 3, 272, 136,
+ 0, 2447, 2454, 1, 0, 0, 0, 2448, 2449, 5, 48, 0, 0, 2449, 2450, 3, 20, 10, 0, 2450,
+ 2451, 3, 30, 15, 0, 2451, 2452, 3, 272, 136, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2443,
+ 1, 0, 0, 0, 2453, 2448, 1, 0, 0, 0, 2454, 411, 1, 0, 0, 0, 2455, 2459, 3, 414, 207, 0,
+ 2456, 2458, 3, 414, 207, 0, 2457, 2456, 1, 0, 0, 0, 2458, 2461, 1, 0, 0, 0, 2459, 2457,
+ 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 413, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2462,
+ 2464, 3, 254, 127, 0, 2463, 2462, 1, 0, 0, 0, 2464, 2467, 1, 0, 0, 0, 2465, 2463, 1,
+ 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2468, 1, 0, 0, 0, 2467, 2465, 1, 0, 0, 0, 2468,
+ 2469, 5, 80, 0, 0, 2469, 2470, 3, 388, 194, 0, 2470, 2471, 5, 81, 0, 0, 2471, 415,
+ 1, 0, 0, 0, 2472, 2473, 3, 58, 29, 0, 2473, 2474, 5, 80, 0, 0, 2474, 2475, 3, 388, 194,
+ 0, 2475, 2476, 5, 81, 0, 0, 2476, 2488, 1, 0, 0, 0, 2477, 2478, 3, 392, 196, 0, 2478,
+ 2479, 5, 80, 0, 0, 2479, 2480, 3, 388, 194, 0, 2480, 2481, 5, 81, 0, 0, 2481, 2488,
+ 1, 0, 0, 0, 2482, 2483, 3, 410, 205, 0, 2483, 2484, 5, 80, 0, 0, 2484, 2485, 3, 388,
+ 194, 0, 2485, 2486, 5, 81, 0, 0, 2486, 2488, 1, 0, 0, 0, 2487, 2472, 1, 0, 0, 0, 2487,
+ 2477, 1, 0, 0, 0, 2487, 2482, 1, 0, 0, 0, 2488, 417, 1, 0, 0, 0, 2489, 2490, 3, 390,
+ 195, 0, 2490, 2491, 5, 84, 0, 0, 2491, 2492, 5, 123, 0, 0, 2492, 2503, 1, 0, 0, 0, 2493,
+ 2494, 5, 57, 0, 0, 2494, 2495, 5, 84, 0, 0, 2495, 2503, 5, 123, 0, 0, 2496, 2497, 3,
+ 54, 27, 0, 2497, 2498, 5, 84, 0, 0, 2498, 2499, 5, 57, 0, 0, 2499, 2500, 5, 84, 0, 0,
+ 2500, 2501, 5, 123, 0, 0, 2501, 2503, 1, 0, 0, 0, 2502, 2489, 1, 0, 0, 0, 2502, 2493,
+ 1, 0, 0, 0, 2502, 2496, 1, 0, 0, 0, 2503, 419, 1, 0, 0, 0, 2504, 2505, 3, 60, 30, 0, 2505,
+ 2507, 5, 76, 0, 0, 2506, 2508, 3, 422, 211, 0, 2507, 2506, 1, 0, 0, 0, 2507, 2508,
+ 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 5, 77, 0, 0, 2510, 2573, 1, 0, 0, 0, 2511,
+ 2512, 3, 54, 27, 0, 2512, 2514, 5, 84, 0, 0, 2513, 2515, 3, 40, 20, 0, 2514, 2513,
+ 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2517, 5, 123, 0, 0,
+ 2517, 2519, 5, 76, 0, 0, 2518, 2520, 3, 422, 211, 0, 2519, 2518, 1, 0, 0, 0, 2519,
+ 2520, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2522, 5, 77, 0, 0, 2522, 2573, 1, 0,
+ 0, 0, 2523, 2524, 3, 58, 29, 0, 2524, 2526, 5, 84, 0, 0, 2525, 2527, 3, 40, 20, 0, 2526,
+ 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2529, 5, 123,
+ 0, 0, 2529, 2531, 5, 76, 0, 0, 2530, 2532, 3, 422, 211, 0, 2531, 2530, 1, 0, 0, 0, 2531,
+ 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 77, 0, 0, 2534, 2573, 1, 0,
+ 0, 0, 2535, 2536, 3, 390, 195, 0, 2536, 2538, 5, 84, 0, 0, 2537, 2539, 3, 40, 20, 0,
+ 2538, 2537, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2541,
+ 5, 123, 0, 0, 2541, 2543, 5, 76, 0, 0, 2542, 2544, 3, 422, 211, 0, 2543, 2542, 1, 0,
+ 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2546, 5, 77, 0, 0, 2546,
+ 2573, 1, 0, 0, 0, 2547, 2548, 5, 57, 0, 0, 2548, 2550, 5, 84, 0, 0, 2549, 2551, 3, 40,
+ 20, 0, 2550, 2549, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552,
+ 2553, 5, 123, 0, 0, 2553, 2555, 5, 76, 0, 0, 2554, 2556, 3, 422, 211, 0, 2555, 2554,
+ 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 2573, 5, 77, 0, 0, 2558,
+ 2559, 3, 54, 27, 0, 2559, 2560, 5, 84, 0, 0, 2560, 2561, 5, 57, 0, 0, 2561, 2563, 5,
+ 84, 0, 0, 2562, 2564, 3, 40, 20, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564,
+ 2565, 1, 0, 0, 0, 2565, 2566, 5, 123, 0, 0, 2566, 2568, 5, 76, 0, 0, 2567, 2569, 3,
+ 422, 211, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0,
+ 2570, 2571, 5, 77, 0, 0, 2571, 2573, 1, 0, 0, 0, 2572, 2504, 1, 0, 0, 0, 2572, 2511,
+ 1, 0, 0, 0, 2572, 2523, 1, 0, 0, 0, 2572, 2535, 1, 0, 0, 0, 2572, 2547, 1, 0, 0, 0, 2572,
+ 2558, 1, 0, 0, 0, 2573, 421, 1, 0, 0, 0, 2574, 2579, 3, 388, 194, 0, 2575, 2576, 5,
+ 83, 0, 0, 2576, 2578, 3, 388, 194, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2581, 1, 0, 0, 0,
+ 2579, 2577, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 423, 1, 0, 0, 0, 2581, 2579, 1,
+ 0, 0, 0, 2582, 2583, 3, 58, 29, 0, 2583, 2585, 5, 87, 0, 0, 2584, 2586, 3, 40, 20, 0,
+ 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588,
+ 5, 123, 0, 0, 2588, 2630, 1, 0, 0, 0, 2589, 2590, 3, 390, 195, 0, 2590, 2592, 5, 87,
+ 0, 0, 2591, 2593, 3, 40, 20, 0, 2592, 2591, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593,
+ 2594, 1, 0, 0, 0, 2594, 2595, 5, 123, 0, 0, 2595, 2630, 1, 0, 0, 0, 2596, 2597, 3, 16,
+ 8, 0, 2597, 2599, 5, 87, 0, 0, 2598, 2600, 3, 40, 20, 0, 2599, 2598, 1, 0, 0, 0, 2599,
+ 2600, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2602, 5, 123, 0, 0, 2602, 2630, 1, 0,
+ 0, 0, 2603, 2604, 5, 57, 0, 0, 2604, 2606, 5, 87, 0, 0, 2605, 2607, 3, 40, 20, 0, 2606,
+ 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2630, 5, 123,
+ 0, 0, 2609, 2610, 3, 54, 27, 0, 2610, 2611, 5, 84, 0, 0, 2611, 2612, 5, 57, 0, 0, 2612,
+ 2614, 5, 87, 0, 0, 2613, 2615, 3, 40, 20, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1,
+ 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2617, 5, 123, 0, 0, 2617, 2630, 1, 0, 0, 0, 2618,
+ 2619, 3, 22, 11, 0, 2619, 2621, 5, 87, 0, 0, 2620, 2622, 3, 40, 20, 0, 2621, 2620,
+ 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2624, 5, 48, 0, 0, 2624,
+ 2630, 1, 0, 0, 0, 2625, 2626, 3, 28, 14, 0, 2626, 2627, 5, 87, 0, 0, 2627, 2628, 5,
+ 48, 0, 0, 2628, 2630, 1, 0, 0, 0, 2629, 2582, 1, 0, 0, 0, 2629, 2589, 1, 0, 0, 0, 2629,
+ 2596, 1, 0, 0, 0, 2629, 2603, 1, 0, 0, 0, 2629, 2609, 1, 0, 0, 0, 2629, 2618, 1, 0, 0,
+ 0, 2629, 2625, 1, 0, 0, 0, 2630, 425, 1, 0, 0, 0, 2631, 2633, 3, 390, 195, 0, 2632,
+ 2634, 3, 428, 214, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2640, 1,
+ 0, 0, 0, 2635, 2637, 3, 58, 29, 0, 2636, 2638, 3, 428, 214, 0, 2637, 2636, 1, 0, 0,
+ 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 1, 0, 0, 0, 2639, 2631, 1, 0, 0, 0, 2639, 2635,
+ 1, 0, 0, 0, 2640, 427, 1, 0, 0, 0, 2641, 2643, 5, 102, 0, 0, 2642, 2644, 3, 428, 214,
+ 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2650, 1, 0, 0, 0, 2645, 2647,
+ 5, 103, 0, 0, 2646, 2648, 3, 428, 214, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0,
+ 0, 0, 2648, 2650, 1, 0, 0, 0, 2649, 2641, 1, 0, 0, 0, 2649, 2645, 1, 0, 0, 0, 2650, 429,
+ 1, 0, 0, 0, 2651, 2652, 3, 426, 213, 0, 2652, 2653, 5, 102, 0, 0, 2653, 431, 1, 0, 0,
+ 0, 2654, 2655, 3, 426, 213, 0, 2655, 2656, 5, 103, 0, 0, 2656, 433, 1, 0, 0, 0, 2657,
+ 2665, 3, 436, 218, 0, 2658, 2665, 3, 438, 219, 0, 2659, 2660, 5, 104, 0, 0, 2660,
+ 2665, 3, 434, 217, 0, 2661, 2662, 5, 105, 0, 0, 2662, 2665, 3, 434, 217, 0, 2663,
+ 2665, 3, 440, 220, 0, 2664, 2657, 1, 0, 0, 0, 2664, 2658, 1, 0, 0, 0, 2664, 2659, 1,
+ 0, 0, 0, 2664, 2661, 1, 0, 0, 0, 2664, 2663, 1, 0, 0, 0, 2665, 435, 1, 0, 0, 0, 2666,
+ 2667, 5, 102, 0, 0, 2667, 2668, 3, 434, 217, 0, 2668, 437, 1, 0, 0, 0, 2669, 2670,
+ 5, 103, 0, 0, 2670, 2671, 3, 434, 217, 0, 2671, 439, 1, 0, 0, 0, 2672, 2680, 3, 426,
+ 213, 0, 2673, 2674, 5, 92, 0, 0, 2674, 2680, 3, 434, 217, 0, 2675, 2676, 5, 91, 0,
+ 0, 2676, 2680, 3, 434, 217, 0, 2677, 2680, 3, 442, 221, 0, 2678, 2680, 3, 486, 243,
+ 0, 2679, 2672, 1, 0, 0, 0, 2679, 2673, 1, 0, 0, 0, 2679, 2675, 1, 0, 0, 0, 2679, 2677,
+ 1, 0, 0, 0, 2679, 2678, 1, 0, 0, 0, 2680, 441, 1, 0, 0, 0, 2681, 2682, 5, 76, 0, 0, 2682,
+ 2683, 3, 8, 4, 0, 2683, 2684, 5, 77, 0, 0, 2684, 2685, 3, 434, 217, 0, 2685, 2709,
+ 1, 0, 0, 0, 2686, 2687, 5, 76, 0, 0, 2687, 2691, 3, 16, 8, 0, 2688, 2690, 3, 38, 19,
+ 0, 2689, 2688, 1, 0, 0, 0, 2690, 2693, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2691, 2692,
+ 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2694, 2695, 5, 77, 0, 0, 2695,
+ 2696, 3, 440, 220, 0, 2696, 2709, 1, 0, 0, 0, 2697, 2698, 5, 76, 0, 0, 2698, 2702,
+ 3, 16, 8, 0, 2699, 2701, 3, 38, 19, 0, 2700, 2699, 1, 0, 0, 0, 2701, 2704, 1, 0, 0, 0,
+ 2702, 2700, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 1, 0, 0, 0, 2704, 2702,
+ 1, 0, 0, 0, 2705, 2706, 5, 77, 0, 0, 2706, 2707, 3, 474, 237, 0, 2707, 2709, 1, 0, 0,
+ 0, 2708, 2681, 1, 0, 0, 0, 2708, 2686, 1, 0, 0, 0, 2708, 2697, 1, 0, 0, 0, 2709, 443,
+ 1, 0, 0, 0, 2710, 2711, 6, 222, -1, 0, 2711, 2712, 3, 434, 217, 0, 2712, 2724, 1, 0,
+ 0, 0, 2713, 2714, 10, 3, 0, 0, 2714, 2715, 5, 106, 0, 0, 2715, 2723, 3, 434, 217, 0,
+ 2716, 2717, 10, 2, 0, 0, 2717, 2718, 5, 107, 0, 0, 2718, 2723, 3, 434, 217, 0, 2719,
+ 2720, 10, 1, 0, 0, 2720, 2721, 5, 111, 0, 0, 2721, 2723, 3, 434, 217, 0, 2722, 2713,
+ 1, 0, 0, 0, 2722, 2716, 1, 0, 0, 0, 2722, 2719, 1, 0, 0, 0, 2723, 2726, 1, 0, 0, 0, 2724,
+ 2722, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 445, 1, 0, 0, 0, 2726, 2724, 1, 0, 0,
+ 0, 2727, 2728, 6, 223, -1, 0, 2728, 2729, 3, 444, 222, 0, 2729, 2738, 1, 0, 0, 0, 2730,
+ 2731, 10, 2, 0, 0, 2731, 2732, 5, 104, 0, 0, 2732, 2737, 3, 444, 222, 0, 2733, 2734,
+ 10, 1, 0, 0, 2734, 2735, 5, 105, 0, 0, 2735, 2737, 3, 444, 222, 0, 2736, 2730, 1, 0,
+ 0, 0, 2736, 2733, 1, 0, 0, 0, 2737, 2740, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2738, 2739,
+ 1, 0, 0, 0, 2739, 447, 1, 0, 0, 0, 2740, 2738, 1, 0, 0, 0, 2741, 2742, 6, 224, -1, 0,
+ 2742, 2743, 3, 446, 223, 0, 2743, 2759, 1, 0, 0, 0, 2744, 2745, 10, 3, 0, 0, 2745,
+ 2746, 5, 90, 0, 0, 2746, 2747, 5, 90, 0, 0, 2747, 2758, 3, 446, 223, 0, 2748, 2749,
+ 10, 2, 0, 0, 2749, 2750, 5, 89, 0, 0, 2750, 2751, 5, 89, 0, 0, 2751, 2758, 3, 446, 223,
+ 0, 2752, 2753, 10, 1, 0, 0, 2753, 2754, 5, 89, 0, 0, 2754, 2755, 5, 89, 0, 0, 2755,
+ 2756, 5, 89, 0, 0, 2756, 2758, 3, 446, 223, 0, 2757, 2744, 1, 0, 0, 0, 2757, 2748,
+ 1, 0, 0, 0, 2757, 2752, 1, 0, 0, 0, 2758, 2761, 1, 0, 0, 0, 2759, 2757, 1, 0, 0, 0, 2759,
+ 2760, 1, 0, 0, 0, 2760, 449, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 2763, 6, 225,
+ -1, 0, 2763, 2764, 3, 448, 224, 0, 2764, 2785, 1, 0, 0, 0, 2765, 2766, 10, 5, 0, 0,
+ 2766, 2767, 5, 90, 0, 0, 2767, 2784, 3, 448, 224, 0, 2768, 2769, 10, 4, 0, 0, 2769,
+ 2770, 5, 89, 0, 0, 2770, 2784, 3, 448, 224, 0, 2771, 2772, 10, 3, 0, 0, 2772, 2773,
+ 5, 97, 0, 0, 2773, 2784, 3, 448, 224, 0, 2774, 2775, 10, 2, 0, 0, 2775, 2776, 5, 98,
+ 0, 0, 2776, 2784, 3, 448, 224, 0, 2777, 2778, 10, 1, 0, 0, 2778, 2781, 5, 43, 0, 0,
+ 2779, 2782, 3, 16, 8, 0, 2780, 2782, 3, 384, 192, 0, 2781, 2779, 1, 0, 0, 0, 2781,
+ 2780, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2765, 1, 0, 0, 0, 2783, 2768, 1, 0, 0,
+ 0, 2783, 2771, 1, 0, 0, 0, 2783, 2774, 1, 0, 0, 0, 2783, 2777, 1, 0, 0, 0, 2784, 2787,
+ 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 451, 1, 0, 0, 0, 2787,
+ 2785, 1, 0, 0, 0, 2788, 2789, 6, 226, -1, 0, 2789, 2790, 3, 450, 225, 0, 2790, 2799,
+ 1, 0, 0, 0, 2791, 2792, 10, 2, 0, 0, 2792, 2793, 5, 96, 0, 0, 2793, 2798, 3, 450, 225,
+ 0, 2794, 2795, 10, 1, 0, 0, 2795, 2796, 5, 99, 0, 0, 2796, 2798, 3, 450, 225, 0, 2797,
+ 2791, 1, 0, 0, 0, 2797, 2794, 1, 0, 0, 0, 2798, 2801, 1, 0, 0, 0, 2799, 2797, 1, 0, 0,
+ 0, 2799, 2800, 1, 0, 0, 0, 2800, 453, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2802, 2803,
+ 6, 227, -1, 0, 2803, 2804, 3, 452, 226, 0, 2804, 2810, 1, 0, 0, 0, 2805, 2806, 10,
+ 1, 0, 0, 2806, 2807, 5, 108, 0, 0, 2807, 2809, 3, 452, 226, 0, 2808, 2805, 1, 0, 0,
+ 0, 2809, 2812, 1, 0, 0, 0, 2810, 2808, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 455,
+ 1, 0, 0, 0, 2812, 2810, 1, 0, 0, 0, 2813, 2814, 6, 228, -1, 0, 2814, 2815, 3, 454, 227,
+ 0, 2815, 2821, 1, 0, 0, 0, 2816, 2817, 10, 1, 0, 0, 2817, 2818, 5, 110, 0, 0, 2818,
+ 2820, 3, 454, 227, 0, 2819, 2816, 1, 0, 0, 0, 2820, 2823, 1, 0, 0, 0, 2821, 2819, 1,
+ 0, 0, 0, 2821, 2822, 1, 0, 0, 0, 2822, 457, 1, 0, 0, 0, 2823, 2821, 1, 0, 0, 0, 2824,
+ 2825, 6, 229, -1, 0, 2825, 2826, 3, 456, 228, 0, 2826, 2832, 1, 0, 0, 0, 2827, 2828,
+ 10, 1, 0, 0, 2828, 2829, 5, 109, 0, 0, 2829, 2831, 3, 456, 228, 0, 2830, 2827, 1, 0,
+ 0, 0, 2831, 2834, 1, 0, 0, 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 459,
+ 1, 0, 0, 0, 2834, 2832, 1, 0, 0, 0, 2835, 2836, 6, 230, -1, 0, 2836, 2837, 3, 458, 229,
+ 0, 2837, 2843, 1, 0, 0, 0, 2838, 2839, 10, 1, 0, 0, 2839, 2840, 5, 100, 0, 0, 2840,
+ 2842, 3, 458, 229, 0, 2841, 2838, 1, 0, 0, 0, 2842, 2845, 1, 0, 0, 0, 2843, 2841, 1,
+ 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 461, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846,
+ 2847, 6, 231, -1, 0, 2847, 2848, 3, 460, 230, 0, 2848, 2854, 1, 0, 0, 0, 2849, 2850,
+ 10, 1, 0, 0, 2850, 2851, 5, 101, 0, 0, 2851, 2853, 3, 460, 230, 0, 2852, 2849, 1, 0,
+ 0, 0, 2853, 2856, 1, 0, 0, 0, 2854, 2852, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 463,
+ 1, 0, 0, 0, 2856, 2854, 1, 0, 0, 0, 2857, 2871, 3, 462, 231, 0, 2858, 2859, 3, 462,
+ 231, 0, 2859, 2860, 5, 93, 0, 0, 2860, 2861, 3, 388, 194, 0, 2861, 2862, 5, 94, 0,
+ 0, 2862, 2863, 3, 464, 232, 0, 2863, 2871, 1, 0, 0, 0, 2864, 2865, 3, 462, 231, 0,
+ 2865, 2866, 5, 93, 0, 0, 2866, 2867, 3, 388, 194, 0, 2867, 2868, 5, 94, 0, 0, 2868,
+ 2869, 3, 474, 237, 0, 2869, 2871, 1, 0, 0, 0, 2870, 2857, 1, 0, 0, 0, 2870, 2858, 1,
+ 0, 0, 0, 2870, 2864, 1, 0, 0, 0, 2871, 465, 1, 0, 0, 0, 2872, 2875, 3, 464, 232, 0, 2873,
+ 2875, 3, 468, 234, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2873, 1, 0, 0, 0, 2875, 467, 1,
+ 0, 0, 0, 2876, 2877, 3, 470, 235, 0, 2877, 2878, 3, 472, 236, 0, 2878, 2879, 3, 388,
+ 194, 0, 2879, 469, 1, 0, 0, 0, 2880, 2884, 3, 58, 29, 0, 2881, 2884, 3, 418, 209, 0,
+ 2882, 2884, 3, 416, 208, 0, 2883, 2880, 1, 0, 0, 0, 2883, 2881, 1, 0, 0, 0, 2883, 2882,
+ 1, 0, 0, 0, 2884, 471, 1, 0, 0, 0, 2885, 2886, 7, 5, 0, 0, 2886, 473, 1, 0, 0, 0, 2887,
+ 2888, 3, 476, 238, 0, 2888, 2889, 5, 95, 0, 0, 2889, 2890, 3, 484, 242, 0, 2890, 475,
+ 1, 0, 0, 0, 2891, 2893, 5, 76, 0, 0, 2892, 2894, 3, 478, 239, 0, 2893, 2892, 1, 0, 0,
+ 0, 2893, 2894, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 2898, 5, 77, 0, 0, 2896, 2898,
+ 5, 123, 0, 0, 2897, 2891, 1, 0, 0, 0, 2897, 2896, 1, 0, 0, 0, 2898, 477, 1, 0, 0, 0, 2899,
+ 2904, 3, 480, 240, 0, 2900, 2901, 5, 83, 0, 0, 2901, 2903, 3, 480, 240, 0, 2902, 2900,
+ 1, 0, 0, 0, 2903, 2906, 1, 0, 0, 0, 2904, 2902, 1, 0, 0, 0, 2904, 2905, 1, 0, 0, 0, 2905,
+ 2916, 1, 0, 0, 0, 2906, 2904, 1, 0, 0, 0, 2907, 2912, 5, 123, 0, 0, 2908, 2909, 5, 83,
+ 0, 0, 2909, 2911, 5, 123, 0, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912,
+ 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2916, 1, 0, 0, 0, 2914, 2912, 1, 0, 0,
+ 0, 2915, 2899, 1, 0, 0, 0, 2915, 2907, 1, 0, 0, 0, 2916, 479, 1, 0, 0, 0, 2917, 2919,
+ 3, 164, 82, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2922, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0,
+ 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2920, 1, 0, 0, 0, 2923, 2924,
+ 3, 482, 241, 0, 2924, 2925, 3, 124, 62, 0, 2925, 2928, 1, 0, 0, 0, 2926, 2928, 3, 162,
+ 81, 0, 2927, 2920, 1, 0, 0, 0, 2927, 2926, 1, 0, 0, 0, 2928, 481, 1, 0, 0, 0, 2929, 2932,
+ 3, 128, 64, 0, 2930, 2932, 5, 15, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2930, 1, 0, 0,
+ 0, 2932, 483, 1, 0, 0, 0, 2933, 2936, 3, 388, 194, 0, 2934, 2936, 3, 276, 138, 0, 2935,
+ 2933, 1, 0, 0, 0, 2935, 2934, 1, 0, 0, 0, 2936, 485, 1, 0, 0, 0, 2937, 2938, 5, 58, 0,
+ 0, 2938, 2939, 5, 76, 0, 0, 2939, 2940, 3, 388, 194, 0, 2940, 2941, 5, 77, 0, 0, 2941,
+ 2942, 3, 316, 158, 0, 2942, 487, 1, 0, 0, 0, 2943, 2944, 3, 388, 194, 0, 2944, 489,
+ 1, 0, 0, 0, 360, 502, 507, 511, 520, 526, 531, 534, 539, 544, 549, 552, 557, 562,
+ 569, 574, 581, 586, 588, 595, 609, 614, 622, 629, 635, 640, 650, 653, 667, 672,
+ 677, 682, 688, 693, 698, 703, 708, 713, 722, 726, 729, 734, 740, 746, 754, 763,
+ 774, 803, 808, 812, 820, 827, 836, 850, 853, 865, 868, 884, 889, 896, 901, 907,
+ 910, 913, 916, 930, 941, 955, 964, 971, 980, 987, 992, 1007, 1014, 1020, 1024,
+ 1028, 1032, 1036, 1041, 1048, 1051, 1055, 1058, 1064, 1069, 1072, 1076, 1080,
+ 1086, 1091, 1093, 1102, 1109, 1125, 1131, 1134, 1139, 1143, 1150, 1153, 1157,
+ 1162, 1168, 1177, 1183, 1190, 1195, 1202, 1210, 1220, 1225, 1229, 1239, 1244,
+ 1252, 1255, 1262, 1265, 1273, 1276, 1281, 1286, 1292, 1296, 1301, 1306, 1311,
+ 1317, 1323, 1326, 1329, 1338, 1344, 1350, 1353, 1356, 1364, 1370, 1376, 1380,
+ 1386, 1395, 1401, 1408, 1413, 1420, 1432, 1439, 1444, 1452, 1457, 1463, 1466,
+ 1469, 1482, 1493, 1500, 1510, 1515, 1526, 1531, 1544, 1549, 1561, 1571, 1576,
+ 1584, 1587, 1594, 1602, 1608, 1617, 1627, 1631, 1634, 1643, 1657, 1660, 1669,
+ 1674, 1682, 1688, 1692, 1697, 1702, 1706, 1717, 1724, 1739, 1761, 1789, 1804,
+ 1813, 1821, 1825, 1834, 1843, 1854, 1858, 1884, 1888, 1893, 1897, 1901, 1909,
+ 1913, 1917, 1924, 1933, 1954, 1960, 1966, 1991, 1996, 2002, 2014, 2025, 2035,
+ 2038, 2043, 2052, 2057, 2061, 2073, 2077, 2081, 2085, 2089, 2095, 2101, 2105,
+ 2111, 2117, 2123, 2129, 2137, 2144, 2151, 2156, 2160, 2165, 2170, 2174, 2179,
+ 2184, 2188, 2193, 2198, 2202, 2207, 2212, 2216, 2223, 2228, 2232, 2237, 2241,
+ 2246, 2250, 2255, 2259, 2264, 2268, 2275, 2279, 2284, 2288, 2294, 2296, 2301,
+ 2306, 2312, 2316, 2321, 2325, 2329, 2333, 2335, 2342, 2353, 2364, 2372, 2383,
+ 2387, 2392, 2396, 2401, 2409, 2415, 2419, 2423, 2427, 2433, 2439, 2441, 2453,
+ 2459, 2465, 2487, 2502, 2507, 2514, 2519, 2526, 2531, 2538, 2543, 2550, 2555,
+ 2563, 2568, 2572, 2579, 2585, 2592, 2599, 2606, 2614, 2621, 2629, 2633, 2637,
+ 2639, 2643, 2647, 2649, 2664, 2679, 2691, 2702, 2708, 2722, 2724, 2736, 2738,
+ 2757, 2759, 2781, 2783, 2785, 2797, 2799, 2810, 2821, 2832, 2843, 2854, 2870,
+ 2874, 2883, 2893, 2897, 2904, 2912, 2915, 2920, 2927, 2931, 2935
+ ]
+
+
+class Java20Parser(Parser):
+ grammarFileName = "Java20Parser.g4"
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ sharedContextCache = PredictionContextCache()
+
+ literalNames = ["", "'exports'", "'module'", "'non-sealed'",
+ "'<>'", "'open'", "'opens'", "'permits'", "'provides'",
+ "'record'", "'requires'", "'sealed'", "'to'", "'transitive'",
+ "'uses'", "'var'", "'with'", "'yield'", "'abstract'",
+ "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'",
+ "'default'", "'do'", "'double'", "'else'", "'enum'",
+ "'extends'", "'final'", "'finally'", "'float'", "'for'",
+ "'if'", "'goto'", "'implements'", "'import'", "'instanceof'",
+ "'int'", "'interface'", "'long'", "'native'", "'new'",
+ "'package'", "'private'", "'protected'", "'public'",
+ "'return'", "'short'", "'static'", "'strictfp'", "'super'",
+ "'switch'", "'synchronized'", "'this'", "'throw'",
+ "'throws'", "'transient'", "'try'", "'void'", "'volatile'",
+ "'while'", "'_'", "", "", "",
+ "", "", "", "'null'", "'('",
+ "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'",
+ "'...'", "'@'", "'::'", "'='", "'>'", "'<'", "'!'",
+ "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='",
+ "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'",
+ "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='",
+ "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='",
+ "'>>='", "'>>>='"]
+
+ symbolicNames = ["", "EXPORTS", "MODULE", "NONSEALED", "OACA",
+ "OPEN", "OPENS", "PERMITS", "PROVIDES", "RECORD",
+ "REQUIRES", "SEALED", "TO", "TRANSITIVE", "USES",
+ "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN",
+ "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS",
+ "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE",
+ "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR",
+ "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF",
+ "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE",
+ "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT",
+ "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
+ "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral",
+ "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral",
+ "StringLiteral", "TextBlock", "NullLiteral", "LPAREN",
+ "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
+ "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON",
+ "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION",
+ "COLON", "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL",
+ "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV",
+ "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN",
+ "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN",
+ "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT", "LINE_COMMENT"]
+
+ RULE_start_ = 0
+ RULE_literal = 1
+ RULE_typeIdentifier = 2
+ RULE_unqualifiedMethodIdentifier = 3
+ RULE_primitiveType = 4
+ RULE_numericType = 5
+ RULE_integralType = 6
+ RULE_floatingPointType = 7
+ RULE_referenceType = 8
+ RULE_coit = 9
+ RULE_classOrInterfaceType = 10
+ RULE_classType = 11
+ RULE_interfaceType = 12
+ RULE_typeVariable = 13
+ RULE_arrayType = 14
+ RULE_dims = 15
+ RULE_typeParameter = 16
+ RULE_typeParameterModifier = 17
+ RULE_typeBound = 18
+ RULE_additionalBound = 19
+ RULE_typeArguments = 20
+ RULE_typeArgumentList = 21
+ RULE_typeArgument = 22
+ RULE_wildcard = 23
+ RULE_wildcardBounds = 24
+ RULE_moduleName = 25
+ RULE_packageName = 26
+ RULE_typeName = 27
+ RULE_packageOrTypeName = 28
+ RULE_expressionName = 29
+ RULE_methodName = 30
+ RULE_ambiguousName = 31
+ RULE_compilationUnit = 32
+ RULE_ordinaryCompilationUnit = 33
+ RULE_modularCompilationUnit = 34
+ RULE_packageDeclaration = 35
+ RULE_packageModifier = 36
+ RULE_importDeclaration = 37
+ RULE_singleTypeImportDeclaration = 38
+ RULE_typeImportOnDemandDeclaration = 39
+ RULE_singleStaticImportDeclaration = 40
+ RULE_staticImportOnDemandDeclaration = 41
+ RULE_topLevelClassOrInterfaceDeclaration = 42
+ RULE_moduleDeclaration = 43
+ RULE_moduleDirective = 44
+ RULE_requiresModifier = 45
+ RULE_classDeclaration = 46
+ RULE_normalClassDeclaration = 47
+ RULE_classModifier = 48
+ RULE_typeParameters = 49
+ RULE_typeParameterList = 50
+ RULE_classExtends = 51
+ RULE_classImplements = 52
+ RULE_interfaceTypeList = 53
+ RULE_classPermits = 54
+ RULE_classBody = 55
+ RULE_classBodyDeclaration = 56
+ RULE_classMemberDeclaration = 57
+ RULE_fieldDeclaration = 58
+ RULE_fieldModifier = 59
+ RULE_variableDeclaratorList = 60
+ RULE_variableDeclarator = 61
+ RULE_variableDeclaratorId = 62
+ RULE_variableInitializer = 63
+ RULE_unannType = 64
+ RULE_unannPrimitiveType = 65
+ RULE_unannReferenceType = 66
+ RULE_unannClassOrInterfaceType = 67
+ RULE_uCOIT = 68
+ RULE_unannClassType = 69
+ RULE_unannInterfaceType = 70
+ RULE_unannTypeVariable = 71
+ RULE_unannArrayType = 72
+ RULE_methodDeclaration = 73
+ RULE_methodModifier = 74
+ RULE_methodHeader = 75
+ RULE_result = 76
+ RULE_methodDeclarator = 77
+ RULE_receiverParameter = 78
+ RULE_formalParameterList = 79
+ RULE_formalParameter = 80
+ RULE_variableArityParameter = 81
+ RULE_variableModifier = 82
+ RULE_throwsT = 83
+ RULE_exceptionTypeList = 84
+ RULE_exceptionType = 85
+ RULE_methodBody = 86
+ RULE_instanceInitializer = 87
+ RULE_staticInitializer = 88
+ RULE_constructorDeclaration = 89
+ RULE_constructorModifier = 90
+ RULE_constructorDeclarator = 91
+ RULE_simpleTypeName = 92
+ RULE_constructorBody = 93
+ RULE_explicitConstructorInvocation = 94
+ RULE_enumDeclaration = 95
+ RULE_enumBody = 96
+ RULE_enumConstantList = 97
+ RULE_enumConstant = 98
+ RULE_enumConstantModifier = 99
+ RULE_enumBodyDeclarations = 100
+ RULE_recordDeclaration = 101
+ RULE_recordHeader = 102
+ RULE_recordComponentList = 103
+ RULE_recordComponent = 104
+ RULE_variableArityRecordComponent = 105
+ RULE_recordComponentModifier = 106
+ RULE_recordBody = 107
+ RULE_recordBodyDeclaration = 108
+ RULE_compactConstructorDeclaration = 109
+ RULE_interfaceDeclaration = 110
+ RULE_normalInterfaceDeclaration = 111
+ RULE_interfaceModifier = 112
+ RULE_interfaceExtends = 113
+ RULE_interfacePermits = 114
+ RULE_interfaceBody = 115
+ RULE_interfaceMemberDeclaration = 116
+ RULE_constantDeclaration = 117
+ RULE_constantModifier = 118
+ RULE_interfaceMethodDeclaration = 119
+ RULE_interfaceMethodModifier = 120
+ RULE_annotationInterfaceDeclaration = 121
+ RULE_annotationInterfaceBody = 122
+ RULE_annotationInterfaceMemberDeclaration = 123
+ RULE_annotationInterfaceElementDeclaration = 124
+ RULE_annotationInterfaceElementModifier = 125
+ RULE_defaultValue = 126
+ RULE_annotation = 127
+ RULE_normalAnnotation = 128
+ RULE_elementValuePairList = 129
+ RULE_elementValuePair = 130
+ RULE_elementValue = 131
+ RULE_elementValueArrayInitializer = 132
+ RULE_elementValueList = 133
+ RULE_markerAnnotation = 134
+ RULE_singleElementAnnotation = 135
+ RULE_arrayInitializer = 136
+ RULE_variableInitializerList = 137
+ RULE_block = 138
+ RULE_blockStatements = 139
+ RULE_blockStatement = 140
+ RULE_localClassOrInterfaceDeclaration = 141
+ RULE_localVariableDeclaration = 142
+ RULE_localVariableType = 143
+ RULE_localVariableDeclarationStatement = 144
+ RULE_statement = 145
+ RULE_statementNoShortIf = 146
+ RULE_statementWithoutTrailingSubstatement = 147
+ RULE_emptyStatement_ = 148
+ RULE_labeledStatement = 149
+ RULE_labeledStatementNoShortIf = 150
+ RULE_expressionStatement = 151
+ RULE_statementExpression = 152
+ RULE_ifThenStatement = 153
+ RULE_ifThenElseStatement = 154
+ RULE_ifThenElseStatementNoShortIf = 155
+ RULE_assertStatement = 156
+ RULE_switchStatement = 157
+ RULE_switchBlock = 158
+ RULE_switchRule = 159
+ RULE_switchBlockStatementGroup = 160
+ RULE_switchLabel = 161
+ RULE_caseConstant = 162
+ RULE_whileStatement = 163
+ RULE_whileStatementNoShortIf = 164
+ RULE_doStatement = 165
+ RULE_forStatement = 166
+ RULE_forStatementNoShortIf = 167
+ RULE_basicForStatement = 168
+ RULE_basicForStatementNoShortIf = 169
+ RULE_forInit = 170
+ RULE_forUpdate = 171
+ RULE_statementExpressionList = 172
+ RULE_enhancedForStatement = 173
+ RULE_enhancedForStatementNoShortIf = 174
+ RULE_breakStatement = 175
+ RULE_continueStatement = 176
+ RULE_returnStatement = 177
+ RULE_throwStatement = 178
+ RULE_synchronizedStatement = 179
+ RULE_tryStatement = 180
+ RULE_catches = 181
+ RULE_catchClause = 182
+ RULE_catchFormalParameter = 183
+ RULE_catchType = 184
+ RULE_finallyBlock = 185
+ RULE_tryWithResourcesStatement = 186
+ RULE_resourceSpecification = 187
+ RULE_resourceList = 188
+ RULE_resource = 189
+ RULE_variableAccess = 190
+ RULE_yieldStatement = 191
+ RULE_pattern = 192
+ RULE_typePattern = 193
+ RULE_expression = 194
+ RULE_primary = 195
+ RULE_primaryNoNewArray = 196
+ RULE_pNNA = 197
+ RULE_classLiteral = 198
+ RULE_classInstanceCreationExpression = 199
+ RULE_unqualifiedClassInstanceCreationExpression = 200
+ RULE_classOrInterfaceTypeToInstantiate = 201
+ RULE_typeArgumentsOrDiamond = 202
+ RULE_arrayCreationExpression = 203
+ RULE_arrayCreationExpressionWithoutInitializer = 204
+ RULE_arrayCreationExpressionWithInitializer = 205
+ RULE_dimExprs = 206
+ RULE_dimExpr = 207
+ RULE_arrayAccess = 208
+ RULE_fieldAccess = 209
+ RULE_methodInvocation = 210
+ RULE_argumentList = 211
+ RULE_methodReference = 212
+ RULE_postfixExpression = 213
+ RULE_pfE = 214
+ RULE_postIncrementExpression = 215
+ RULE_postDecrementExpression = 216
+ RULE_unaryExpression = 217
+ RULE_preIncrementExpression = 218
+ RULE_preDecrementExpression = 219
+ RULE_unaryExpressionNotPlusMinus = 220
+ RULE_castExpression = 221
+ RULE_multiplicativeExpression = 222
+ RULE_additiveExpression = 223
+ RULE_shiftExpression = 224
+ RULE_relationalExpression = 225
+ RULE_equalityExpression = 226
+ RULE_andExpression = 227
+ RULE_exclusiveOrExpression = 228
+ RULE_inclusiveOrExpression = 229
+ RULE_conditionalAndExpression = 230
+ RULE_conditionalOrExpression = 231
+ RULE_conditionalExpression = 232
+ RULE_assignmentExpression = 233
+ RULE_assignment = 234
+ RULE_leftHandSide = 235
+ RULE_assignmentOperator = 236
+ RULE_lambdaExpression = 237
+ RULE_lambdaParameters = 238
+ RULE_lambdaParameterList = 239
+ RULE_lambdaParameter = 240
+ RULE_lambdaParameterType = 241
+ RULE_lambdaBody = 242
+ RULE_switchExpression = 243
+ RULE_constantExpression = 244
+
+ ruleNames = ["start_", "literal", "typeIdentifier", "unqualifiedMethodIdentifier",
+ "primitiveType", "numericType", "integralType", "floatingPointType",
+ "referenceType", "coit", "classOrInterfaceType", "classType",
+ "interfaceType", "typeVariable", "arrayType", "dims",
+ "typeParameter", "typeParameterModifier", "typeBound",
+ "additionalBound", "typeArguments", "typeArgumentList",
+ "typeArgument", "wildcard", "wildcardBounds", "moduleName",
+ "packageName", "typeName", "packageOrTypeName", "expressionName",
+ "methodName", "ambiguousName", "compilationUnit", "ordinaryCompilationUnit",
+ "modularCompilationUnit", "packageDeclaration", "packageModifier",
+ "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration",
+ "singleStaticImportDeclaration", "staticImportOnDemandDeclaration",
+ "topLevelClassOrInterfaceDeclaration", "moduleDeclaration",
+ "moduleDirective", "requiresModifier", "classDeclaration",
+ "normalClassDeclaration", "classModifier", "typeParameters",
+ "typeParameterList", "classExtends", "classImplements",
+ "interfaceTypeList", "classPermits", "classBody", "classBodyDeclaration",
+ "classMemberDeclaration", "fieldDeclaration", "fieldModifier",
+ "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId",
+ "variableInitializer", "unannType", "unannPrimitiveType",
+ "unannReferenceType", "unannClassOrInterfaceType", "uCOIT",
+ "unannClassType", "unannInterfaceType", "unannTypeVariable",
+ "unannArrayType", "methodDeclaration", "methodModifier",
+ "methodHeader", "result", "methodDeclarator", "receiverParameter",
+ "formalParameterList", "formalParameter", "variableArityParameter",
+ "variableModifier", "throwsT", "exceptionTypeList", "exceptionType",
+ "methodBody", "instanceInitializer", "staticInitializer",
+ "constructorDeclaration", "constructorModifier", "constructorDeclarator",
+ "simpleTypeName", "constructorBody", "explicitConstructorInvocation",
+ "enumDeclaration", "enumBody", "enumConstantList", "enumConstant",
+ "enumConstantModifier", "enumBodyDeclarations", "recordDeclaration",
+ "recordHeader", "recordComponentList", "recordComponent",
+ "variableArityRecordComponent", "recordComponentModifier",
+ "recordBody", "recordBodyDeclaration", "compactConstructorDeclaration",
+ "interfaceDeclaration", "normalInterfaceDeclaration",
+ "interfaceModifier", "interfaceExtends", "interfacePermits",
+ "interfaceBody", "interfaceMemberDeclaration", "constantDeclaration",
+ "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier",
+ "annotationInterfaceDeclaration", "annotationInterfaceBody",
+ "annotationInterfaceMemberDeclaration", "annotationInterfaceElementDeclaration",
+ "annotationInterfaceElementModifier", "defaultValue",
+ "annotation", "normalAnnotation", "elementValuePairList",
+ "elementValuePair", "elementValue", "elementValueArrayInitializer",
+ "elementValueList", "markerAnnotation", "singleElementAnnotation",
+ "arrayInitializer", "variableInitializerList", "block",
+ "blockStatements", "blockStatement", "localClassOrInterfaceDeclaration",
+ "localVariableDeclaration", "localVariableType", "localVariableDeclarationStatement",
+ "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement",
+ "emptyStatement_", "labeledStatement", "labeledStatementNoShortIf",
+ "expressionStatement", "statementExpression", "ifThenStatement",
+ "ifThenElseStatement", "ifThenElseStatementNoShortIf",
+ "assertStatement", "switchStatement", "switchBlock",
+ "switchRule", "switchBlockStatementGroup", "switchLabel",
+ "caseConstant", "whileStatement", "whileStatementNoShortIf",
+ "doStatement", "forStatement", "forStatementNoShortIf",
+ "basicForStatement", "basicForStatementNoShortIf", "forInit",
+ "forUpdate", "statementExpressionList", "enhancedForStatement",
+ "enhancedForStatementNoShortIf", "breakStatement", "continueStatement",
+ "returnStatement", "throwStatement", "synchronizedStatement",
+ "tryStatement", "catches", "catchClause", "catchFormalParameter",
+ "catchType", "finallyBlock", "tryWithResourcesStatement",
+ "resourceSpecification", "resourceList", "resource",
+ "variableAccess", "yieldStatement", "pattern", "typePattern",
+ "expression", "primary", "primaryNoNewArray", "pNNA",
+ "classLiteral", "classInstanceCreationExpression", "unqualifiedClassInstanceCreationExpression",
+ "classOrInterfaceTypeToInstantiate", "typeArgumentsOrDiamond",
+ "arrayCreationExpression", "arrayCreationExpressionWithoutInitializer",
+ "arrayCreationExpressionWithInitializer", "dimExprs",
+ "dimExpr", "arrayAccess", "fieldAccess", "methodInvocation",
+ "argumentList", "methodReference", "postfixExpression",
+ "pfE", "postIncrementExpression", "postDecrementExpression",
+ "unaryExpression", "preIncrementExpression", "preDecrementExpression",
+ "unaryExpressionNotPlusMinus", "castExpression", "multiplicativeExpression",
+ "additiveExpression", "shiftExpression", "relationalExpression",
+ "equalityExpression", "andExpression", "exclusiveOrExpression",
+ "inclusiveOrExpression", "conditionalAndExpression",
+ "conditionalOrExpression", "conditionalExpression", "assignmentExpression",
+ "assignment", "leftHandSide", "assignmentOperator", "lambdaExpression",
+ "lambdaParameters", "lambdaParameterList", "lambdaParameter",
+ "lambdaParameterType", "lambdaBody", "switchExpression",
+ "constantExpression"]
+
+ EOF = Token.EOF
+ EXPORTS = 1
+ MODULE = 2
+ NONSEALED = 3
+ OACA = 4
+ OPEN = 5
+ OPENS = 6
+ PERMITS = 7
+ PROVIDES = 8
+ RECORD = 9
+ REQUIRES = 10
+ SEALED = 11
+ TO = 12
+ TRANSITIVE = 13
+ USES = 14
+ VAR = 15
+ WITH = 16
+ YIELD = 17
+ ABSTRACT = 18
+ ASSERT = 19
+ BOOLEAN = 20
+ BREAK = 21
+ BYTE = 22
+ CASE = 23
+ CATCH = 24
+ CHAR = 25
+ CLASS = 26
+ CONST = 27
+ CONTINUE = 28
+ DEFAULT = 29
+ DO = 30
+ DOUBLE = 31
+ ELSE = 32
+ ENUM = 33
+ EXTENDS = 34
+ FINAL = 35
+ FINALLY = 36
+ FLOAT = 37
+ FOR = 38
+ IF = 39
+ GOTO = 40
+ IMPLEMENTS = 41
+ IMPORT = 42
+ INSTANCEOF = 43
+ INT = 44
+ INTERFACE = 45
+ LONG = 46
+ NATIVE = 47
+ NEW = 48
+ PACKAGE = 49
+ PRIVATE = 50
+ PROTECTED = 51
+ PUBLIC = 52
+ RETURN = 53
+ SHORT = 54
+ STATIC = 55
+ STRICTFP = 56
+ SUPER = 57
+ SWITCH = 58
+ SYNCHRONIZED = 59
+ THIS = 60
+ THROW = 61
+ THROWS = 62
+ TRANSIENT = 63
+ TRY = 64
+ VOID = 65
+ VOLATILE = 66
+ WHILE = 67
+ UNDER_SCORE = 68
+ IntegerLiteral = 69
+ FloatingPointLiteral = 70
+ BooleanLiteral = 71
+ CharacterLiteral = 72
+ StringLiteral = 73
+ TextBlock = 74
+ NullLiteral = 75
+ LPAREN = 76
+ RPAREN = 77
+ LBRACE = 78
+ RBRACE = 79
+ LBRACK = 80
+ RBRACK = 81
+ SEMI = 82
+ COMMA = 83
+ DOT = 84
+ ELLIPSIS = 85
+ AT = 86
+ COLONCOLON = 87
+ ASSIGN = 88
+ GT = 89
+ LT = 90
+ BANG = 91
+ TILDE = 92
+ QUESTION = 93
+ COLON = 94
+ ARROW = 95
+ EQUAL = 96
+ LE = 97
+ GE = 98
+ NOTEQUAL = 99
+ AND = 100
+ OR = 101
+ INC = 102
+ DEC = 103
+ ADD = 104
+ SUB = 105
+ MUL = 106
+ DIV = 107
+ BITAND = 108
+ BITOR = 109
+ CARET = 110
+ MOD = 111
+ ADD_ASSIGN = 112
+ SUB_ASSIGN = 113
+ MUL_ASSIGN = 114
+ DIV_ASSIGN = 115
+ AND_ASSIGN = 116
+ OR_ASSIGN = 117
+ XOR_ASSIGN = 118
+ MOD_ASSIGN = 119
+ LSHIFT_ASSIGN = 120
+ RSHIFT_ASSIGN = 121
+ URSHIFT_ASSIGN = 122
+ Identifier = 123
+ WS = 124
+ COMMENT = 125
+ LINE_COMMENT = 126
+
+ def __init__(self, input: TokenStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
+ self._predicates = None
+
+ class Start_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def compilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.CompilationUnitContext, 0)
+
+ def EOF(self):
+ return self.getToken(Java20Parser.EOF, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_start_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStart_"):
+ listener.enterStart_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStart_"):
+ listener.exitStart_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStart_"):
+ return visitor.visitStart_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def start_(self):
+
+ localctx = Java20Parser.Start_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 0, self.RULE_start_)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 490
+ self.compilationUnit()
+ self.state = 491
+ self.match(Java20Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LiteralContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IntegerLiteral(self):
+ return self.getToken(Java20Parser.IntegerLiteral, 0)
+
+ def FloatingPointLiteral(self):
+ return self.getToken(Java20Parser.FloatingPointLiteral, 0)
+
+ def BooleanLiteral(self):
+ return self.getToken(Java20Parser.BooleanLiteral, 0)
+
+ def CharacterLiteral(self):
+ return self.getToken(Java20Parser.CharacterLiteral, 0)
+
+ def StringLiteral(self):
+ return self.getToken(Java20Parser.StringLiteral, 0)
+
+ def TextBlock(self):
+ return self.getToken(Java20Parser.TextBlock, 0)
+
+ def NullLiteral(self):
+ return self.getToken(Java20Parser.NullLiteral, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_literal
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral"):
+ listener.enterLiteral(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral"):
+ listener.exitLiteral(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral"):
+ return visitor.visitLiteral(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal(self):
+
+ localctx = Java20Parser.LiteralContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 2, self.RULE_literal)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 493
+ _la = self._input.LA(1)
+ if not (((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 127) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeIdentifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeIdentifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeIdentifier"):
+ listener.enterTypeIdentifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeIdentifier"):
+ listener.exitTypeIdentifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeIdentifier"):
+ return visitor.visitTypeIdentifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeIdentifier(self):
+
+ localctx = Java20Parser.TypeIdentifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 4, self.RULE_typeIdentifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 495
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnqualifiedMethodIdentifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unqualifiedMethodIdentifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnqualifiedMethodIdentifier"):
+ listener.enterUnqualifiedMethodIdentifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnqualifiedMethodIdentifier"):
+ listener.exitUnqualifiedMethodIdentifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnqualifiedMethodIdentifier"):
+ return visitor.visitUnqualifiedMethodIdentifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unqualifiedMethodIdentifier(self):
+
+ localctx = Java20Parser.UnqualifiedMethodIdentifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 6, self.RULE_unqualifiedMethodIdentifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 497
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimitiveTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primitiveType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimitiveType"):
+ listener.enterPrimitiveType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimitiveType"):
+ listener.exitPrimitiveType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimitiveType"):
+ return visitor.visitPrimitiveType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primitiveType(self):
+
+ localctx = Java20Parser.PrimitiveTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 8, self.RULE_primitiveType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 502
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 499
+ self.annotation()
+ self.state = 504
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 507
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 31, 37, 44, 46, 54]:
+ self.state = 505
+ self.numericType()
+ pass
+ elif token in [20]:
+ self.state = 506
+ self.match(Java20Parser.BOOLEAN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NumericTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def integralType(self):
+ return self.getTypedRuleContext(Java20Parser.IntegralTypeContext, 0)
+
+ def floatingPointType(self):
+ return self.getTypedRuleContext(Java20Parser.FloatingPointTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_numericType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNumericType"):
+ listener.enterNumericType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNumericType"):
+ listener.exitNumericType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNumericType"):
+ return visitor.visitNumericType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def numericType(self):
+
+ localctx = Java20Parser.NumericTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 10, self.RULE_numericType)
+ try:
+ self.state = 511
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 509
+ self.integralType()
+ pass
+ elif token in [31, 37]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 510
+ self.floatingPointType()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IntegralTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BYTE(self):
+ return self.getToken(Java20Parser.BYTE, 0)
+
+ def SHORT(self):
+ return self.getToken(Java20Parser.SHORT, 0)
+
+ def INT(self):
+ return self.getToken(Java20Parser.INT, 0)
+
+ def LONG(self):
+ return self.getToken(Java20Parser.LONG, 0)
+
+ def CHAR(self):
+ return self.getToken(Java20Parser.CHAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_integralType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIntegralType"):
+ listener.enterIntegralType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIntegralType"):
+ listener.exitIntegralType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIntegralType"):
+ return visitor.visitIntegralType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def integralType(self):
+
+ localctx = Java20Parser.IntegralTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 12, self.RULE_integralType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 513
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 18102359477452800) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FloatingPointTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FLOAT(self):
+ return self.getToken(Java20Parser.FLOAT, 0)
+
+ def DOUBLE(self):
+ return self.getToken(Java20Parser.DOUBLE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_floatingPointType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFloatingPointType"):
+ listener.enterFloatingPointType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFloatingPointType"):
+ listener.exitFloatingPointType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFloatingPointType"):
+ return visitor.visitFloatingPointType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def floatingPointType(self):
+
+ localctx = Java20Parser.FloatingPointTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 14, self.RULE_floatingPointType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 515
+ _la = self._input.LA(1)
+ if not (_la == 31 or _la == 37):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReferenceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_referenceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReferenceType"):
+ listener.enterReferenceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReferenceType"):
+ listener.exitReferenceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReferenceType"):
+ return visitor.visitReferenceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def referenceType(self):
+
+ localctx = Java20Parser.ReferenceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 16, self.RULE_referenceType)
+ try:
+ self.state = 520
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 3, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 517
+ self.classOrInterfaceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 518
+ self.typeVariable()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 519
+ self.arrayType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CoitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def coit(self):
+ return self.getTypedRuleContext(Java20Parser.CoitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_coit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCoit"):
+ listener.enterCoit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCoit"):
+ listener.exitCoit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCoit"):
+ return visitor.visitCoit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def coit(self):
+
+ localctx = Java20Parser.CoitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 18, self.RULE_coit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 522
+ self.match(Java20Parser.DOT)
+ self.state = 526
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 523
+ self.annotation()
+ self.state = 528
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 529
+ self.typeIdentifier()
+ self.state = 531
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 5, self._ctx)
+ if la_ == 1:
+ self.state = 530
+ self.typeArguments()
+
+ self.state = 534
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 6, self._ctx)
+ if la_ == 1:
+ self.state = 533
+ self.coit()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassOrInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def coit(self):
+ return self.getTypedRuleContext(Java20Parser.CoitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classOrInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassOrInterfaceType"):
+ listener.enterClassOrInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassOrInterfaceType"):
+ listener.exitClassOrInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassOrInterfaceType"):
+ return visitor.visitClassOrInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classOrInterfaceType(self):
+
+ localctx = Java20Parser.ClassOrInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 20, self.RULE_classOrInterfaceType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 539
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 7, self._ctx)
+ if la_ == 1:
+ self.state = 536
+ self.packageName()
+ self.state = 537
+ self.match(Java20Parser.DOT)
+
+ self.state = 544
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 541
+ self.annotation()
+ self.state = 546
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 547
+ self.typeIdentifier()
+ self.state = 549
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 9, self._ctx)
+ if la_ == 1:
+ self.state = 548
+ self.typeArguments()
+
+ self.state = 552
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 10, self._ctx)
+ if la_ == 1:
+ self.state = 551
+ self.coit()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassType"):
+ listener.enterClassType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassType"):
+ listener.exitClassType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassType"):
+ return visitor.visitClassType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classType(self):
+
+ localctx = Java20Parser.ClassTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 22, self.RULE_classType)
+ self._la = 0 # Token type
+ try:
+ self.state = 588
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 17, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 557
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 554
+ self.annotation()
+ self.state = 559
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 560
+ self.typeIdentifier()
+ self.state = 562
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 561
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 564
+ self.packageName()
+ self.state = 565
+ self.match(Java20Parser.DOT)
+ self.state = 569
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 566
+ self.annotation()
+ self.state = 571
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 572
+ self.typeIdentifier()
+ self.state = 574
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 573
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 576
+ self.classOrInterfaceType()
+ self.state = 577
+ self.match(Java20Parser.DOT)
+ self.state = 581
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 578
+ self.annotation()
+ self.state = 583
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 584
+ self.typeIdentifier()
+ self.state = 586
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 585
+ self.typeArguments()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceType"):
+ listener.enterInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceType"):
+ listener.exitInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceType"):
+ return visitor.visitInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceType(self):
+
+ localctx = Java20Parser.InterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 24, self.RULE_interfaceType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 590
+ self.classType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeVariableContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeVariable
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeVariable"):
+ listener.enterTypeVariable(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeVariable"):
+ listener.exitTypeVariable(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeVariable"):
+ return visitor.visitTypeVariable(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeVariable(self):
+
+ localctx = Java20Parser.TypeVariableContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 26, self.RULE_typeVariable)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 595
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 592
+ self.annotation()
+ self.state = 597
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 598
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayType"):
+ listener.enterArrayType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayType"):
+ listener.exitArrayType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayType"):
+ return visitor.visitArrayType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayType(self):
+
+ localctx = Java20Parser.ArrayTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 28, self.RULE_arrayType)
+ try:
+ self.state = 609
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 19, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 600
+ self.primitiveType()
+ self.state = 601
+ self.dims()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 603
+ self.classType()
+ self.state = 604
+ self.dims()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 606
+ self.typeVariable()
+ self.state = 607
+ self.dims()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LBRACK)
+ else:
+ return self.getToken(Java20Parser.LBRACK, i)
+
+ def RBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.RBRACK)
+ else:
+ return self.getToken(Java20Parser.RBRACK, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dims
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDims"):
+ listener.enterDims(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDims"):
+ listener.exitDims(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDims"):
+ return visitor.visitDims(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dims(self):
+
+ localctx = Java20Parser.DimsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 30, self.RULE_dims)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 614
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 611
+ self.annotation()
+ self.state = 616
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 617
+ self.match(Java20Parser.LBRACK)
+ self.state = 618
+ self.match(Java20Parser.RBRACK)
+ self.state = 629
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 622
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 619
+ self.annotation()
+ self.state = 624
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 625
+ self.match(Java20Parser.LBRACK)
+ self.state = 626
+ self.match(Java20Parser.RBRACK)
+ self.state = 631
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def typeParameterModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeParameterModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeParameterModifierContext, i)
+
+ def typeBound(self):
+ return self.getTypedRuleContext(Java20Parser.TypeBoundContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameter"):
+ listener.enterTypeParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameter"):
+ listener.exitTypeParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameter"):
+ return visitor.visitTypeParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameter(self):
+
+ localctx = Java20Parser.TypeParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 32, self.RULE_typeParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 635
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 632
+ self.typeParameterModifier()
+ self.state = 637
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 638
+ self.typeIdentifier()
+ self.state = 640
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 639
+ self.typeBound()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameterModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameterModifier"):
+ listener.enterTypeParameterModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameterModifier"):
+ listener.exitTypeParameterModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameterModifier"):
+ return visitor.visitTypeParameterModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameterModifier(self):
+
+ localctx = Java20Parser.TypeParameterModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 34, self.RULE_typeParameterModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 642
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeBoundContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def additionalBound(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeBound
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeBound"):
+ listener.enterTypeBound(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeBound"):
+ listener.exitTypeBound(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeBound"):
+ return visitor.visitTypeBound(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeBound(self):
+
+ localctx = Java20Parser.TypeBoundContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 36, self.RULE_typeBound)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 644
+ self.match(Java20Parser.EXTENDS)
+ self.state = 653
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 26, self._ctx)
+ if la_ == 1:
+ self.state = 645
+ self.typeVariable()
+ pass
+
+ elif la_ == 2:
+ self.state = 646
+ self.classOrInterfaceType()
+ self.state = 650
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 647
+ self.additionalBound()
+ self.state = 652
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AdditionalBoundContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BITAND(self):
+ return self.getToken(Java20Parser.BITAND, 0)
+
+ def interfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_additionalBound
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAdditionalBound"):
+ listener.enterAdditionalBound(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAdditionalBound"):
+ listener.exitAdditionalBound(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAdditionalBound"):
+ return visitor.visitAdditionalBound(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def additionalBound(self):
+
+ localctx = Java20Parser.AdditionalBoundContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 38, self.RULE_additionalBound)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 655
+ self.match(Java20Parser.BITAND)
+ self.state = 656
+ self.interfaceType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def typeArgumentList(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentListContext, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArguments
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArguments"):
+ listener.enterTypeArguments(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArguments"):
+ listener.exitTypeArguments(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArguments"):
+ return visitor.visitTypeArguments(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArguments(self):
+
+ localctx = Java20Parser.TypeArgumentsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 40, self.RULE_typeArguments)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 658
+ self.match(Java20Parser.LT)
+ self.state = 659
+ self.typeArgumentList()
+ self.state = 660
+ self.match(Java20Parser.GT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeArgument(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeArgumentContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgumentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgumentList"):
+ listener.enterTypeArgumentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgumentList"):
+ listener.exitTypeArgumentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgumentList"):
+ return visitor.visitTypeArgumentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgumentList(self):
+
+ localctx = Java20Parser.TypeArgumentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 42, self.RULE_typeArgumentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 662
+ self.typeArgument()
+ self.state = 667
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 663
+ self.match(Java20Parser.COMMA)
+ self.state = 664
+ self.typeArgument()
+ self.state = 669
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def wildcard(self):
+ return self.getTypedRuleContext(Java20Parser.WildcardContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgument
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgument"):
+ listener.enterTypeArgument(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgument"):
+ listener.exitTypeArgument(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgument"):
+ return visitor.visitTypeArgument(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgument(self):
+
+ localctx = Java20Parser.TypeArgumentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 44, self.RULE_typeArgument)
+ try:
+ self.state = 672
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 28, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 670
+ self.referenceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 671
+ self.wildcard()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WildcardContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def QUESTION(self):
+ return self.getToken(Java20Parser.QUESTION, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def wildcardBounds(self):
+ return self.getTypedRuleContext(Java20Parser.WildcardBoundsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_wildcard
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcard"):
+ listener.enterWildcard(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcard"):
+ listener.exitWildcard(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcard"):
+ return visitor.visitWildcard(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcard(self):
+
+ localctx = Java20Parser.WildcardContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 46, self.RULE_wildcard)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 677
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 674
+ self.annotation()
+ self.state = 679
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 680
+ self.match(Java20Parser.QUESTION)
+ self.state = 682
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34 or _la == 57:
+ self.state = 681
+ self.wildcardBounds()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WildcardBoundsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_wildcardBounds
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcardBounds"):
+ listener.enterWildcardBounds(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcardBounds"):
+ listener.exitWildcardBounds(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcardBounds"):
+ return visitor.visitWildcardBounds(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcardBounds(self):
+
+ localctx = Java20Parser.WildcardBoundsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 48, self.RULE_wildcardBounds)
+ try:
+ self.state = 688
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [34]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 684
+ self.match(Java20Parser.EXTENDS)
+ self.state = 685
+ self.referenceType()
+ pass
+ elif token in [57]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 686
+ self.match(Java20Parser.SUPER)
+ self.state = 687
+ self.referenceType()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def moduleName(self):
+ return self.getTypedRuleContext(Java20Parser.ModuleNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleName"):
+ listener.enterModuleName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleName"):
+ listener.exitModuleName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleName"):
+ return visitor.visitModuleName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleName(self):
+
+ localctx = Java20Parser.ModuleNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 50, self.RULE_moduleName)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 690
+ self.match(Java20Parser.Identifier)
+ self.state = 693
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 84:
+ self.state = 691
+ self.match(Java20Parser.DOT)
+ self.state = 692
+ self.moduleName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageName"):
+ listener.enterPackageName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageName"):
+ listener.exitPackageName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageName"):
+ return visitor.visitPackageName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageName(self):
+
+ localctx = Java20Parser.PackageNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 52, self.RULE_packageName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 695
+ self.match(Java20Parser.Identifier)
+ self.state = 698
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 33, self._ctx)
+ if la_ == 1:
+ self.state = 696
+ self.match(Java20Parser.DOT)
+ self.state = 697
+ self.packageName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeName"):
+ listener.enterTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeName"):
+ listener.exitTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeName"):
+ return visitor.visitTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeName(self):
+
+ localctx = Java20Parser.TypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 54, self.RULE_typeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 700
+ self.packageName()
+ self.state = 703
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 34, self._ctx)
+ if la_ == 1:
+ self.state = 701
+ self.match(Java20Parser.DOT)
+ self.state = 702
+ self.typeIdentifier()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageOrTypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageOrTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageOrTypeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageOrTypeName"):
+ listener.enterPackageOrTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageOrTypeName"):
+ listener.exitPackageOrTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageOrTypeName"):
+ return visitor.visitPackageOrTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageOrTypeName(self):
+
+ localctx = Java20Parser.PackageOrTypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 56, self.RULE_packageOrTypeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 705
+ self.match(Java20Parser.Identifier)
+ self.state = 708
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 35, self._ctx)
+ if la_ == 1:
+ self.state = 706
+ self.match(Java20Parser.DOT)
+ self.state = 707
+ self.packageOrTypeName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def ambiguousName(self):
+ return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expressionName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpressionName"):
+ listener.enterExpressionName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpressionName"):
+ listener.exitExpressionName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpressionName"):
+ return visitor.visitExpressionName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expressionName(self):
+
+ localctx = Java20Parser.ExpressionNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 58, self.RULE_expressionName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 713
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 36, self._ctx)
+ if la_ == 1:
+ self.state = 710
+ self.ambiguousName()
+ self.state = 711
+ self.match(Java20Parser.DOT)
+
+ self.state = 715
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unqualifiedMethodIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedMethodIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodName"):
+ listener.enterMethodName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodName"):
+ listener.exitMethodName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodName"):
+ return visitor.visitMethodName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodName(self):
+
+ localctx = Java20Parser.MethodNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 60, self.RULE_methodName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 717
+ self.unqualifiedMethodIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AmbiguousNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def ambiguousName(self):
+ return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ambiguousName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAmbiguousName"):
+ listener.enterAmbiguousName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAmbiguousName"):
+ listener.exitAmbiguousName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAmbiguousName"):
+ return visitor.visitAmbiguousName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ambiguousName(self):
+
+ localctx = Java20Parser.AmbiguousNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 62, self.RULE_ambiguousName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 719
+ self.match(Java20Parser.Identifier)
+ self.state = 722
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 37, self._ctx)
+ if la_ == 1:
+ self.state = 720
+ self.match(Java20Parser.DOT)
+ self.state = 721
+ self.ambiguousName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ordinaryCompilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.OrdinaryCompilationUnitContext, 0)
+
+ def modularCompilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.ModularCompilationUnitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_compilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompilationUnit"):
+ listener.enterCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompilationUnit"):
+ listener.exitCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompilationUnit"):
+ return visitor.visitCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compilationUnit(self):
+
+ localctx = Java20Parser.CompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 64, self.RULE_compilationUnit)
+ try:
+ self.state = 726
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 38, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 724
+ self.ordinaryCompilationUnit()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 725
+ self.modularCompilationUnit()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class OrdinaryCompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def packageDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.PackageDeclarationContext, 0)
+
+ def importDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i)
+
+ def topLevelClassOrInterfaceDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TopLevelClassOrInterfaceDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TopLevelClassOrInterfaceDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ordinaryCompilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOrdinaryCompilationUnit"):
+ listener.enterOrdinaryCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOrdinaryCompilationUnit"):
+ listener.exitOrdinaryCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOrdinaryCompilationUnit"):
+ return visitor.visitOrdinaryCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ordinaryCompilationUnit(self):
+
+ localctx = Java20Parser.OrdinaryCompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 66, self.RULE_ordinaryCompilationUnit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 729
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 39, self._ctx)
+ if la_ == 1:
+ self.state = 728
+ self.packageDeclaration()
+
+ self.state = 734
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 42:
+ self.state = 731
+ self.importDeclaration()
+ self.state = 736
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 740
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 116002917793925640) != 0) or _la == 82 or _la == 86:
+ self.state = 737
+ self.topLevelClassOrInterfaceDeclaration()
+ self.state = 742
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModularCompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def moduleDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ModuleDeclarationContext, 0)
+
+ def importDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_modularCompilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModularCompilationUnit"):
+ listener.enterModularCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModularCompilationUnit"):
+ listener.exitModularCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModularCompilationUnit"):
+ return visitor.visitModularCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def modularCompilationUnit(self):
+
+ localctx = Java20Parser.ModularCompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 68, self.RULE_modularCompilationUnit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 746
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 42:
+ self.state = 743
+ self.importDeclaration()
+ self.state = 748
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 749
+ self.moduleDeclaration()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PACKAGE(self):
+ return self.getToken(Java20Parser.PACKAGE, 0)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def packageModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.PackageModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.PackageModifierContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageDeclaration"):
+ listener.enterPackageDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageDeclaration"):
+ listener.exitPackageDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageDeclaration"):
+ return visitor.visitPackageDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageDeclaration(self):
+
+ localctx = Java20Parser.PackageDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 70, self.RULE_packageDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 754
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 751
+ self.packageModifier()
+ self.state = 756
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 757
+ self.match(Java20Parser.PACKAGE)
+ self.state = 758
+ self.match(Java20Parser.Identifier)
+ self.state = 763
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 759
+ self.match(Java20Parser.DOT)
+ self.state = 760
+ self.match(Java20Parser.Identifier)
+ self.state = 765
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 766
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageModifier"):
+ listener.enterPackageModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageModifier"):
+ listener.exitPackageModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageModifier"):
+ return visitor.visitPackageModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageModifier(self):
+
+ localctx = Java20Parser.PackageModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 72, self.RULE_packageModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 768
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def singleTypeImportDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.SingleTypeImportDeclarationContext, 0)
+
+ def typeImportOnDemandDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.TypeImportOnDemandDeclarationContext, 0)
+
+ def singleStaticImportDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.SingleStaticImportDeclarationContext, 0)
+
+ def staticImportOnDemandDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.StaticImportOnDemandDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_importDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImportDeclaration"):
+ listener.enterImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImportDeclaration"):
+ listener.exitImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImportDeclaration"):
+ return visitor.visitImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def importDeclaration(self):
+
+ localctx = Java20Parser.ImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 74, self.RULE_importDeclaration)
+ try:
+ self.state = 774
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 45, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 770
+ self.singleTypeImportDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 771
+ self.typeImportOnDemandDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 772
+ self.singleStaticImportDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 773
+ self.staticImportOnDemandDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleTypeImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleTypeImportDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleTypeImportDeclaration"):
+ listener.enterSingleTypeImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleTypeImportDeclaration"):
+ listener.exitSingleTypeImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleTypeImportDeclaration"):
+ return visitor.visitSingleTypeImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleTypeImportDeclaration(self):
+
+ localctx = Java20Parser.SingleTypeImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 76, self.RULE_singleTypeImportDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 776
+ self.match(Java20Parser.IMPORT)
+ self.state = 777
+ self.typeName()
+ self.state = 778
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeImportOnDemandDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def packageOrTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeImportOnDemandDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeImportOnDemandDeclaration"):
+ listener.enterTypeImportOnDemandDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeImportOnDemandDeclaration"):
+ listener.exitTypeImportOnDemandDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeImportOnDemandDeclaration"):
+ return visitor.visitTypeImportOnDemandDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeImportOnDemandDeclaration(self):
+
+ localctx = Java20Parser.TypeImportOnDemandDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 78, self.RULE_typeImportOnDemandDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 780
+ self.match(Java20Parser.IMPORT)
+ self.state = 781
+ self.packageOrTypeName()
+ self.state = 782
+ self.match(Java20Parser.DOT)
+ self.state = 783
+ self.match(Java20Parser.MUL)
+ self.state = 784
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleStaticImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleStaticImportDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleStaticImportDeclaration"):
+ listener.enterSingleStaticImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleStaticImportDeclaration"):
+ listener.exitSingleStaticImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleStaticImportDeclaration"):
+ return visitor.visitSingleStaticImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleStaticImportDeclaration(self):
+
+ localctx = Java20Parser.SingleStaticImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 80, self.RULE_singleStaticImportDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 786
+ self.match(Java20Parser.IMPORT)
+ self.state = 787
+ self.match(Java20Parser.STATIC)
+ self.state = 788
+ self.typeName()
+ self.state = 789
+ self.match(Java20Parser.DOT)
+ self.state = 790
+ self.match(Java20Parser.Identifier)
+ self.state = 791
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StaticImportOnDemandDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_staticImportOnDemandDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStaticImportOnDemandDeclaration"):
+ listener.enterStaticImportOnDemandDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStaticImportOnDemandDeclaration"):
+ listener.exitStaticImportOnDemandDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStaticImportOnDemandDeclaration"):
+ return visitor.visitStaticImportOnDemandDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def staticImportOnDemandDeclaration(self):
+
+ localctx = Java20Parser.StaticImportOnDemandDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 82, self.RULE_staticImportOnDemandDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 793
+ self.match(Java20Parser.IMPORT)
+ self.state = 794
+ self.match(Java20Parser.STATIC)
+ self.state = 795
+ self.typeName()
+ self.state = 796
+ self.match(Java20Parser.DOT)
+ self.state = 797
+ self.match(Java20Parser.MUL)
+ self.state = 798
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TopLevelClassOrInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_topLevelClassOrInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTopLevelClassOrInterfaceDeclaration"):
+ listener.enterTopLevelClassOrInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTopLevelClassOrInterfaceDeclaration"):
+ listener.exitTopLevelClassOrInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTopLevelClassOrInterfaceDeclaration"):
+ return visitor.visitTopLevelClassOrInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def topLevelClassOrInterfaceDeclaration(self):
+
+ localctx = Java20Parser.TopLevelClassOrInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 84, self.RULE_topLevelClassOrInterfaceDeclaration)
+ try:
+ self.state = 803
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 46, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 800
+ self.classDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 801
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 802
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def MODULE(self):
+ return self.getToken(Java20Parser.MODULE, 0)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def OPEN(self):
+ return self.getToken(Java20Parser.OPEN, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def moduleDirective(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ModuleDirectiveContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ModuleDirectiveContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleDeclaration"):
+ listener.enterModuleDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleDeclaration"):
+ listener.exitModuleDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleDeclaration"):
+ return visitor.visitModuleDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleDeclaration(self):
+
+ localctx = Java20Parser.ModuleDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 86, self.RULE_moduleDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 808
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 805
+ self.annotation()
+ self.state = 810
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 812
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 5:
+ self.state = 811
+ self.match(Java20Parser.OPEN)
+
+ self.state = 814
+ self.match(Java20Parser.MODULE)
+ self.state = 815
+ self.match(Java20Parser.Identifier)
+ self.state = 820
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 816
+ self.match(Java20Parser.DOT)
+ self.state = 817
+ self.match(Java20Parser.Identifier)
+ self.state = 822
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 823
+ self.match(Java20Parser.LBRACE)
+ self.state = 827
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 17730) != 0):
+ self.state = 824
+ self.moduleDirective()
+ self.state = 829
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 830
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleDirectiveContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def REQUIRES(self):
+ return self.getToken(Java20Parser.REQUIRES, 0)
+
+ def moduleName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ModuleNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ModuleNameContext, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def requiresModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RequiresModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RequiresModifierContext, i)
+
+ def EXPORTS(self):
+ return self.getToken(Java20Parser.EXPORTS, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def TO(self):
+ return self.getToken(Java20Parser.TO, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def OPENS(self):
+ return self.getToken(Java20Parser.OPENS, 0)
+
+ def USES(self):
+ return self.getToken(Java20Parser.USES, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def PROVIDES(self):
+ return self.getToken(Java20Parser.PROVIDES, 0)
+
+ def WITH(self):
+ return self.getToken(Java20Parser.WITH, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleDirective
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleDirective"):
+ listener.enterModuleDirective(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleDirective"):
+ listener.exitModuleDirective(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleDirective"):
+ return visitor.visitModuleDirective(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleDirective(self):
+
+ localctx = Java20Parser.ModuleDirectiveContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 88, self.RULE_moduleDirective)
+ self._la = 0 # Token type
+ try:
+ self.state = 889
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [10]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 832
+ self.match(Java20Parser.REQUIRES)
+ self.state = 836
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 13 or _la == 55:
+ self.state = 833
+ self.requiresModifier()
+ self.state = 838
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 839
+ self.moduleName()
+ self.state = 840
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [1]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 842
+ self.match(Java20Parser.EXPORTS)
+ self.state = 843
+ self.packageName()
+ self.state = 853
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 12:
+ self.state = 844
+ self.match(Java20Parser.TO)
+ self.state = 845
+ self.moduleName()
+ self.state = 850
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 846
+ self.match(Java20Parser.COMMA)
+ self.state = 847
+ self.moduleName()
+ self.state = 852
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 855
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [6]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 857
+ self.match(Java20Parser.OPENS)
+ self.state = 858
+ self.packageName()
+ self.state = 868
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 12:
+ self.state = 859
+ self.match(Java20Parser.TO)
+ self.state = 860
+ self.moduleName()
+ self.state = 865
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 861
+ self.match(Java20Parser.COMMA)
+ self.state = 862
+ self.moduleName()
+ self.state = 867
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 870
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [14]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 872
+ self.match(Java20Parser.USES)
+ self.state = 873
+ self.typeName()
+ self.state = 874
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [8]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 876
+ self.match(Java20Parser.PROVIDES)
+ self.state = 877
+ self.typeName()
+ self.state = 878
+ self.match(Java20Parser.WITH)
+ self.state = 879
+ self.typeName()
+ self.state = 884
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 880
+ self.match(Java20Parser.COMMA)
+ self.state = 881
+ self.typeName()
+ self.state = 886
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 887
+ self.match(Java20Parser.SEMI)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RequiresModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRANSITIVE(self):
+ return self.getToken(Java20Parser.TRANSITIVE, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_requiresModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRequiresModifier"):
+ listener.enterRequiresModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRequiresModifier"):
+ listener.exitRequiresModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRequiresModifier"):
+ return visitor.visitRequiresModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def requiresModifier(self):
+
+ localctx = Java20Parser.RequiresModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 90, self.RULE_requiresModifier)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 891
+ _la = self._input.LA(1)
+ if not (_la == 13 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalClassDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalClassDeclarationContext, 0)
+
+ def enumDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.EnumDeclarationContext, 0)
+
+ def recordDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.RecordDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassDeclaration"):
+ listener.enterClassDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassDeclaration"):
+ listener.exitClassDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassDeclaration"):
+ return visitor.visitClassDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classDeclaration(self):
+
+ localctx = Java20Parser.ClassDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 92, self.RULE_classDeclaration)
+ try:
+ self.state = 896
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 58, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 893
+ self.normalClassDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 894
+ self.enumDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 895
+ self.recordDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalClassDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CLASS(self):
+ return self.getToken(Java20Parser.CLASS, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def classExtends(self):
+ return self.getTypedRuleContext(Java20Parser.ClassExtendsContext, 0)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def classPermits(self):
+ return self.getTypedRuleContext(Java20Parser.ClassPermitsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalClassDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalClassDeclaration"):
+ listener.enterNormalClassDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalClassDeclaration"):
+ listener.exitNormalClassDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalClassDeclaration"):
+ return visitor.visitNormalClassDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalClassDeclaration(self):
+
+ localctx = Java20Parser.NormalClassDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 94, self.RULE_normalClassDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 901
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 898
+ self.classModifier()
+ self.state = 903
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 904
+ self.match(Java20Parser.CLASS)
+ self.state = 905
+ self.typeIdentifier()
+ self.state = 907
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 906
+ self.typeParameters()
+
+ self.state = 910
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 909
+ self.classExtends()
+
+ self.state = 913
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 912
+ self.classImplements()
+
+ self.state = 916
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 915
+ self.classPermits()
+
+ self.state = 918
+ self.classBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def SEALED(self):
+ return self.getToken(Java20Parser.SEALED, 0)
+
+ def NONSEALED(self):
+ return self.getToken(Java20Parser.NONSEALED, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassModifier"):
+ listener.enterClassModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassModifier"):
+ listener.exitClassModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassModifier"):
+ return visitor.visitClassModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classModifier(self):
+
+ localctx = Java20Parser.ClassModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 96, self.RULE_classModifier)
+ try:
+ self.state = 930
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 920
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 921
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 922
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 923
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 924
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 925
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 926
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [11]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 927
+ self.match(Java20Parser.SEALED)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 928
+ self.match(Java20Parser.NONSEALED)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 929
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def typeParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParameterListContext, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameters"):
+ listener.enterTypeParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameters"):
+ listener.exitTypeParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameters"):
+ return visitor.visitTypeParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameters(self):
+
+ localctx = Java20Parser.TypeParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 98, self.RULE_typeParameters)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 932
+ self.match(Java20Parser.LT)
+ self.state = 933
+ self.typeParameterList()
+ self.state = 934
+ self.match(Java20Parser.GT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameterList"):
+ listener.enterTypeParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameterList"):
+ listener.exitTypeParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameterList"):
+ return visitor.visitTypeParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameterList(self):
+
+ localctx = Java20Parser.TypeParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 100, self.RULE_typeParameterList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 936
+ self.typeParameter()
+ self.state = 941
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 937
+ self.match(Java20Parser.COMMA)
+ self.state = 938
+ self.typeParameter()
+ self.state = 943
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassExtendsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classExtends
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassExtends"):
+ listener.enterClassExtends(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassExtends"):
+ listener.exitClassExtends(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassExtends"):
+ return visitor.visitClassExtends(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classExtends(self):
+
+ localctx = Java20Parser.ClassExtendsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 102, self.RULE_classExtends)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 944
+ self.match(Java20Parser.EXTENDS)
+ self.state = 945
+ self.classType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassImplementsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPLEMENTS(self):
+ return self.getToken(Java20Parser.IMPLEMENTS, 0)
+
+ def interfaceTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classImplements
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassImplements"):
+ listener.enterClassImplements(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassImplements"):
+ listener.exitClassImplements(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassImplements"):
+ return visitor.visitClassImplements(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classImplements(self):
+
+ localctx = Java20Parser.ClassImplementsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 104, self.RULE_classImplements)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 947
+ self.match(Java20Parser.IMPLEMENTS)
+ self.state = 948
+ self.interfaceTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceTypeListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def interfaceType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceTypeList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceTypeList"):
+ listener.enterInterfaceTypeList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceTypeList"):
+ listener.exitInterfaceTypeList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceTypeList"):
+ return visitor.visitInterfaceTypeList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceTypeList(self):
+
+ localctx = Java20Parser.InterfaceTypeListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 106, self.RULE_interfaceTypeList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 950
+ self.interfaceType()
+ self.state = 955
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 951
+ self.match(Java20Parser.COMMA)
+ self.state = 952
+ self.interfaceType()
+ self.state = 957
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassPermitsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PERMITS(self):
+ return self.getToken(Java20Parser.PERMITS, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classPermits
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassPermits"):
+ listener.enterClassPermits(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassPermits"):
+ listener.exitClassPermits(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassPermits"):
+ return visitor.visitClassPermits(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classPermits(self):
+
+ localctx = Java20Parser.ClassPermitsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 108, self.RULE_classPermits)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 958
+ self.match(Java20Parser.PERMITS)
+ self.state = 959
+ self.typeName()
+ self.state = 964
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 960
+ self.match(Java20Parser.COMMA)
+ self.state = 961
+ self.typeName()
+ self.state = 966
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def classBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassBody"):
+ listener.enterClassBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassBody"):
+ listener.exitClassBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassBody"):
+ return visitor.visitClassBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classBody(self):
+
+ localctx = Java20Parser.ClassBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 110, self.RULE_classBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 967
+ self.match(Java20Parser.LBRACE)
+ self.state = 971
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 968
+ self.classBodyDeclaration()
+ self.state = 973
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 974
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassBodyDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classMemberDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassMemberDeclarationContext, 0)
+
+ def instanceInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.InstanceInitializerContext, 0)
+
+ def staticInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.StaticInitializerContext, 0)
+
+ def constructorDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classBodyDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassBodyDeclaration"):
+ listener.enterClassBodyDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassBodyDeclaration"):
+ listener.exitClassBodyDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassBodyDeclaration"):
+ return visitor.visitClassBodyDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classBodyDeclaration(self):
+
+ localctx = Java20Parser.ClassBodyDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 112, self.RULE_classBodyDeclaration)
+ try:
+ self.state = 980
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 69, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 976
+ self.classMemberDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 977
+ self.instanceInitializer()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 978
+ self.staticInitializer()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 979
+ self.constructorDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def fieldDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.FieldDeclarationContext, 0)
+
+ def methodDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.MethodDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassMemberDeclaration"):
+ listener.enterClassMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassMemberDeclaration"):
+ listener.exitClassMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassMemberDeclaration"):
+ return visitor.visitClassMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classMemberDeclaration(self):
+
+ localctx = Java20Parser.ClassMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 114, self.RULE_classMemberDeclaration)
+ try:
+ self.state = 987
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 70, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 982
+ self.fieldDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 983
+ self.methodDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 984
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 985
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 986
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def fieldModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.FieldModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.FieldModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldDeclaration"):
+ listener.enterFieldDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldDeclaration"):
+ listener.exitFieldDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldDeclaration"):
+ return visitor.visitFieldDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldDeclaration(self):
+
+ localctx = Java20Parser.FieldDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 116, self.RULE_fieldDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 992
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251802230882305) != 0):
+ self.state = 989
+ self.fieldModifier()
+ self.state = 994
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 995
+ self.unannType()
+ self.state = 996
+ self.variableDeclaratorList()
+ self.state = 997
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def TRANSIENT(self):
+ return self.getToken(Java20Parser.TRANSIENT, 0)
+
+ def VOLATILE(self):
+ return self.getToken(Java20Parser.VOLATILE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldModifier"):
+ listener.enterFieldModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldModifier"):
+ listener.exitFieldModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldModifier"):
+ return visitor.visitFieldModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldModifier(self):
+
+ localctx = Java20Parser.FieldModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 118, self.RULE_fieldModifier)
+ try:
+ self.state = 1007
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 999
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1000
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1001
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1002
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1003
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1004
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [63]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1005
+ self.match(Java20Parser.TRANSIENT)
+ pass
+ elif token in [66]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1006
+ self.match(Java20Parser.VOLATILE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableDeclarator(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableDeclaratorContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclaratorList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclaratorList"):
+ listener.enterVariableDeclaratorList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclaratorList"):
+ listener.exitVariableDeclaratorList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclaratorList"):
+ return visitor.visitVariableDeclaratorList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclaratorList(self):
+
+ localctx = Java20Parser.VariableDeclaratorListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 120, self.RULE_variableDeclaratorList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1009
+ self.variableDeclarator()
+ self.state = 1014
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 73, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1010
+ self.match(Java20Parser.COMMA)
+ self.state = 1011
+ self.variableDeclarator()
+ self.state = 1016
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 73, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def variableInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclarator"):
+ listener.enterVariableDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclarator"):
+ listener.exitVariableDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclarator"):
+ return visitor.visitVariableDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclarator(self):
+
+ localctx = Java20Parser.VariableDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 122, self.RULE_variableDeclarator)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1017
+ self.variableDeclaratorId()
+ self.state = 1020
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 74, self._ctx)
+ if la_ == 1:
+ self.state = 1018
+ self.match(Java20Parser.ASSIGN)
+ self.state = 1019
+ self.variableInitializer()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorIdContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclaratorId
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclaratorId"):
+ listener.enterVariableDeclaratorId(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclaratorId"):
+ listener.exitVariableDeclaratorId(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclaratorId"):
+ return visitor.visitVariableDeclaratorId(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclaratorId(self):
+
+ localctx = Java20Parser.VariableDeclaratorIdContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 124, self.RULE_variableDeclaratorId)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1022
+ self.match(Java20Parser.Identifier)
+ self.state = 1024
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 75, self._ctx)
+ if la_ == 1:
+ self.state = 1023
+ self.dims()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def arrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableInitializer"):
+ listener.enterVariableInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableInitializer"):
+ listener.exitVariableInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableInitializer"):
+ return visitor.visitVariableInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableInitializer(self):
+
+ localctx = Java20Parser.VariableInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 126, self.RULE_variableInitializer)
+ try:
+ self.state = 1028
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1026
+ self.expression()
+ pass
+ elif token in [78]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1027
+ self.arrayInitializer()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannPrimitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0)
+
+ def unannReferenceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannReferenceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannType"):
+ listener.enterUnannType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannType"):
+ listener.exitUnannType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannType"):
+ return visitor.visitUnannType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannType(self):
+
+ localctx = Java20Parser.UnannTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 128, self.RULE_unannType)
+ try:
+ self.state = 1032
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 77, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1030
+ self.unannPrimitiveType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1031
+ self.unannReferenceType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannPrimitiveTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannPrimitiveType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannPrimitiveType"):
+ listener.enterUnannPrimitiveType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannPrimitiveType"):
+ listener.exitUnannPrimitiveType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannPrimitiveType"):
+ return visitor.visitUnannPrimitiveType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannPrimitiveType(self):
+
+ localctx = Java20Parser.UnannPrimitiveTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 130, self.RULE_unannPrimitiveType)
+ try:
+ self.state = 1036
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 31, 37, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1034
+ self.numericType()
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1035
+ self.match(Java20Parser.BOOLEAN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannReferenceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def unannTypeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0)
+
+ def unannArrayType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannReferenceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannReferenceType"):
+ listener.enterUnannReferenceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannReferenceType"):
+ listener.exitUnannReferenceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannReferenceType"):
+ return visitor.visitUnannReferenceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannReferenceType(self):
+
+ localctx = Java20Parser.UnannReferenceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 132, self.RULE_unannReferenceType)
+ try:
+ self.state = 1041
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 79, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1038
+ self.unannClassOrInterfaceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1039
+ self.unannTypeVariable()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1040
+ self.unannArrayType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannClassOrInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def uCOIT(self):
+ return self.getTypedRuleContext(Java20Parser.UCOITContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannClassOrInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannClassOrInterfaceType"):
+ listener.enterUnannClassOrInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannClassOrInterfaceType"):
+ listener.exitUnannClassOrInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannClassOrInterfaceType"):
+ return visitor.visitUnannClassOrInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannClassOrInterfaceType(self):
+
+ localctx = Java20Parser.UnannClassOrInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 134, self.RULE_unannClassOrInterfaceType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1051
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 81, self._ctx)
+ if la_ == 1:
+ self.state = 1043
+ self.packageName()
+ self.state = 1044
+ self.match(Java20Parser.DOT)
+ self.state = 1048
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1045
+ self.annotation()
+ self.state = 1050
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1053
+ self.typeIdentifier()
+ self.state = 1055
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 82, self._ctx)
+ if la_ == 1:
+ self.state = 1054
+ self.typeArguments()
+
+ self.state = 1058
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 83, self._ctx)
+ if la_ == 1:
+ self.state = 1057
+ self.uCOIT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UCOITContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def uCOIT(self):
+ return self.getTypedRuleContext(Java20Parser.UCOITContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_uCOIT
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUCOIT"):
+ listener.enterUCOIT(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUCOIT"):
+ listener.exitUCOIT(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUCOIT"):
+ return visitor.visitUCOIT(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def uCOIT(self):
+
+ localctx = Java20Parser.UCOITContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 136, self.RULE_uCOIT)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1060
+ self.match(Java20Parser.DOT)
+ self.state = 1064
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1061
+ self.annotation()
+ self.state = 1066
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1067
+ self.typeIdentifier()
+ self.state = 1069
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 85, self._ctx)
+ if la_ == 1:
+ self.state = 1068
+ self.typeArguments()
+
+ self.state = 1072
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 86, self._ctx)
+ if la_ == 1:
+ self.state = 1071
+ self.uCOIT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannClassTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannClassType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannClassType"):
+ listener.enterUnannClassType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannClassType"):
+ listener.exitUnannClassType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannClassType"):
+ return visitor.visitUnannClassType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannClassType(self):
+
+ localctx = Java20Parser.UnannClassTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 138, self.RULE_unannClassType)
+ self._la = 0 # Token type
+ try:
+ self.state = 1093
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 91, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1074
+ self.typeIdentifier()
+ self.state = 1076
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1075
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1080
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 88, self._ctx)
+ if la_ == 1:
+ self.state = 1078
+ self.packageName()
+ pass
+
+ elif la_ == 2:
+ self.state = 1079
+ self.unannClassOrInterfaceType()
+ pass
+
+ self.state = 1082
+ self.match(Java20Parser.DOT)
+ self.state = 1086
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1083
+ self.annotation()
+ self.state = 1088
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1089
+ self.typeIdentifier()
+ self.state = 1091
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1090
+ self.typeArguments()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannInterfaceType"):
+ listener.enterUnannInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannInterfaceType"):
+ listener.exitUnannInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannInterfaceType"):
+ return visitor.visitUnannInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannInterfaceType(self):
+
+ localctx = Java20Parser.UnannInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 140, self.RULE_unannInterfaceType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1095
+ self.unannClassType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannTypeVariableContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannTypeVariable
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannTypeVariable"):
+ listener.enterUnannTypeVariable(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannTypeVariable"):
+ listener.exitUnannTypeVariable(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannTypeVariable"):
+ return visitor.visitUnannTypeVariable(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannTypeVariable(self):
+
+ localctx = Java20Parser.UnannTypeVariableContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 142, self.RULE_unannTypeVariable)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1097
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannArrayTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def unannPrimitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0)
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def unannTypeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannArrayType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannArrayType"):
+ listener.enterUnannArrayType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannArrayType"):
+ listener.exitUnannArrayType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannArrayType"):
+ return visitor.visitUnannArrayType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannArrayType(self):
+
+ localctx = Java20Parser.UnannArrayTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 144, self.RULE_unannArrayType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1102
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 92, self._ctx)
+ if la_ == 1:
+ self.state = 1099
+ self.unannPrimitiveType()
+ pass
+
+ elif la_ == 2:
+ self.state = 1100
+ self.unannClassOrInterfaceType()
+ pass
+
+ elif la_ == 3:
+ self.state = 1101
+ self.unannTypeVariable()
+ pass
+
+ self.state = 1104
+ self.dims()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodHeader(self):
+ return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0)
+
+ def methodBody(self):
+ return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0)
+
+ def methodModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.MethodModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.MethodModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodDeclaration"):
+ listener.enterMethodDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodDeclaration"):
+ listener.exitMethodDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodDeclaration"):
+ return visitor.visitMethodDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodDeclaration(self):
+
+ localctx = Java20Parser.MethodDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 146, self.RULE_methodDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1109
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 692569214556569600) != 0) or _la == 86:
+ self.state = 1106
+ self.methodModifier()
+ self.state = 1111
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1112
+ self.methodHeader()
+ self.state = 1113
+ self.methodBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def SYNCHRONIZED(self):
+ return self.getToken(Java20Parser.SYNCHRONIZED, 0)
+
+ def NATIVE(self):
+ return self.getToken(Java20Parser.NATIVE, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodModifier"):
+ listener.enterMethodModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodModifier"):
+ listener.exitMethodModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodModifier"):
+ return visitor.visitMethodModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodModifier(self):
+
+ localctx = Java20Parser.MethodModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 148, self.RULE_methodModifier)
+ try:
+ self.state = 1125
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1115
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1116
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1117
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1118
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1119
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1120
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1121
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [59]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1122
+ self.match(Java20Parser.SYNCHRONIZED)
+ pass
+ elif token in [47]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1123
+ self.match(Java20Parser.NATIVE)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1124
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodHeaderContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def result(self):
+ return self.getTypedRuleContext(Java20Parser.ResultContext, 0)
+
+ def methodDeclarator(self):
+ return self.getTypedRuleContext(Java20Parser.MethodDeclaratorContext, 0)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def throwsT(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodHeader
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodHeader"):
+ listener.enterMethodHeader(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodHeader"):
+ listener.exitMethodHeader(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodHeader"):
+ return visitor.visitMethodHeader(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodHeader(self):
+
+ localctx = Java20Parser.MethodHeaderContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 150, self.RULE_methodHeader)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1134
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1127
+ self.typeParameters()
+ self.state = 1131
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1128
+ self.annotation()
+ self.state = 1133
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1136
+ self.result()
+ self.state = 1137
+ self.methodDeclarator()
+ self.state = 1139
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 1138
+ self.throwsT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResultContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VOID(self):
+ return self.getToken(Java20Parser.VOID, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_result
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResult"):
+ listener.enterResult(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResult"):
+ listener.exitResult(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResult"):
+ return visitor.visitResult(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def result(self):
+
+ localctx = Java20Parser.ResultContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 152, self.RULE_result)
+ try:
+ self.state = 1143
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1141
+ self.unannType()
+ pass
+ elif token in [65]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1142
+ self.match(Java20Parser.VOID)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def receiverParameter(self):
+ return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def formalParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodDeclarator"):
+ listener.enterMethodDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodDeclarator"):
+ listener.exitMethodDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodDeclarator"):
+ return visitor.visitMethodDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodDeclarator(self):
+
+ localctx = Java20Parser.MethodDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 154, self.RULE_methodDeclarator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1145
+ self.match(Java20Parser.Identifier)
+ self.state = 1146
+ self.match(Java20Parser.LPAREN)
+ self.state = 1150
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 99, self._ctx)
+ if la_ == 1:
+ self.state = 1147
+ self.receiverParameter()
+ self.state = 1148
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1153
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123:
+ self.state = 1152
+ self.formalParameterList()
+
+ self.state = 1155
+ self.match(Java20Parser.RPAREN)
+ self.state = 1157
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 80 or _la == 86:
+ self.state = 1156
+ self.dims()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReceiverParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_receiverParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReceiverParameter"):
+ listener.enterReceiverParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReceiverParameter"):
+ listener.exitReceiverParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReceiverParameter"):
+ return visitor.visitReceiverParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def receiverParameter(self):
+
+ localctx = Java20Parser.ReceiverParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 156, self.RULE_receiverParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1162
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1159
+ self.annotation()
+ self.state = 1164
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1165
+ self.unannType()
+ self.state = 1168
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1166
+ self.match(Java20Parser.Identifier)
+ self.state = 1167
+ self.match(Java20Parser.DOT)
+
+ self.state = 1170
+ self.match(Java20Parser.THIS)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FormalParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def formalParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.FormalParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.FormalParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_formalParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFormalParameterList"):
+ listener.enterFormalParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFormalParameterList"):
+ listener.exitFormalParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFormalParameterList"):
+ return visitor.visitFormalParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def formalParameterList(self):
+
+ localctx = Java20Parser.FormalParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 158, self.RULE_formalParameterList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1172
+ self.formalParameter()
+ self.state = 1177
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1173
+ self.match(Java20Parser.COMMA)
+ self.state = 1174
+ self.formalParameter()
+ self.state = 1179
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FormalParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableArityParameter(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_formalParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFormalParameter"):
+ listener.enterFormalParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFormalParameter"):
+ listener.exitFormalParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFormalParameter"):
+ return visitor.visitFormalParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def formalParameter(self):
+
+ localctx = Java20Parser.FormalParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 160, self.RULE_formalParameter)
+ self._la = 0 # Token type
+ try:
+ self.state = 1190
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 106, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1183
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1180
+ self.variableModifier()
+ self.state = 1185
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1186
+ self.unannType()
+ self.state = 1187
+ self.variableDeclaratorId()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1189
+ self.variableArityParameter()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableArityParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def ELLIPSIS(self):
+ return self.getToken(Java20Parser.ELLIPSIS, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableArityParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableArityParameter"):
+ listener.enterVariableArityParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableArityParameter"):
+ listener.exitVariableArityParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableArityParameter"):
+ return visitor.visitVariableArityParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableArityParameter(self):
+
+ localctx = Java20Parser.VariableArityParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 162, self.RULE_variableArityParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1195
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1192
+ self.variableModifier()
+ self.state = 1197
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1198
+ self.unannType()
+ self.state = 1202
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1199
+ self.annotation()
+ self.state = 1204
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1205
+ self.match(Java20Parser.ELLIPSIS)
+ self.state = 1206
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableModifier"):
+ listener.enterVariableModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableModifier"):
+ listener.exitVariableModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableModifier"):
+ return visitor.visitVariableModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableModifier(self):
+
+ localctx = Java20Parser.VariableModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 164, self.RULE_variableModifier)
+ try:
+ self.state = 1210
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1208
+ self.annotation()
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1209
+ self.match(Java20Parser.FINAL)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ThrowsTContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def THROWS(self):
+ return self.getToken(Java20Parser.THROWS, 0)
+
+ def exceptionTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.ExceptionTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_throwsT
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterThrowsT"):
+ listener.enterThrowsT(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitThrowsT"):
+ listener.exitThrowsT(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitThrowsT"):
+ return visitor.visitThrowsT(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def throwsT(self):
+
+ localctx = Java20Parser.ThrowsTContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 166, self.RULE_throwsT)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1212
+ self.match(Java20Parser.THROWS)
+ self.state = 1213
+ self.exceptionTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExceptionTypeListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def exceptionType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExceptionTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExceptionTypeContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exceptionTypeList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExceptionTypeList"):
+ listener.enterExceptionTypeList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExceptionTypeList"):
+ listener.exitExceptionTypeList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExceptionTypeList"):
+ return visitor.visitExceptionTypeList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exceptionTypeList(self):
+
+ localctx = Java20Parser.ExceptionTypeListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 168, self.RULE_exceptionTypeList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1215
+ self.exceptionType()
+ self.state = 1220
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1216
+ self.match(Java20Parser.COMMA)
+ self.state = 1217
+ self.exceptionType()
+ self.state = 1222
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExceptionTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exceptionType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExceptionType"):
+ listener.enterExceptionType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExceptionType"):
+ listener.exitExceptionType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExceptionType"):
+ return visitor.visitExceptionType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exceptionType(self):
+
+ localctx = Java20Parser.ExceptionTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 170, self.RULE_exceptionType)
+ try:
+ self.state = 1225
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 111, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1223
+ self.classType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1224
+ self.typeVariable()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodBody"):
+ listener.enterMethodBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodBody"):
+ listener.exitMethodBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodBody"):
+ return visitor.visitMethodBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodBody(self):
+
+ localctx = Java20Parser.MethodBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 172, self.RULE_methodBody)
+ try:
+ self.state = 1229
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [78]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1227
+ self.block()
+ pass
+ elif token in [82]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1228
+ self.match(Java20Parser.SEMI)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InstanceInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_instanceInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInstanceInitializer"):
+ listener.enterInstanceInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInstanceInitializer"):
+ listener.exitInstanceInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInstanceInitializer"):
+ return visitor.visitInstanceInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def instanceInitializer(self):
+
+ localctx = Java20Parser.InstanceInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 174, self.RULE_instanceInitializer)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1231
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StaticInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_staticInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStaticInitializer"):
+ listener.enterStaticInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStaticInitializer"):
+ listener.exitStaticInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStaticInitializer"):
+ return visitor.visitStaticInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def staticInitializer(self):
+
+ localctx = Java20Parser.StaticInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 176, self.RULE_staticInitializer)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1233
+ self.match(Java20Parser.STATIC)
+ self.state = 1234
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def constructorDeclarator(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorDeclaratorContext, 0)
+
+ def constructorBody(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0)
+
+ def constructorModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i)
+
+ def throwsT(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorDeclaration"):
+ listener.enterConstructorDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorDeclaration"):
+ listener.exitConstructorDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorDeclaration"):
+ return visitor.visitConstructorDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorDeclaration(self):
+
+ localctx = Java20Parser.ConstructorDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 178, self.RULE_constructorDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1239
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0):
+ self.state = 1236
+ self.constructorModifier()
+ self.state = 1241
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1242
+ self.constructorDeclarator()
+ self.state = 1244
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 1243
+ self.throwsT()
+
+ self.state = 1246
+ self.constructorBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorModifier"):
+ listener.enterConstructorModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorModifier"):
+ listener.exitConstructorModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorModifier"):
+ return visitor.visitConstructorModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorModifier(self):
+
+ localctx = Java20Parser.ConstructorModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 180, self.RULE_constructorModifier)
+ try:
+ self.state = 1252
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1248
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1249
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1250
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1251
+ self.match(Java20Parser.PRIVATE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simpleTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def receiverParameter(self):
+ return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def formalParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorDeclarator"):
+ listener.enterConstructorDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorDeclarator"):
+ listener.exitConstructorDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorDeclarator"):
+ return visitor.visitConstructorDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorDeclarator(self):
+
+ localctx = Java20Parser.ConstructorDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 182, self.RULE_constructorDeclarator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1255
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1254
+ self.typeParameters()
+
+ self.state = 1257
+ self.simpleTypeName()
+ self.state = 1258
+ self.match(Java20Parser.LPAREN)
+ self.state = 1262
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 117, self._ctx)
+ if la_ == 1:
+ self.state = 1259
+ self.receiverParameter()
+ self.state = 1260
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1265
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123:
+ self.state = 1264
+ self.formalParameterList()
+
+ self.state = 1267
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SimpleTypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_simpleTypeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimpleTypeName"):
+ listener.enterSimpleTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimpleTypeName"):
+ listener.exitSimpleTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimpleTypeName"):
+ return visitor.visitSimpleTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simpleTypeName(self):
+
+ localctx = Java20Parser.SimpleTypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 184, self.RULE_simpleTypeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1269
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def explicitConstructorInvocation(self):
+ return self.getTypedRuleContext(Java20Parser.ExplicitConstructorInvocationContext, 0)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorBody"):
+ listener.enterConstructorBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorBody"):
+ listener.exitConstructorBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorBody"):
+ return visitor.visitConstructorBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorBody(self):
+
+ localctx = Java20Parser.ConstructorBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 186, self.RULE_constructorBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1271
+ self.match(Java20Parser.LBRACE)
+ self.state = 1273
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 119, self._ctx)
+ if la_ == 1:
+ self.state = 1272
+ self.explicitConstructorInvocation()
+
+ self.state = 1276
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1275
+ self.blockStatements()
+
+ self.state = 1278
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExplicitConstructorInvocationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_explicitConstructorInvocation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExplicitConstructorInvocation"):
+ listener.enterExplicitConstructorInvocation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExplicitConstructorInvocation"):
+ listener.exitExplicitConstructorInvocation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExplicitConstructorInvocation"):
+ return visitor.visitExplicitConstructorInvocation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def explicitConstructorInvocation(self):
+
+ localctx = Java20Parser.ExplicitConstructorInvocationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 188, self.RULE_explicitConstructorInvocation)
+ self._la = 0 # Token type
+ try:
+ self.state = 1306
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 126, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1281
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1280
+ self.typeArguments()
+
+ self.state = 1283
+ _la = self._input.LA(1)
+ if not (_la == 57 or _la == 60):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1284
+ self.match(Java20Parser.LPAREN)
+ self.state = 1286
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1285
+ self.argumentList()
+
+ self.state = 1288
+ self.match(Java20Parser.RPAREN)
+ self.state = 1289
+ self.match(Java20Parser.SEMI)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1292
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 123, self._ctx)
+ if la_ == 1:
+ self.state = 1290
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.state = 1291
+ self.primary()
+ pass
+
+ self.state = 1294
+ self.match(Java20Parser.DOT)
+ self.state = 1296
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1295
+ self.typeArguments()
+
+ self.state = 1298
+ self.match(Java20Parser.SUPER)
+ self.state = 1299
+ self.match(Java20Parser.LPAREN)
+ self.state = 1301
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1300
+ self.argumentList()
+
+ self.state = 1303
+ self.match(Java20Parser.RPAREN)
+ self.state = 1304
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ENUM(self):
+ return self.getToken(Java20Parser.ENUM, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def enumBody(self):
+ return self.getTypedRuleContext(Java20Parser.EnumBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumDeclaration"):
+ listener.enterEnumDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumDeclaration"):
+ listener.exitEnumDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumDeclaration"):
+ return visitor.visitEnumDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumDeclaration(self):
+
+ localctx = Java20Parser.EnumDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 190, self.RULE_enumDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1311
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 1308
+ self.classModifier()
+ self.state = 1313
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1314
+ self.match(Java20Parser.ENUM)
+ self.state = 1315
+ self.typeIdentifier()
+ self.state = 1317
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 1316
+ self.classImplements()
+
+ self.state = 1319
+ self.enumBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def enumConstantList(self):
+ return self.getTypedRuleContext(Java20Parser.EnumConstantListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def enumBodyDeclarations(self):
+ return self.getTypedRuleContext(Java20Parser.EnumBodyDeclarationsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumBody"):
+ listener.enterEnumBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumBody"):
+ listener.exitEnumBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumBody"):
+ return visitor.visitEnumBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumBody(self):
+
+ localctx = Java20Parser.EnumBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 192, self.RULE_enumBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1321
+ self.match(Java20Parser.LBRACE)
+ self.state = 1323
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 86 or _la == 123:
+ self.state = 1322
+ self.enumConstantList()
+
+ self.state = 1326
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1325
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 82:
+ self.state = 1328
+ self.enumBodyDeclarations()
+
+ self.state = 1331
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def enumConstant(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.EnumConstantContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.EnumConstantContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstantList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstantList"):
+ listener.enterEnumConstantList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstantList"):
+ listener.exitEnumConstantList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstantList"):
+ return visitor.visitEnumConstantList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstantList(self):
+
+ localctx = Java20Parser.EnumConstantListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 194, self.RULE_enumConstantList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1333
+ self.enumConstant()
+ self.state = 1338
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 132, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1334
+ self.match(Java20Parser.COMMA)
+ self.state = 1335
+ self.enumConstant()
+ self.state = 1340
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 132, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def enumConstantModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.EnumConstantModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.EnumConstantModifierContext, i)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstant
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstant"):
+ listener.enterEnumConstant(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstant"):
+ listener.exitEnumConstant(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstant"):
+ return visitor.visitEnumConstant(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstant(self):
+
+ localctx = Java20Parser.EnumConstantContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 196, self.RULE_enumConstant)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1341
+ self.enumConstantModifier()
+ self.state = 1346
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1347
+ self.match(Java20Parser.Identifier)
+ self.state = 1353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 76:
+ self.state = 1348
+ self.match(Java20Parser.LPAREN)
+ self.state = 1350
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1349
+ self.argumentList()
+
+ self.state = 1352
+ self.match(Java20Parser.RPAREN)
+
+ self.state = 1356
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 78:
+ self.state = 1355
+ self.classBody()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstantModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstantModifier"):
+ listener.enterEnumConstantModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstantModifier"):
+ listener.exitEnumConstantModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstantModifier"):
+ return visitor.visitEnumConstantModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstantModifier(self):
+
+ localctx = Java20Parser.EnumConstantModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 198, self.RULE_enumConstantModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1358
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumBodyDeclarationsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def classBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumBodyDeclarations
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumBodyDeclarations"):
+ listener.enterEnumBodyDeclarations(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumBodyDeclarations"):
+ listener.exitEnumBodyDeclarations(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumBodyDeclarations"):
+ return visitor.visitEnumBodyDeclarations(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumBodyDeclarations(self):
+
+ localctx = Java20Parser.EnumBodyDeclarationsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 200, self.RULE_enumBodyDeclarations)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1360
+ self.match(Java20Parser.SEMI)
+ self.state = 1364
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 1361
+ self.classBodyDeclaration()
+ self.state = 1366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RECORD(self):
+ return self.getToken(Java20Parser.RECORD, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def recordHeader(self):
+ return self.getTypedRuleContext(Java20Parser.RecordHeaderContext, 0)
+
+ def recordBody(self):
+ return self.getTypedRuleContext(Java20Parser.RecordBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordDeclaration"):
+ listener.enterRecordDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordDeclaration"):
+ listener.exitRecordDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordDeclaration"):
+ return visitor.visitRecordDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordDeclaration(self):
+
+ localctx = Java20Parser.RecordDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 202, self.RULE_recordDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1370
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 1367
+ self.classModifier()
+ self.state = 1372
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1373
+ self.match(Java20Parser.RECORD)
+ self.state = 1374
+ self.typeIdentifier()
+ self.state = 1376
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1375
+ self.typeParameters()
+
+ self.state = 1378
+ self.recordHeader()
+ self.state = 1380
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 1379
+ self.classImplements()
+
+ self.state = 1382
+ self.recordBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordHeaderContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def recordComponentList(self):
+ return self.getTypedRuleContext(Java20Parser.RecordComponentListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordHeader
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordHeader"):
+ listener.enterRecordHeader(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordHeader"):
+ listener.exitRecordHeader(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordHeader"):
+ return visitor.visitRecordHeader(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordHeader(self):
+
+ localctx = Java20Parser.RecordHeaderContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 204, self.RULE_recordHeader)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1384
+ self.match(Java20Parser.LPAREN)
+ self.state = 1386
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102499064938496) != 0) or _la == 86 or _la == 123:
+ self.state = 1385
+ self.recordComponentList()
+
+ self.state = 1388
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def recordComponent(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponentList"):
+ listener.enterRecordComponentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponentList"):
+ listener.exitRecordComponentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponentList"):
+ return visitor.visitRecordComponentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponentList(self):
+
+ localctx = Java20Parser.RecordComponentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 206, self.RULE_recordComponentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1390
+ self.recordComponent()
+ self.state = 1395
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1391
+ self.match(Java20Parser.COMMA)
+ self.state = 1392
+ self.recordComponent()
+ self.state = 1397
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def recordComponentModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i)
+
+ def variableArityRecordComponent(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityRecordComponentContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponent
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponent"):
+ listener.enterRecordComponent(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponent"):
+ listener.exitRecordComponent(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponent"):
+ return visitor.visitRecordComponent(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponent(self):
+
+ localctx = Java20Parser.RecordComponentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 208, self.RULE_recordComponent)
+ self._la = 0 # Token type
+ try:
+ self.state = 1408
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 144, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1398
+ self.recordComponentModifier()
+ self.state = 1403
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1404
+ self.unannType()
+ self.state = 1405
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1407
+ self.variableArityRecordComponent()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableArityRecordComponentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def ELLIPSIS(self):
+ return self.getToken(Java20Parser.ELLIPSIS, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def recordComponentModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableArityRecordComponent
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableArityRecordComponent"):
+ listener.enterVariableArityRecordComponent(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableArityRecordComponent"):
+ listener.exitVariableArityRecordComponent(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableArityRecordComponent"):
+ return visitor.visitVariableArityRecordComponent(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableArityRecordComponent(self):
+
+ localctx = Java20Parser.VariableArityRecordComponentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 210, self.RULE_variableArityRecordComponent)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1413
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1410
+ self.recordComponentModifier()
+ self.state = 1415
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1416
+ self.unannType()
+ self.state = 1420
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1417
+ self.annotation()
+ self.state = 1422
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1423
+ self.match(Java20Parser.ELLIPSIS)
+ self.state = 1424
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponentModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponentModifier"):
+ listener.enterRecordComponentModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponentModifier"):
+ listener.exitRecordComponentModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponentModifier"):
+ return visitor.visitRecordComponentModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponentModifier(self):
+
+ localctx = Java20Parser.RecordComponentModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 212, self.RULE_recordComponentModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1426
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def recordBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordBody"):
+ listener.enterRecordBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordBody"):
+ listener.exitRecordBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordBody"):
+ return visitor.visitRecordBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordBody(self):
+
+ localctx = Java20Parser.RecordBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 214, self.RULE_recordBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1428
+ self.match(Java20Parser.LBRACE)
+ self.state = 1432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 1429
+ self.recordBodyDeclaration()
+ self.state = 1434
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1435
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordBodyDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classBodyDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, 0)
+
+ def compactConstructorDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.CompactConstructorDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordBodyDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordBodyDeclaration"):
+ listener.enterRecordBodyDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordBodyDeclaration"):
+ listener.exitRecordBodyDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordBodyDeclaration"):
+ return visitor.visitRecordBodyDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordBodyDeclaration(self):
+
+ localctx = Java20Parser.RecordBodyDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 216, self.RULE_recordBodyDeclaration)
+ try:
+ self.state = 1439
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 148, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1437
+ self.classBodyDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1438
+ self.compactConstructorDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CompactConstructorDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simpleTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0)
+
+ def constructorBody(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0)
+
+ def constructorModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_compactConstructorDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompactConstructorDeclaration"):
+ listener.enterCompactConstructorDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompactConstructorDeclaration"):
+ listener.exitCompactConstructorDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompactConstructorDeclaration"):
+ return visitor.visitCompactConstructorDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compactConstructorDeclaration(self):
+
+ localctx = Java20Parser.CompactConstructorDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 218, self.RULE_compactConstructorDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1444
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0):
+ self.state = 1441
+ self.constructorModifier()
+ self.state = 1446
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1447
+ self.simpleTypeName()
+ self.state = 1448
+ self.constructorBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0)
+
+ def annotationInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceDeclaration"):
+ listener.enterInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceDeclaration"):
+ listener.exitInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceDeclaration"):
+ return visitor.visitInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceDeclaration(self):
+
+ localctx = Java20Parser.InterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 220, self.RULE_interfaceDeclaration)
+ try:
+ self.state = 1452
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 150, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1450
+ self.normalInterfaceDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1451
+ self.annotationInterfaceDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INTERFACE(self):
+ return self.getToken(Java20Parser.INTERFACE, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def interfaceBody(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceBodyContext, 0)
+
+ def interfaceModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def interfaceExtends(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceExtendsContext, 0)
+
+ def interfacePermits(self):
+ return self.getTypedRuleContext(Java20Parser.InterfacePermitsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalInterfaceDeclaration"):
+ listener.enterNormalInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalInterfaceDeclaration"):
+ listener.exitNormalInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalInterfaceDeclaration"):
+ return visitor.visitNormalInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalInterfaceDeclaration(self):
+
+ localctx = Java20Parser.NormalInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 222, self.RULE_normalInterfaceDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1457
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967690405054472) != 0) or _la == 86:
+ self.state = 1454
+ self.interfaceModifier()
+ self.state = 1459
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1460
+ self.match(Java20Parser.INTERFACE)
+ self.state = 1461
+ self.typeIdentifier()
+ self.state = 1463
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1462
+ self.typeParameters()
+
+ self.state = 1466
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 1465
+ self.interfaceExtends()
+
+ self.state = 1469
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 1468
+ self.interfacePermits()
+
+ self.state = 1471
+ self.interfaceBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def SEALED(self):
+ return self.getToken(Java20Parser.SEALED, 0)
+
+ def NONSEALED(self):
+ return self.getToken(Java20Parser.NONSEALED, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceModifier"):
+ listener.enterInterfaceModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceModifier"):
+ listener.exitInterfaceModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceModifier"):
+ return visitor.visitInterfaceModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceModifier(self):
+
+ localctx = Java20Parser.InterfaceModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 224, self.RULE_interfaceModifier)
+ try:
+ self.state = 1482
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1473
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1474
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1475
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1476
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1477
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1478
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [11]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1479
+ self.match(Java20Parser.SEALED)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1480
+ self.match(Java20Parser.NONSEALED)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1481
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceExtendsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def interfaceTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceExtends
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceExtends"):
+ listener.enterInterfaceExtends(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceExtends"):
+ listener.exitInterfaceExtends(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceExtends"):
+ return visitor.visitInterfaceExtends(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceExtends(self):
+
+ localctx = Java20Parser.InterfaceExtendsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 226, self.RULE_interfaceExtends)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1484
+ self.match(Java20Parser.EXTENDS)
+ self.state = 1485
+ self.interfaceTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfacePermitsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PERMITS(self):
+ return self.getToken(Java20Parser.PERMITS, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfacePermits
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfacePermits"):
+ listener.enterInterfacePermits(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfacePermits"):
+ listener.exitInterfacePermits(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfacePermits"):
+ return visitor.visitInterfacePermits(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfacePermits(self):
+
+ localctx = Java20Parser.InterfacePermitsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 228, self.RULE_interfacePermits)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1487
+ self.match(Java20Parser.PERMITS)
+ self.state = 1488
+ self.typeName()
+ self.state = 1493
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1489
+ self.match(Java20Parser.COMMA)
+ self.state = 1490
+ self.typeName()
+ self.state = 1495
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def interfaceMemberDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceMemberDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceMemberDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceBody"):
+ listener.enterInterfaceBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceBody"):
+ listener.exitInterfaceBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceBody"):
+ return visitor.visitInterfaceBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceBody(self):
+
+ localctx = Java20Parser.InterfaceBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 230, self.RULE_interfaceBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1496
+ self.match(Java20Parser.LBRACE)
+ self.state = 1500
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105417395735048) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187494401) != 0):
+ self.state = 1497
+ self.interfaceMemberDeclaration()
+ self.state = 1502
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1503
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def constantDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0)
+
+ def interfaceMethodDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceMethodDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMemberDeclaration"):
+ listener.enterInterfaceMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMemberDeclaration"):
+ listener.exitInterfaceMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMemberDeclaration"):
+ return visitor.visitInterfaceMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMemberDeclaration(self):
+
+ localctx = Java20Parser.InterfaceMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 232, self.RULE_interfaceMemberDeclaration)
+ try:
+ self.state = 1510
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 158, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1505
+ self.constantDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1506
+ self.interfaceMethodDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1507
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1508
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1509
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def constantModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstantModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstantModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantDeclaration"):
+ listener.enterConstantDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantDeclaration"):
+ listener.exitConstantDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantDeclaration"):
+ return visitor.visitConstantDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantDeclaration(self):
+
+ localctx = Java20Parser.ConstantDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 234, self.RULE_constantDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1515
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251799814864897) != 0):
+ self.state = 1512
+ self.constantModifier()
+ self.state = 1517
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1518
+ self.unannType()
+ self.state = 1519
+ self.variableDeclaratorList()
+ self.state = 1520
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantModifier"):
+ listener.enterConstantModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantModifier"):
+ listener.exitConstantModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantModifier"):
+ return visitor.visitConstantModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantModifier(self):
+
+ localctx = Java20Parser.ConstantModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 236, self.RULE_constantModifier)
+ try:
+ self.state = 1526
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1522
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1523
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1524
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1525
+ self.match(Java20Parser.FINAL)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMethodDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodHeader(self):
+ return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0)
+
+ def methodBody(self):
+ return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0)
+
+ def interfaceMethodModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceMethodModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceMethodModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMethodDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMethodDeclaration"):
+ listener.enterInterfaceMethodDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMethodDeclaration"):
+ listener.exitInterfaceMethodDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMethodDeclaration"):
+ return visitor.visitInterfaceMethodDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMethodDeclaration(self):
+
+ localctx = Java20Parser.InterfaceMethodDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 238, self.RULE_interfaceMethodDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1531
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 113715891128238080) != 0) or _la == 86:
+ self.state = 1528
+ self.interfaceMethodModifier()
+ self.state = 1533
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1534
+ self.methodHeader()
+ self.state = 1535
+ self.methodBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMethodModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMethodModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMethodModifier"):
+ listener.enterInterfaceMethodModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMethodModifier"):
+ listener.exitInterfaceMethodModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMethodModifier"):
+ return visitor.visitInterfaceMethodModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMethodModifier(self):
+
+ localctx = Java20Parser.InterfaceMethodModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 240, self.RULE_interfaceMethodModifier)
+ try:
+ self.state = 1544
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1537
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1538
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1539
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1540
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1541
+ self.match(Java20Parser.DEFAULT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1542
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1543
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def INTERFACE(self):
+ return self.getToken(Java20Parser.INTERFACE, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotationInterfaceBody(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceBodyContext, 0)
+
+ def interfaceModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceDeclaration"):
+ listener.enterAnnotationInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceDeclaration"):
+ listener.exitAnnotationInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceDeclaration"):
+ return visitor.visitAnnotationInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 242, self.RULE_annotationInterfaceDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1549
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 163, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1546
+ self.interfaceModifier()
+ self.state = 1551
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 163, self._ctx)
+
+ self.state = 1552
+ self.match(Java20Parser.AT)
+ self.state = 1553
+ self.match(Java20Parser.INTERFACE)
+ self.state = 1554
+ self.typeIdentifier()
+ self.state = 1555
+ self.annotationInterfaceBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def annotationInterfaceMemberDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceMemberDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceMemberDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceBody"):
+ listener.enterAnnotationInterfaceBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceBody"):
+ listener.exitAnnotationInterfaceBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceBody"):
+ return visitor.visitAnnotationInterfaceBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceBody(self):
+
+ localctx = Java20Parser.AnnotationInterfaceBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 244, self.RULE_annotationInterfaceBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1557
+ self.match(Java20Parser.LBRACE)
+ self.state = 1561
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105416858864136) != 0) or (
+ (((_la - 82)) & ~0x3f) == 0 and ((1 << (_la - 82)) & 2199023255569) != 0):
+ self.state = 1558
+ self.annotationInterfaceMemberDeclaration()
+ self.state = 1563
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1564
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotationInterfaceElementDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementDeclarationContext, 0)
+
+ def constantDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceMemberDeclaration"):
+ listener.enterAnnotationInterfaceMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceMemberDeclaration"):
+ listener.exitAnnotationInterfaceMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceMemberDeclaration"):
+ return visitor.visitAnnotationInterfaceMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceMemberDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 246, self.RULE_annotationInterfaceMemberDeclaration)
+ try:
+ self.state = 1571
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 165, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1566
+ self.annotationInterfaceElementDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1567
+ self.constantDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1568
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1569
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1570
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceElementDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def annotationInterfaceElementModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceElementModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementModifierContext, i)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def defaultValue(self):
+ return self.getTypedRuleContext(Java20Parser.DefaultValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceElementDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceElementDeclaration"):
+ listener.enterAnnotationInterfaceElementDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceElementDeclaration"):
+ listener.exitAnnotationInterfaceElementDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceElementDeclaration"):
+ return visitor.visitAnnotationInterfaceElementDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceElementDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceElementDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 248, self.RULE_annotationInterfaceElementDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1576
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 18 or _la == 52 or _la == 86:
+ self.state = 1573
+ self.annotationInterfaceElementModifier()
+ self.state = 1578
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1579
+ self.unannType()
+ self.state = 1580
+ self.match(Java20Parser.Identifier)
+ self.state = 1581
+ self.match(Java20Parser.LPAREN)
+ self.state = 1582
+ self.match(Java20Parser.RPAREN)
+ self.state = 1584
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 80 or _la == 86:
+ self.state = 1583
+ self.dims()
+
+ self.state = 1587
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 29:
+ self.state = 1586
+ self.defaultValue()
+
+ self.state = 1589
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceElementModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceElementModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceElementModifier"):
+ listener.enterAnnotationInterfaceElementModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceElementModifier"):
+ listener.exitAnnotationInterfaceElementModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceElementModifier"):
+ return visitor.visitAnnotationInterfaceElementModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceElementModifier(self):
+
+ localctx = Java20Parser.AnnotationInterfaceElementModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 250, self.RULE_annotationInterfaceElementModifier)
+ try:
+ self.state = 1594
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1591
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1592
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1593
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DefaultValueContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_defaultValue
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDefaultValue"):
+ listener.enterDefaultValue(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDefaultValue"):
+ listener.exitDefaultValue(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDefaultValue"):
+ return visitor.visitDefaultValue(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def defaultValue(self):
+
+ localctx = Java20Parser.DefaultValueContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 252, self.RULE_defaultValue)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1596
+ self.match(Java20Parser.DEFAULT)
+ self.state = 1597
+ self.elementValue()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.NormalAnnotationContext, 0)
+
+ def markerAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.MarkerAnnotationContext, 0)
+
+ def singleElementAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.SingleElementAnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotation"):
+ listener.enterAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotation"):
+ listener.exitAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotation"):
+ return visitor.visitAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotation(self):
+
+ localctx = Java20Parser.AnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 254, self.RULE_annotation)
+ try:
+ self.state = 1602
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 170, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1599
+ self.normalAnnotation()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1600
+ self.markerAnnotation()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1601
+ self.singleElementAnnotation()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def elementValuePairList(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValuePairListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalAnnotation"):
+ listener.enterNormalAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalAnnotation"):
+ listener.exitNormalAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalAnnotation"):
+ return visitor.visitNormalAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalAnnotation(self):
+
+ localctx = Java20Parser.NormalAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 256, self.RULE_normalAnnotation)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1604
+ self.match(Java20Parser.AT)
+ self.state = 1605
+ self.typeName()
+ self.state = 1606
+ self.match(Java20Parser.LPAREN)
+ self.state = 1608
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1607
+ self.elementValuePairList()
+
+ self.state = 1610
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValuePairListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def elementValuePair(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ElementValuePairContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ElementValuePairContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValuePairList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValuePairList"):
+ listener.enterElementValuePairList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValuePairList"):
+ listener.exitElementValuePairList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValuePairList"):
+ return visitor.visitElementValuePairList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValuePairList(self):
+
+ localctx = Java20Parser.ElementValuePairListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 258, self.RULE_elementValuePairList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1612
+ self.elementValuePair()
+ self.state = 1617
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1613
+ self.match(Java20Parser.COMMA)
+ self.state = 1614
+ self.elementValuePair()
+ self.state = 1619
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValuePairContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValuePair
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValuePair"):
+ listener.enterElementValuePair(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValuePair"):
+ listener.exitElementValuePair(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValuePair"):
+ return visitor.visitElementValuePair(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValuePair(self):
+
+ localctx = Java20Parser.ElementValuePairContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 260, self.RULE_elementValuePair)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1620
+ self.match(Java20Parser.Identifier)
+ self.state = 1621
+ self.match(Java20Parser.ASSIGN)
+ self.state = 1622
+ self.elementValue()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def elementValueArrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueArrayInitializerContext, 0)
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValue
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValue"):
+ listener.enterElementValue(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValue"):
+ listener.exitElementValue(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValue"):
+ return visitor.visitElementValue(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValue(self):
+
+ localctx = Java20Parser.ElementValueContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 262, self.RULE_elementValue)
+ try:
+ self.state = 1627
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 173, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1624
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1625
+ self.elementValueArrayInitializer()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1626
+ self.annotation()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueArrayInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def elementValueList(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValueArrayInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValueArrayInitializer"):
+ listener.enterElementValueArrayInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValueArrayInitializer"):
+ listener.exitElementValueArrayInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValueArrayInitializer"):
+ return visitor.visitElementValueArrayInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValueArrayInitializer(self):
+
+ localctx = Java20Parser.ElementValueArrayInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 264, self.RULE_elementValueArrayInitializer)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1629
+ self.match(Java20Parser.LBRACE)
+ self.state = 1631
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0):
+ self.state = 1630
+ self.elementValueList()
+
+ self.state = 1634
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1633
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1636
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def elementValue(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ElementValueContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValueList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValueList"):
+ listener.enterElementValueList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValueList"):
+ listener.exitElementValueList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValueList"):
+ return visitor.visitElementValueList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValueList(self):
+
+ localctx = Java20Parser.ElementValueListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 266, self.RULE_elementValueList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1638
+ self.elementValue()
+ self.state = 1643
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 176, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1639
+ self.match(Java20Parser.COMMA)
+ self.state = 1640
+ self.elementValue()
+ self.state = 1645
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 176, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MarkerAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_markerAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMarkerAnnotation"):
+ listener.enterMarkerAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMarkerAnnotation"):
+ listener.exitMarkerAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMarkerAnnotation"):
+ return visitor.visitMarkerAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def markerAnnotation(self):
+
+ localctx = Java20Parser.MarkerAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 268, self.RULE_markerAnnotation)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1646
+ self.match(Java20Parser.AT)
+ self.state = 1647
+ self.typeName()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleElementAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleElementAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleElementAnnotation"):
+ listener.enterSingleElementAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleElementAnnotation"):
+ listener.exitSingleElementAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleElementAnnotation"):
+ return visitor.visitSingleElementAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleElementAnnotation(self):
+
+ localctx = Java20Parser.SingleElementAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 270, self.RULE_singleElementAnnotation)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1649
+ self.match(Java20Parser.AT)
+ self.state = 1650
+ self.typeName()
+ self.state = 1651
+ self.match(Java20Parser.LPAREN)
+ self.state = 1652
+ self.elementValue()
+ self.state = 1653
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def variableInitializerList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayInitializer"):
+ listener.enterArrayInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayInitializer"):
+ listener.exitArrayInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayInitializer"):
+ return visitor.visitArrayInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayInitializer(self):
+
+ localctx = Java20Parser.ArrayInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 272, self.RULE_arrayInitializer)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1655
+ self.match(Java20Parser.LBRACE)
+ self.state = 1657
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0):
+ self.state = 1656
+ self.variableInitializerList()
+
+ self.state = 1660
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1659
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1662
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableInitializerListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableInitializer(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableInitializerContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableInitializerList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableInitializerList"):
+ listener.enterVariableInitializerList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableInitializerList"):
+ listener.exitVariableInitializerList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableInitializerList"):
+ return visitor.visitVariableInitializerList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableInitializerList(self):
+
+ localctx = Java20Parser.VariableInitializerListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 274, self.RULE_variableInitializerList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1664
+ self.variableInitializer()
+ self.state = 1669
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1665
+ self.match(Java20Parser.COMMA)
+ self.state = 1666
+ self.variableInitializer()
+ self.state = 1671
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlock"):
+ listener.enterBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlock"):
+ listener.exitBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlock"):
+ return visitor.visitBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def block(self):
+
+ localctx = Java20Parser.BlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 276, self.RULE_block)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1672
+ self.match(Java20Parser.LBRACE)
+ self.state = 1674
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1673
+ self.blockStatements()
+
+ self.state = 1676
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockStatementsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def blockStatement(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.BlockStatementContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.BlockStatementContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_blockStatements
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlockStatements"):
+ listener.enterBlockStatements(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlockStatements"):
+ listener.exitBlockStatements(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlockStatements"):
+ return visitor.visitBlockStatements(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def blockStatements(self):
+
+ localctx = Java20Parser.BlockStatementsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 278, self.RULE_blockStatements)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1678
+ self.blockStatement()
+ self.state = 1682
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1679
+ self.blockStatement()
+ self.state = 1684
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localClassOrInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalClassOrInterfaceDeclarationContext, 0)
+
+ def localVariableDeclarationStatement(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationStatementContext, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_blockStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlockStatement"):
+ listener.enterBlockStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlockStatement"):
+ listener.exitBlockStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlockStatement"):
+ return visitor.visitBlockStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def blockStatement(self):
+
+ localctx = Java20Parser.BlockStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 280, self.RULE_blockStatement)
+ try:
+ self.state = 1688
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 182, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1685
+ self.localClassOrInterfaceDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1686
+ self.localVariableDeclarationStatement()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1687
+ self.statement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalClassOrInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def normalInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localClassOrInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalClassOrInterfaceDeclaration"):
+ listener.enterLocalClassOrInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalClassOrInterfaceDeclaration"):
+ listener.exitLocalClassOrInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalClassOrInterfaceDeclaration"):
+ return visitor.visitLocalClassOrInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localClassOrInterfaceDeclaration(self):
+
+ localctx = Java20Parser.LocalClassOrInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 282, self.RULE_localClassOrInterfaceDeclaration)
+ try:
+ self.state = 1692
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 183, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1690
+ self.classDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1691
+ self.normalInterfaceDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableType(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableTypeContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableDeclaration"):
+ listener.enterLocalVariableDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableDeclaration"):
+ listener.exitLocalVariableDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableDeclaration"):
+ return visitor.visitLocalVariableDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableDeclaration(self):
+
+ localctx = Java20Parser.LocalVariableDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 284, self.RULE_localVariableDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1697
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1694
+ self.variableModifier()
+ self.state = 1699
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1700
+ self.localVariableType()
+ self.state = 1702
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 185, self._ctx)
+ if la_ == 1:
+ self.state = 1701
+ self.variableDeclaratorList()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VAR(self):
+ return self.getToken(Java20Parser.VAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableType"):
+ listener.enterLocalVariableType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableType"):
+ listener.exitLocalVariableType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableType"):
+ return visitor.visitLocalVariableType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableType(self):
+
+ localctx = Java20Parser.LocalVariableTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 286, self.RULE_localVariableType)
+ try:
+ self.state = 1706
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1704
+ self.unannType()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1705
+ self.match(Java20Parser.VAR)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableDeclarationStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableDeclarationStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableDeclarationStatement"):
+ listener.enterLocalVariableDeclarationStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableDeclarationStatement"):
+ listener.exitLocalVariableDeclarationStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableDeclarationStatement"):
+ return visitor.visitLocalVariableDeclarationStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableDeclarationStatement(self):
+
+ localctx = Java20Parser.LocalVariableDeclarationStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 288, self.RULE_localVariableDeclarationStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1708
+ self.localVariableDeclaration()
+ self.state = 1709
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementWithoutTrailingSubstatement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0)
+
+ def labeledStatement(self):
+ return self.getTypedRuleContext(Java20Parser.LabeledStatementContext, 0)
+
+ def ifThenStatement(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenStatementContext, 0)
+
+ def ifThenElseStatement(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenElseStatementContext, 0)
+
+ def whileStatement(self):
+ return self.getTypedRuleContext(Java20Parser.WhileStatementContext, 0)
+
+ def forStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ForStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatement"):
+ listener.enterStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatement"):
+ listener.exitStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatement"):
+ return visitor.visitStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statement(self):
+
+ localctx = Java20Parser.StatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 290, self.RULE_statement)
+ try:
+ self.state = 1717
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 187, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1711
+ self.statementWithoutTrailingSubstatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1712
+ self.labeledStatement()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1713
+ self.ifThenStatement()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1714
+ self.ifThenElseStatement()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1715
+ self.whileStatement()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1716
+ self.forStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementWithoutTrailingSubstatement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0)
+
+ def labeledStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.LabeledStatementNoShortIfContext, 0)
+
+ def ifThenElseStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenElseStatementNoShortIfContext, 0)
+
+ def whileStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.WhileStatementNoShortIfContext, 0)
+
+ def forStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.ForStatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementNoShortIf"):
+ listener.enterStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementNoShortIf"):
+ listener.exitStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementNoShortIf"):
+ return visitor.visitStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementNoShortIf(self):
+
+ localctx = Java20Parser.StatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 292, self.RULE_statementNoShortIf)
+ try:
+ self.state = 1724
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 188, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1719
+ self.statementWithoutTrailingSubstatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1720
+ self.labeledStatementNoShortIf()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1721
+ self.ifThenElseStatementNoShortIf()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1722
+ self.whileStatementNoShortIf()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1723
+ self.forStatementNoShortIf()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementWithoutTrailingSubstatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def emptyStatement_(self):
+ return self.getTypedRuleContext(Java20Parser.EmptyStatement_Context, 0)
+
+ def expressionStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionStatementContext, 0)
+
+ def assertStatement(self):
+ return self.getTypedRuleContext(Java20Parser.AssertStatementContext, 0)
+
+ def switchStatement(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchStatementContext, 0)
+
+ def doStatement(self):
+ return self.getTypedRuleContext(Java20Parser.DoStatementContext, 0)
+
+ def breakStatement(self):
+ return self.getTypedRuleContext(Java20Parser.BreakStatementContext, 0)
+
+ def continueStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ContinueStatementContext, 0)
+
+ def returnStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ReturnStatementContext, 0)
+
+ def synchronizedStatement(self):
+ return self.getTypedRuleContext(Java20Parser.SynchronizedStatementContext, 0)
+
+ def throwStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0)
+
+ def tryStatement(self):
+ return self.getTypedRuleContext(Java20Parser.TryStatementContext, 0)
+
+ def yieldStatement(self):
+ return self.getTypedRuleContext(Java20Parser.YieldStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementWithoutTrailingSubstatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementWithoutTrailingSubstatement"):
+ listener.enterStatementWithoutTrailingSubstatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementWithoutTrailingSubstatement"):
+ listener.exitStatementWithoutTrailingSubstatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementWithoutTrailingSubstatement"):
+ return visitor.visitStatementWithoutTrailingSubstatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementWithoutTrailingSubstatement(self):
+
+ localctx = Java20Parser.StatementWithoutTrailingSubstatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 294, self.RULE_statementWithoutTrailingSubstatement)
+ try:
+ self.state = 1739
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [78]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1726
+ self.block()
+ pass
+ elif token in [82]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1727
+ self.emptyStatement_()
+ pass
+ elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 102, 103,
+ 123]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1728
+ self.expressionStatement()
+ pass
+ elif token in [19]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1729
+ self.assertStatement()
+ pass
+ elif token in [58]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1730
+ self.switchStatement()
+ pass
+ elif token in [30]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1731
+ self.doStatement()
+ pass
+ elif token in [21]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1732
+ self.breakStatement()
+ pass
+ elif token in [28]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1733
+ self.continueStatement()
+ pass
+ elif token in [53]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1734
+ self.returnStatement()
+ pass
+ elif token in [59]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1735
+ self.synchronizedStatement()
+ pass
+ elif token in [61]:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 1736
+ self.throwStatement()
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 12)
+ self.state = 1737
+ self.tryStatement()
+ pass
+ elif token in [17]:
+ self.enterOuterAlt(localctx, 13)
+ self.state = 1738
+ self.yieldStatement()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EmptyStatement_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_emptyStatement_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEmptyStatement_"):
+ listener.enterEmptyStatement_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEmptyStatement_"):
+ listener.exitEmptyStatement_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEmptyStatement_"):
+ return visitor.visitEmptyStatement_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def emptyStatement_(self):
+
+ localctx = Java20Parser.EmptyStatement_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 296, self.RULE_emptyStatement_)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1741
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LabeledStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_labeledStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLabeledStatement"):
+ listener.enterLabeledStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLabeledStatement"):
+ listener.exitLabeledStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLabeledStatement"):
+ return visitor.visitLabeledStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def labeledStatement(self):
+
+ localctx = Java20Parser.LabeledStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 298, self.RULE_labeledStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1743
+ self.match(Java20Parser.Identifier)
+ self.state = 1744
+ self.match(Java20Parser.COLON)
+ self.state = 1745
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LabeledStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_labeledStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLabeledStatementNoShortIf"):
+ listener.enterLabeledStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLabeledStatementNoShortIf"):
+ listener.exitLabeledStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLabeledStatementNoShortIf"):
+ return visitor.visitLabeledStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def labeledStatementNoShortIf(self):
+
+ localctx = Java20Parser.LabeledStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 300, self.RULE_labeledStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1747
+ self.match(Java20Parser.Identifier)
+ self.state = 1748
+ self.match(Java20Parser.COLON)
+ self.state = 1749
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expressionStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpressionStatement"):
+ listener.enterExpressionStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpressionStatement"):
+ listener.exitExpressionStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpressionStatement"):
+ return visitor.visitExpressionStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expressionStatement(self):
+
+ localctx = Java20Parser.ExpressionStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 302, self.RULE_expressionStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1751
+ self.statementExpression()
+ self.state = 1752
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def assignment(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0)
+
+ def preIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0)
+
+ def preDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0)
+
+ def postIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostIncrementExpressionContext, 0)
+
+ def postDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostDecrementExpressionContext, 0)
+
+ def methodInvocation(self):
+ return self.getTypedRuleContext(Java20Parser.MethodInvocationContext, 0)
+
+ def classInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ClassInstanceCreationExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementExpression"):
+ listener.enterStatementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementExpression"):
+ listener.exitStatementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementExpression"):
+ return visitor.visitStatementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementExpression(self):
+
+ localctx = Java20Parser.StatementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 304, self.RULE_statementExpression)
+ try:
+ self.state = 1761
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 190, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1754
+ self.assignment()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1755
+ self.preIncrementExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1756
+ self.preDecrementExpression()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1757
+ self.postIncrementExpression()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1758
+ self.postDecrementExpression()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1759
+ self.methodInvocation()
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1760
+ self.classInstanceCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenStatement"):
+ listener.enterIfThenStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenStatement"):
+ listener.exitIfThenStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenStatement"):
+ return visitor.visitIfThenStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenStatement(self):
+
+ localctx = Java20Parser.IfThenStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 306, self.RULE_ifThenStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1763
+ self.match(Java20Parser.IF)
+ self.state = 1764
+ self.match(Java20Parser.LPAREN)
+ self.state = 1765
+ self.expression()
+ self.state = 1766
+ self.match(Java20Parser.RPAREN)
+ self.state = 1767
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenElseStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def ELSE(self):
+ return self.getToken(Java20Parser.ELSE, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenElseStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenElseStatement"):
+ listener.enterIfThenElseStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenElseStatement"):
+ listener.exitIfThenElseStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenElseStatement"):
+ return visitor.visitIfThenElseStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenElseStatement(self):
+
+ localctx = Java20Parser.IfThenElseStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 308, self.RULE_ifThenElseStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1769
+ self.match(Java20Parser.IF)
+ self.state = 1770
+ self.match(Java20Parser.LPAREN)
+ self.state = 1771
+ self.expression()
+ self.state = 1772
+ self.match(Java20Parser.RPAREN)
+ self.state = 1773
+ self.statementNoShortIf()
+ self.state = 1774
+ self.match(Java20Parser.ELSE)
+ self.state = 1775
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenElseStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.StatementNoShortIfContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, i)
+
+ def ELSE(self):
+ return self.getToken(Java20Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenElseStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenElseStatementNoShortIf"):
+ listener.enterIfThenElseStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenElseStatementNoShortIf"):
+ listener.exitIfThenElseStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenElseStatementNoShortIf"):
+ return visitor.visitIfThenElseStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenElseStatementNoShortIf(self):
+
+ localctx = Java20Parser.IfThenElseStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 310, self.RULE_ifThenElseStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1777
+ self.match(Java20Parser.IF)
+ self.state = 1778
+ self.match(Java20Parser.LPAREN)
+ self.state = 1779
+ self.expression()
+ self.state = 1780
+ self.match(Java20Parser.RPAREN)
+ self.state = 1781
+ self.statementNoShortIf()
+ self.state = 1782
+ self.match(Java20Parser.ELSE)
+ self.state = 1783
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssertStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSERT(self):
+ return self.getToken(Java20Parser.ASSERT, 0)
+
+ def expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assertStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssertStatement"):
+ listener.enterAssertStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssertStatement"):
+ listener.exitAssertStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssertStatement"):
+ return visitor.visitAssertStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assertStatement(self):
+
+ localctx = Java20Parser.AssertStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 312, self.RULE_assertStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1785
+ self.match(Java20Parser.ASSERT)
+ self.state = 1786
+ self.expression()
+ self.state = 1789
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 94:
+ self.state = 1787
+ self.match(Java20Parser.COLON)
+ self.state = 1788
+ self.expression()
+
+ self.state = 1791
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SWITCH(self):
+ return self.getToken(Java20Parser.SWITCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def switchBlock(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchStatement"):
+ listener.enterSwitchStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchStatement"):
+ listener.exitSwitchStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchStatement"):
+ return visitor.visitSwitchStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchStatement(self):
+
+ localctx = Java20Parser.SwitchStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 314, self.RULE_switchStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1793
+ self.match(Java20Parser.SWITCH)
+ self.state = 1794
+ self.match(Java20Parser.LPAREN)
+ self.state = 1795
+ self.expression()
+ self.state = 1796
+ self.match(Java20Parser.RPAREN)
+ self.state = 1797
+ self.switchBlock()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchBlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def switchRule(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchRuleContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchRuleContext, i)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def switchBlockStatementGroup(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchBlockStatementGroupContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockStatementGroupContext, i)
+
+ def switchLabel(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COLON)
+ else:
+ return self.getToken(Java20Parser.COLON, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchBlock
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchBlock"):
+ listener.enterSwitchBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchBlock"):
+ listener.exitSwitchBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchBlock"):
+ return visitor.visitSwitchBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchBlock(self):
+
+ localctx = Java20Parser.SwitchBlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 316, self.RULE_switchBlock)
+ self._la = 0 # Token type
+ try:
+ self.state = 1825
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 195, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1799
+ self.match(Java20Parser.LBRACE)
+ self.state = 1800
+ self.switchRule()
+ self.state = 1804
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1801
+ self.switchRule()
+ self.state = 1806
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1807
+ self.match(Java20Parser.RBRACE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1809
+ self.match(Java20Parser.LBRACE)
+ self.state = 1813
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 193, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1810
+ self.switchBlockStatementGroup()
+ self.state = 1815
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 193, self._ctx)
+
+ self.state = 1821
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1816
+ self.switchLabel()
+ self.state = 1817
+ self.match(Java20Parser.COLON)
+ self.state = 1823
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1824
+ self.match(Java20Parser.RBRACE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchRuleContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def switchLabel(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Java20Parser.ARROW, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def throwStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchRule
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchRule"):
+ listener.enterSwitchRule(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchRule"):
+ listener.exitSwitchRule(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchRule"):
+ return visitor.visitSwitchRule(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchRule(self):
+
+ localctx = Java20Parser.SwitchRuleContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 318, self.RULE_switchRule)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1827
+ self.switchLabel()
+ self.state = 1828
+ self.match(Java20Parser.ARROW)
+ self.state = 1834
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.state = 1829
+ self.expression()
+ self.state = 1830
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [78]:
+ self.state = 1832
+ self.block()
+ pass
+ elif token in [61]:
+ self.state = 1833
+ self.throwStatement()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchBlockStatementGroupContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def switchLabel(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COLON)
+ else:
+ return self.getToken(Java20Parser.COLON, i)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchBlockStatementGroup
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchBlockStatementGroup"):
+ listener.enterSwitchBlockStatementGroup(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchBlockStatementGroup"):
+ listener.exitSwitchBlockStatementGroup(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchBlockStatementGroup"):
+ return visitor.visitSwitchBlockStatementGroup(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchBlockStatementGroup(self):
+
+ localctx = Java20Parser.SwitchBlockStatementGroupContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 320, self.RULE_switchBlockStatementGroup)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1836
+ self.switchLabel()
+ self.state = 1837
+ self.match(Java20Parser.COLON)
+ self.state = 1843
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1838
+ self.switchLabel()
+ self.state = 1839
+ self.match(Java20Parser.COLON)
+ self.state = 1845
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1846
+ self.blockStatements()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchLabelContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CASE(self):
+ return self.getToken(Java20Parser.CASE, 0)
+
+ def caseConstant(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.CaseConstantContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.CaseConstantContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchLabel
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchLabel"):
+ listener.enterSwitchLabel(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchLabel"):
+ listener.exitSwitchLabel(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchLabel"):
+ return visitor.visitSwitchLabel(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchLabel(self):
+
+ localctx = Java20Parser.SwitchLabelContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 322, self.RULE_switchLabel)
+ self._la = 0 # Token type
+ try:
+ self.state = 1858
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [23]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1848
+ self.match(Java20Parser.CASE)
+ self.state = 1849
+ self.caseConstant()
+ self.state = 1854
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1850
+ self.match(Java20Parser.COMMA)
+ self.state = 1851
+ self.caseConstant()
+ self.state = 1856
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1857
+ self.match(Java20Parser.DEFAULT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CaseConstantContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_caseConstant
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCaseConstant"):
+ listener.enterCaseConstant(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCaseConstant"):
+ listener.exitCaseConstant(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCaseConstant"):
+ return visitor.visitCaseConstant(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def caseConstant(self):
+
+ localctx = Java20Parser.CaseConstantContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 324, self.RULE_caseConstant)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1860
+ self.conditionalExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WhileStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_whileStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhileStatement"):
+ listener.enterWhileStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhileStatement"):
+ listener.exitWhileStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhileStatement"):
+ return visitor.visitWhileStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def whileStatement(self):
+
+ localctx = Java20Parser.WhileStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 326, self.RULE_whileStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1862
+ self.match(Java20Parser.WHILE)
+ self.state = 1863
+ self.match(Java20Parser.LPAREN)
+ self.state = 1864
+ self.expression()
+ self.state = 1865
+ self.match(Java20Parser.RPAREN)
+ self.state = 1866
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WhileStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_whileStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhileStatementNoShortIf"):
+ listener.enterWhileStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhileStatementNoShortIf"):
+ listener.exitWhileStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhileStatementNoShortIf"):
+ return visitor.visitWhileStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def whileStatementNoShortIf(self):
+
+ localctx = Java20Parser.WhileStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 328, self.RULE_whileStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1868
+ self.match(Java20Parser.WHILE)
+ self.state = 1869
+ self.match(Java20Parser.LPAREN)
+ self.state = 1870
+ self.expression()
+ self.state = 1871
+ self.match(Java20Parser.RPAREN)
+ self.state = 1872
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DoStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DO(self):
+ return self.getToken(Java20Parser.DO, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_doStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDoStatement"):
+ listener.enterDoStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDoStatement"):
+ listener.exitDoStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDoStatement"):
+ return visitor.visitDoStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def doStatement(self):
+
+ localctx = Java20Parser.DoStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 330, self.RULE_doStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1874
+ self.match(Java20Parser.DO)
+ self.state = 1875
+ self.statement()
+ self.state = 1876
+ self.match(Java20Parser.WHILE)
+ self.state = 1877
+ self.match(Java20Parser.LPAREN)
+ self.state = 1878
+ self.expression()
+ self.state = 1879
+ self.match(Java20Parser.RPAREN)
+ self.state = 1880
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def basicForStatement(self):
+ return self.getTypedRuleContext(Java20Parser.BasicForStatementContext, 0)
+
+ def enhancedForStatement(self):
+ return self.getTypedRuleContext(Java20Parser.EnhancedForStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForStatement"):
+ listener.enterForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForStatement"):
+ listener.exitForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForStatement"):
+ return visitor.visitForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forStatement(self):
+
+ localctx = Java20Parser.ForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 332, self.RULE_forStatement)
+ try:
+ self.state = 1884
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 200, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1882
+ self.basicForStatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1883
+ self.enhancedForStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def basicForStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.BasicForStatementNoShortIfContext, 0)
+
+ def enhancedForStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.EnhancedForStatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForStatementNoShortIf"):
+ listener.enterForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForStatementNoShortIf"):
+ listener.exitForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForStatementNoShortIf"):
+ return visitor.visitForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forStatementNoShortIf(self):
+
+ localctx = Java20Parser.ForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 334, self.RULE_forStatementNoShortIf)
+ try:
+ self.state = 1888
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 201, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1886
+ self.basicForStatementNoShortIf()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1887
+ self.enhancedForStatementNoShortIf()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BasicForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def forInit(self):
+ return self.getTypedRuleContext(Java20Parser.ForInitContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def forUpdate(self):
+ return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_basicForStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBasicForStatement"):
+ listener.enterBasicForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBasicForStatement"):
+ listener.exitBasicForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBasicForStatement"):
+ return visitor.visitBasicForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def basicForStatement(self):
+
+ localctx = Java20Parser.BasicForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 336, self.RULE_basicForStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1890
+ self.match(Java20Parser.FOR)
+ self.state = 1891
+ self.match(Java20Parser.LPAREN)
+ self.state = 1893
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1892
+ self.forInit()
+
+ self.state = 1895
+ self.match(Java20Parser.SEMI)
+ self.state = 1897
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1896
+ self.expression()
+
+ self.state = 1899
+ self.match(Java20Parser.SEMI)
+ self.state = 1901
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1900
+ self.forUpdate()
+
+ self.state = 1903
+ self.match(Java20Parser.RPAREN)
+ self.state = 1904
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BasicForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def forInit(self):
+ return self.getTypedRuleContext(Java20Parser.ForInitContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def forUpdate(self):
+ return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_basicForStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBasicForStatementNoShortIf"):
+ listener.enterBasicForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBasicForStatementNoShortIf"):
+ listener.exitBasicForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBasicForStatementNoShortIf"):
+ return visitor.visitBasicForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def basicForStatementNoShortIf(self):
+
+ localctx = Java20Parser.BasicForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 338, self.RULE_basicForStatementNoShortIf)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1906
+ self.match(Java20Parser.FOR)
+ self.state = 1907
+ self.match(Java20Parser.LPAREN)
+ self.state = 1909
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1908
+ self.forInit()
+
+ self.state = 1911
+ self.match(Java20Parser.SEMI)
+ self.state = 1913
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1912
+ self.expression()
+
+ self.state = 1915
+ self.match(Java20Parser.SEMI)
+ self.state = 1917
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1916
+ self.forUpdate()
+
+ self.state = 1919
+ self.match(Java20Parser.RPAREN)
+ self.state = 1920
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForInitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpressionList(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forInit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForInit"):
+ listener.enterForInit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForInit"):
+ listener.exitForInit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForInit"):
+ return visitor.visitForInit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forInit(self):
+
+ localctx = Java20Parser.ForInitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 340, self.RULE_forInit)
+ try:
+ self.state = 1924
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 208, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1922
+ self.statementExpressionList()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1923
+ self.localVariableDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForUpdateContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpressionList(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forUpdate
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForUpdate"):
+ listener.enterForUpdate(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForUpdate"):
+ listener.exitForUpdate(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForUpdate"):
+ return visitor.visitForUpdate(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forUpdate(self):
+
+ localctx = Java20Parser.ForUpdateContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 342, self.RULE_forUpdate)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1926
+ self.statementExpressionList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementExpressionListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.StatementExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementExpressionList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementExpressionList"):
+ listener.enterStatementExpressionList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementExpressionList"):
+ listener.exitStatementExpressionList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementExpressionList"):
+ return visitor.visitStatementExpressionList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementExpressionList(self):
+
+ localctx = Java20Parser.StatementExpressionListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 344, self.RULE_statementExpressionList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1928
+ self.statementExpression()
+ self.state = 1933
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1929
+ self.match(Java20Parser.COMMA)
+ self.state = 1930
+ self.statementExpression()
+ self.state = 1935
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnhancedForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enhancedForStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnhancedForStatement"):
+ listener.enterEnhancedForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnhancedForStatement"):
+ listener.exitEnhancedForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnhancedForStatement"):
+ return visitor.visitEnhancedForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enhancedForStatement(self):
+
+ localctx = Java20Parser.EnhancedForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 346, self.RULE_enhancedForStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1936
+ self.match(Java20Parser.FOR)
+ self.state = 1937
+ self.match(Java20Parser.LPAREN)
+ self.state = 1938
+ self.localVariableDeclaration()
+ self.state = 1939
+ self.match(Java20Parser.COLON)
+ self.state = 1940
+ self.expression()
+ self.state = 1941
+ self.match(Java20Parser.RPAREN)
+ self.state = 1942
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnhancedForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enhancedForStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnhancedForStatementNoShortIf"):
+ listener.enterEnhancedForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnhancedForStatementNoShortIf"):
+ listener.exitEnhancedForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnhancedForStatementNoShortIf"):
+ return visitor.visitEnhancedForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enhancedForStatementNoShortIf(self):
+
+ localctx = Java20Parser.EnhancedForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 348, self.RULE_enhancedForStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1944
+ self.match(Java20Parser.FOR)
+ self.state = 1945
+ self.match(Java20Parser.LPAREN)
+ self.state = 1946
+ self.localVariableDeclaration()
+ self.state = 1947
+ self.match(Java20Parser.COLON)
+ self.state = 1948
+ self.expression()
+ self.state = 1949
+ self.match(Java20Parser.RPAREN)
+ self.state = 1950
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BreakStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BREAK(self):
+ return self.getToken(Java20Parser.BREAK, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_breakStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBreakStatement"):
+ listener.enterBreakStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBreakStatement"):
+ listener.exitBreakStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBreakStatement"):
+ return visitor.visitBreakStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def breakStatement(self):
+
+ localctx = Java20Parser.BreakStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 350, self.RULE_breakStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1952
+ self.match(Java20Parser.BREAK)
+ self.state = 1954
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1953
+ self.match(Java20Parser.Identifier)
+
+ self.state = 1956
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ContinueStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CONTINUE(self):
+ return self.getToken(Java20Parser.CONTINUE, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_continueStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterContinueStatement"):
+ listener.enterContinueStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitContinueStatement"):
+ listener.exitContinueStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitContinueStatement"):
+ return visitor.visitContinueStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def continueStatement(self):
+
+ localctx = Java20Parser.ContinueStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 352, self.RULE_continueStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1958
+ self.match(Java20Parser.CONTINUE)
+ self.state = 1960
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1959
+ self.match(Java20Parser.Identifier)
+
+ self.state = 1962
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReturnStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RETURN(self):
+ return self.getToken(Java20Parser.RETURN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_returnStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReturnStatement"):
+ listener.enterReturnStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReturnStatement"):
+ listener.exitReturnStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReturnStatement"):
+ return visitor.visitReturnStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def returnStatement(self):
+
+ localctx = Java20Parser.ReturnStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 354, self.RULE_returnStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1964
+ self.match(Java20Parser.RETURN)
+ self.state = 1966
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1965
+ self.expression()
+
+ self.state = 1968
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ThrowStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def THROW(self):
+ return self.getToken(Java20Parser.THROW, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_throwStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterThrowStatement"):
+ listener.enterThrowStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitThrowStatement"):
+ listener.exitThrowStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitThrowStatement"):
+ return visitor.visitThrowStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def throwStatement(self):
+
+ localctx = Java20Parser.ThrowStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 356, self.RULE_throwStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1970
+ self.match(Java20Parser.THROW)
+ self.state = 1971
+ self.expression()
+ self.state = 1972
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SynchronizedStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SYNCHRONIZED(self):
+ return self.getToken(Java20Parser.SYNCHRONIZED, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_synchronizedStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSynchronizedStatement"):
+ listener.enterSynchronizedStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSynchronizedStatement"):
+ listener.exitSynchronizedStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSynchronizedStatement"):
+ return visitor.visitSynchronizedStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def synchronizedStatement(self):
+
+ localctx = Java20Parser.SynchronizedStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 358, self.RULE_synchronizedStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1974
+ self.match(Java20Parser.SYNCHRONIZED)
+ self.state = 1975
+ self.match(Java20Parser.LPAREN)
+ self.state = 1976
+ self.expression()
+ self.state = 1977
+ self.match(Java20Parser.RPAREN)
+ self.state = 1978
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TryStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Java20Parser.TRY, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def catches(self):
+ return self.getTypedRuleContext(Java20Parser.CatchesContext, 0)
+
+ def finallyBlock(self):
+ return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0)
+
+ def tryWithResourcesStatement(self):
+ return self.getTypedRuleContext(Java20Parser.TryWithResourcesStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_tryStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTryStatement"):
+ listener.enterTryStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTryStatement"):
+ listener.exitTryStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTryStatement"):
+ return visitor.visitTryStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tryStatement(self):
+
+ localctx = Java20Parser.TryStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 360, self.RULE_tryStatement)
+ self._la = 0 # Token type
+ try:
+ self.state = 1996
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 214, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1980
+ self.match(Java20Parser.TRY)
+ self.state = 1981
+ self.block()
+ self.state = 1982
+ self.catches()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1984
+ self.match(Java20Parser.TRY)
+ self.state = 1985
+ self.block()
+ self.state = 1986
+ self.finallyBlock()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1988
+ self.match(Java20Parser.TRY)
+ self.state = 1989
+ self.block()
+ self.state = 1991
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 24:
+ self.state = 1990
+ self.catches()
+
+ self.state = 1993
+ self.finallyBlock()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1995
+ self.tryWithResourcesStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def catchClause(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.CatchClauseContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.CatchClauseContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catches
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatches"):
+ listener.enterCatches(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatches"):
+ listener.exitCatches(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatches"):
+ return visitor.visitCatches(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catches(self):
+
+ localctx = Java20Parser.CatchesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 362, self.RULE_catches)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1998
+ self.catchClause()
+ self.state = 2002
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 24:
+ self.state = 1999
+ self.catchClause()
+ self.state = 2004
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchClauseContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CATCH(self):
+ return self.getToken(Java20Parser.CATCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def catchFormalParameter(self):
+ return self.getTypedRuleContext(Java20Parser.CatchFormalParameterContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchClause
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchClause"):
+ listener.enterCatchClause(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchClause"):
+ listener.exitCatchClause(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchClause"):
+ return visitor.visitCatchClause(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchClause(self):
+
+ localctx = Java20Parser.CatchClauseContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 364, self.RULE_catchClause)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2005
+ self.match(Java20Parser.CATCH)
+ self.state = 2006
+ self.match(Java20Parser.LPAREN)
+ self.state = 2007
+ self.catchFormalParameter()
+ self.state = 2008
+ self.match(Java20Parser.RPAREN)
+ self.state = 2009
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchFormalParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def catchType(self):
+ return self.getTypedRuleContext(Java20Parser.CatchTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchFormalParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchFormalParameter"):
+ listener.enterCatchFormalParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchFormalParameter"):
+ listener.exitCatchFormalParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchFormalParameter"):
+ return visitor.visitCatchFormalParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchFormalParameter(self):
+
+ localctx = Java20Parser.CatchFormalParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 366, self.RULE_catchFormalParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2014
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 2011
+ self.variableModifier()
+ self.state = 2016
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2017
+ self.catchType()
+ self.state = 2018
+ self.variableDeclaratorId()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0)
+
+ def BITOR(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.BITOR)
+ else:
+ return self.getToken(Java20Parser.BITOR, i)
+
+ def classType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchType"):
+ listener.enterCatchType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchType"):
+ listener.exitCatchType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchType"):
+ return visitor.visitCatchType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchType(self):
+
+ localctx = Java20Parser.CatchTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 368, self.RULE_catchType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2020
+ self.unannClassType()
+ self.state = 2025
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 109:
+ self.state = 2021
+ self.match(Java20Parser.BITOR)
+ self.state = 2022
+ self.classType()
+ self.state = 2027
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FinallyBlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FINALLY(self):
+ return self.getToken(Java20Parser.FINALLY, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_finallyBlock
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFinallyBlock"):
+ listener.enterFinallyBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFinallyBlock"):
+ listener.exitFinallyBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFinallyBlock"):
+ return visitor.visitFinallyBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def finallyBlock(self):
+
+ localctx = Java20Parser.FinallyBlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 370, self.RULE_finallyBlock)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2028
+ self.match(Java20Parser.FINALLY)
+ self.state = 2029
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TryWithResourcesStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Java20Parser.TRY, 0)
+
+ def resourceSpecification(self):
+ return self.getTypedRuleContext(Java20Parser.ResourceSpecificationContext, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def catches(self):
+ return self.getTypedRuleContext(Java20Parser.CatchesContext, 0)
+
+ def finallyBlock(self):
+ return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_tryWithResourcesStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTryWithResourcesStatement"):
+ listener.enterTryWithResourcesStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTryWithResourcesStatement"):
+ listener.exitTryWithResourcesStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTryWithResourcesStatement"):
+ return visitor.visitTryWithResourcesStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tryWithResourcesStatement(self):
+
+ localctx = Java20Parser.TryWithResourcesStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 372, self.RULE_tryWithResourcesStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2031
+ self.match(Java20Parser.TRY)
+ self.state = 2032
+ self.resourceSpecification()
+ self.state = 2033
+ self.block()
+ self.state = 2035
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 24:
+ self.state = 2034
+ self.catches()
+
+ self.state = 2038
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 36:
+ self.state = 2037
+ self.finallyBlock()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceSpecificationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def resourceList(self):
+ return self.getTypedRuleContext(Java20Parser.ResourceListContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resourceSpecification
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResourceSpecification"):
+ listener.enterResourceSpecification(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResourceSpecification"):
+ listener.exitResourceSpecification(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResourceSpecification"):
+ return visitor.visitResourceSpecification(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resourceSpecification(self):
+
+ localctx = Java20Parser.ResourceSpecificationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 374, self.RULE_resourceSpecification)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2040
+ self.match(Java20Parser.LPAREN)
+ self.state = 2041
+ self.resourceList()
+ self.state = 2043
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 82:
+ self.state = 2042
+ self.match(Java20Parser.SEMI)
+
+ self.state = 2045
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def resource(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ResourceContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ResourceContext, i)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resourceList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResourceList"):
+ listener.enterResourceList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResourceList"):
+ listener.exitResourceList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResourceList"):
+ return visitor.visitResourceList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resourceList(self):
+
+ localctx = Java20Parser.ResourceListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 376, self.RULE_resourceList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2047
+ self.resource()
+ self.state = 2052
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 221, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 2048
+ self.match(Java20Parser.SEMI)
+ self.state = 2049
+ self.resource()
+ self.state = 2054
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 221, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def variableAccess(self):
+ return self.getTypedRuleContext(Java20Parser.VariableAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resource
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResource"):
+ listener.enterResource(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResource"):
+ listener.exitResource(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResource"):
+ return visitor.visitResource(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resource(self):
+
+ localctx = Java20Parser.ResourceContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 378, self.RULE_resource)
+ try:
+ self.state = 2057
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 222, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2055
+ self.localVariableDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2056
+ self.variableAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def fieldAccess(self):
+ return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableAccess"):
+ listener.enterVariableAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableAccess"):
+ listener.exitVariableAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableAccess"):
+ return visitor.visitVariableAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableAccess(self):
+
+ localctx = Java20Parser.VariableAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 380, self.RULE_variableAccess)
+ try:
+ self.state = 2061
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 223, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2059
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2060
+ self.fieldAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class YieldStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def YIELD(self):
+ return self.getToken(Java20Parser.YIELD, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_yieldStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYieldStatement"):
+ listener.enterYieldStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYieldStatement"):
+ listener.exitYieldStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYieldStatement"):
+ return visitor.visitYieldStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yieldStatement(self):
+
+ localctx = Java20Parser.YieldStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 382, self.RULE_yieldStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2063
+ self.match(Java20Parser.YIELD)
+ self.state = 2064
+ self.expression()
+ self.state = 2065
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typePattern(self):
+ return self.getTypedRuleContext(Java20Parser.TypePatternContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern"):
+ listener.enterPattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern"):
+ listener.exitPattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern"):
+ return visitor.visitPattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern(self):
+
+ localctx = Java20Parser.PatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 384, self.RULE_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2067
+ self.typePattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypePatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typePattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypePattern"):
+ listener.enterTypePattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypePattern"):
+ listener.exitTypePattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypePattern"):
+ return visitor.visitTypePattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typePattern(self):
+
+ localctx = Java20Parser.TypePatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 386, self.RULE_typePattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2069
+ self.localVariableDeclaration()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def assignmentExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpression"):
+ listener.enterExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpression"):
+ listener.exitExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpression"):
+ return visitor.visitExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expression(self):
+
+ localctx = Java20Parser.ExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 388, self.RULE_expression)
+ try:
+ self.state = 2073
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 224, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2071
+ self.lambdaExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2072
+ self.assignmentExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimaryContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primaryNoNewArray(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0)
+
+ def arrayCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primary
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimary"):
+ listener.enterPrimary(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimary"):
+ listener.exitPrimary(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimary"):
+ return visitor.visitPrimary(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primary(self):
+
+ localctx = Java20Parser.PrimaryContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 390, self.RULE_primary)
+ try:
+ self.state = 2077
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 225, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2075
+ self.primaryNoNewArray()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2076
+ self.arrayCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimaryNoNewArrayContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def literal(self):
+ return self.getTypedRuleContext(Java20Parser.LiteralContext, 0)
+
+ def pNNA(self):
+ return self.getTypedRuleContext(Java20Parser.PNNAContext, 0)
+
+ def classLiteral(self):
+ return self.getTypedRuleContext(Java20Parser.ClassLiteralContext, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def arrayCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def methodName(self):
+ return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primaryNoNewArray
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimaryNoNewArray"):
+ listener.enterPrimaryNoNewArray(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimaryNoNewArray"):
+ listener.exitPrimaryNoNewArray(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimaryNoNewArray"):
+ return visitor.visitPrimaryNoNewArray(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primaryNoNewArray(self):
+
+ localctx = Java20Parser.PrimaryNoNewArrayContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 392, self.RULE_primaryNoNewArray)
+ self._la = 0 # Token type
+ try:
+ self.state = 2296
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 269, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2079
+ self.literal()
+ self.state = 2081
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 226, self._ctx)
+ if la_ == 1:
+ self.state = 2080
+ self.pNNA()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2083
+ self.classLiteral()
+ self.state = 2085
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 227, self._ctx)
+ if la_ == 1:
+ self.state = 2084
+ self.pNNA()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2087
+ self.match(Java20Parser.THIS)
+ self.state = 2089
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 228, self._ctx)
+ if la_ == 1:
+ self.state = 2088
+ self.pNNA()
+
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2091
+ self.typeName()
+ self.state = 2092
+ self.match(Java20Parser.DOT)
+ self.state = 2093
+ self.match(Java20Parser.THIS)
+ self.state = 2095
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 229, self._ctx)
+ if la_ == 1:
+ self.state = 2094
+ self.pNNA()
+
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2097
+ self.match(Java20Parser.LPAREN)
+ self.state = 2098
+ self.expression()
+ self.state = 2099
+ self.match(Java20Parser.RPAREN)
+ self.state = 2101
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 230, self._ctx)
+ if la_ == 1:
+ self.state = 2100
+ self.pNNA()
+
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2103
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2105
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 231, self._ctx)
+ if la_ == 1:
+ self.state = 2104
+ self.pNNA()
+
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 2107
+ self.expressionName()
+ self.state = 2108
+ self.match(Java20Parser.DOT)
+ self.state = 2109
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2111
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 232, self._ctx)
+ if la_ == 1:
+ self.state = 2110
+ self.pNNA()
+
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 2113
+ self.arrayCreationExpression()
+ self.state = 2114
+ self.match(Java20Parser.DOT)
+ self.state = 2115
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2117
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 233, self._ctx)
+ if la_ == 1:
+ self.state = 2116
+ self.pNNA()
+
+ pass
+
+ elif la_ == 9:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 2119
+ self.arrayCreationExpression()
+ self.state = 2120
+ self.match(Java20Parser.DOT)
+ self.state = 2121
+ self.match(Java20Parser.Identifier)
+ self.state = 2123
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 234, self._ctx)
+ if la_ == 1:
+ self.state = 2122
+ self.pNNA()
+
+ pass
+
+ elif la_ == 10:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 2125
+ self.match(Java20Parser.SUPER)
+ self.state = 2126
+ self.match(Java20Parser.DOT)
+ self.state = 2127
+ self.match(Java20Parser.Identifier)
+ self.state = 2129
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 235, self._ctx)
+ if la_ == 1:
+ self.state = 2128
+ self.pNNA()
+
+ pass
+
+ elif la_ == 11:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 2131
+ self.typeName()
+ self.state = 2132
+ self.match(Java20Parser.DOT)
+ self.state = 2133
+ self.match(Java20Parser.SUPER)
+ self.state = 2134
+ self.match(Java20Parser.DOT)
+ self.state = 2135
+ self.match(Java20Parser.Identifier)
+ self.state = 2137
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 236, self._ctx)
+ if la_ == 1:
+ self.state = 2136
+ self.pNNA()
+
+ pass
+
+ elif la_ == 12:
+ self.enterOuterAlt(localctx, 12)
+ self.state = 2139
+ self.expressionName()
+ self.state = 2140
+ self.match(Java20Parser.LBRACK)
+ self.state = 2141
+ self.expression()
+ self.state = 2142
+ self.match(Java20Parser.RBRACK)
+ self.state = 2144
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 237, self._ctx)
+ if la_ == 1:
+ self.state = 2143
+ self.pNNA()
+
+ pass
+
+ elif la_ == 13:
+ self.enterOuterAlt(localctx, 13)
+ self.state = 2146
+ self.arrayCreationExpressionWithInitializer()
+ self.state = 2147
+ self.match(Java20Parser.LBRACK)
+ self.state = 2148
+ self.expression()
+ self.state = 2149
+ self.match(Java20Parser.RBRACK)
+ self.state = 2151
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 238, self._ctx)
+ if la_ == 1:
+ self.state = 2150
+ self.pNNA()
+
+ pass
+
+ elif la_ == 14:
+ self.enterOuterAlt(localctx, 14)
+ self.state = 2153
+ self.methodName()
+ self.state = 2154
+ self.match(Java20Parser.LPAREN)
+ self.state = 2156
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2155
+ self.argumentList()
+
+ self.state = 2158
+ self.match(Java20Parser.RPAREN)
+ self.state = 2160
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 240, self._ctx)
+ if la_ == 1:
+ self.state = 2159
+ self.pNNA()
+
+ pass
+
+ elif la_ == 15:
+ self.enterOuterAlt(localctx, 15)
+ self.state = 2162
+ self.typeName()
+ self.state = 2163
+ self.match(Java20Parser.DOT)
+ self.state = 2165
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2164
+ self.typeArguments()
+
+ self.state = 2167
+ self.match(Java20Parser.Identifier)
+ self.state = 2168
+ self.match(Java20Parser.LPAREN)
+ self.state = 2170
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2169
+ self.argumentList()
+
+ self.state = 2172
+ self.match(Java20Parser.RPAREN)
+ self.state = 2174
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 243, self._ctx)
+ if la_ == 1:
+ self.state = 2173
+ self.pNNA()
+
+ pass
+
+ elif la_ == 16:
+ self.enterOuterAlt(localctx, 16)
+ self.state = 2176
+ self.expressionName()
+ self.state = 2177
+ self.match(Java20Parser.DOT)
+ self.state = 2179
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2178
+ self.typeArguments()
+
+ self.state = 2181
+ self.match(Java20Parser.Identifier)
+ self.state = 2182
+ self.match(Java20Parser.LPAREN)
+ self.state = 2184
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2183
+ self.argumentList()
+
+ self.state = 2186
+ self.match(Java20Parser.RPAREN)
+ self.state = 2188
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 246, self._ctx)
+ if la_ == 1:
+ self.state = 2187
+ self.pNNA()
+
+ pass
+
+ elif la_ == 17:
+ self.enterOuterAlt(localctx, 17)
+ self.state = 2190
+ self.arrayCreationExpression()
+ self.state = 2191
+ self.match(Java20Parser.DOT)
+ self.state = 2193
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2192
+ self.typeArguments()
+
+ self.state = 2195
+ self.match(Java20Parser.Identifier)
+ self.state = 2196
+ self.match(Java20Parser.LPAREN)
+ self.state = 2198
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2197
+ self.argumentList()
+
+ self.state = 2200
+ self.match(Java20Parser.RPAREN)
+ self.state = 2202
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 249, self._ctx)
+ if la_ == 1:
+ self.state = 2201
+ self.pNNA()
+
+ pass
+
+ elif la_ == 18:
+ self.enterOuterAlt(localctx, 18)
+ self.state = 2204
+ self.match(Java20Parser.SUPER)
+ self.state = 2205
+ self.match(Java20Parser.DOT)
+ self.state = 2207
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2206
+ self.typeArguments()
+
+ self.state = 2209
+ self.match(Java20Parser.Identifier)
+ self.state = 2210
+ self.match(Java20Parser.LPAREN)
+ self.state = 2212
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2211
+ self.argumentList()
+
+ self.state = 2214
+ self.match(Java20Parser.RPAREN)
+ self.state = 2216
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 252, self._ctx)
+ if la_ == 1:
+ self.state = 2215
+ self.pNNA()
+
+ pass
+
+ elif la_ == 19:
+ self.enterOuterAlt(localctx, 19)
+ self.state = 2218
+ self.typeName()
+ self.state = 2219
+ self.match(Java20Parser.DOT)
+ self.state = 2220
+ self.match(Java20Parser.SUPER)
+ self.state = 2221
+ self.match(Java20Parser.DOT)
+ self.state = 2223
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2222
+ self.typeArguments()
+
+ self.state = 2225
+ self.match(Java20Parser.Identifier)
+ self.state = 2226
+ self.match(Java20Parser.LPAREN)
+ self.state = 2228
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2227
+ self.argumentList()
+
+ self.state = 2230
+ self.match(Java20Parser.RPAREN)
+ self.state = 2232
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 255, self._ctx)
+ if la_ == 1:
+ self.state = 2231
+ self.pNNA()
+
+ pass
+
+ elif la_ == 20:
+ self.enterOuterAlt(localctx, 20)
+ self.state = 2234
+ self.expressionName()
+ self.state = 2235
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2237
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2236
+ self.typeArguments()
+
+ self.state = 2239
+ self.match(Java20Parser.Identifier)
+ self.state = 2241
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 257, self._ctx)
+ if la_ == 1:
+ self.state = 2240
+ self.pNNA()
+
+ pass
+
+ elif la_ == 21:
+ self.enterOuterAlt(localctx, 21)
+ self.state = 2243
+ self.arrayCreationExpression()
+ self.state = 2244
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2246
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2245
+ self.typeArguments()
+
+ self.state = 2248
+ self.match(Java20Parser.Identifier)
+ self.state = 2250
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 259, self._ctx)
+ if la_ == 1:
+ self.state = 2249
+ self.pNNA()
+
+ pass
+
+ elif la_ == 22:
+ self.enterOuterAlt(localctx, 22)
+ self.state = 2252
+ self.referenceType()
+ self.state = 2253
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2255
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2254
+ self.typeArguments()
+
+ self.state = 2257
+ self.match(Java20Parser.Identifier)
+ self.state = 2259
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 261, self._ctx)
+ if la_ == 1:
+ self.state = 2258
+ self.pNNA()
+
+ pass
+
+ elif la_ == 23:
+ self.enterOuterAlt(localctx, 23)
+ self.state = 2261
+ self.match(Java20Parser.SUPER)
+ self.state = 2262
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2264
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2263
+ self.typeArguments()
+
+ self.state = 2266
+ self.match(Java20Parser.Identifier)
+ self.state = 2268
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 263, self._ctx)
+ if la_ == 1:
+ self.state = 2267
+ self.pNNA()
+
+ pass
+
+ elif la_ == 24:
+ self.enterOuterAlt(localctx, 24)
+ self.state = 2270
+ self.typeName()
+ self.state = 2271
+ self.match(Java20Parser.DOT)
+ self.state = 2272
+ self.match(Java20Parser.SUPER)
+ self.state = 2273
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2275
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2274
+ self.typeArguments()
+
+ self.state = 2277
+ self.match(Java20Parser.Identifier)
+ self.state = 2279
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 265, self._ctx)
+ if la_ == 1:
+ self.state = 2278
+ self.pNNA()
+
+ pass
+
+ elif la_ == 25:
+ self.enterOuterAlt(localctx, 25)
+ self.state = 2281
+ self.classType()
+ self.state = 2282
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2284
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2283
+ self.typeArguments()
+
+ self.state = 2286
+ self.match(Java20Parser.NEW)
+ self.state = 2288
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 267, self._ctx)
+ if la_ == 1:
+ self.state = 2287
+ self.pNNA()
+
+ pass
+
+ elif la_ == 26:
+ self.enterOuterAlt(localctx, 26)
+ self.state = 2290
+ self.arrayType()
+ self.state = 2291
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2292
+ self.match(Java20Parser.NEW)
+ self.state = 2294
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 268, self._ctx)
+ if la_ == 1:
+ self.state = 2293
+ self.pNNA()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PNNAContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def pNNA(self):
+ return self.getTypedRuleContext(Java20Parser.PNNAContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pNNA
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPNNA"):
+ listener.enterPNNA(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPNNA"):
+ listener.exitPNNA(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPNNA"):
+ return visitor.visitPNNA(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pNNA(self):
+
+ localctx = Java20Parser.PNNAContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 394, self.RULE_pNNA)
+ self._la = 0 # Token type
+ try:
+ self.state = 2335
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 278, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2298
+ self.match(Java20Parser.DOT)
+ self.state = 2299
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2301
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 270, self._ctx)
+ if la_ == 1:
+ self.state = 2300
+ self.pNNA()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2303
+ self.match(Java20Parser.DOT)
+ self.state = 2304
+ self.match(Java20Parser.Identifier)
+ self.state = 2306
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 271, self._ctx)
+ if la_ == 1:
+ self.state = 2305
+ self.pNNA()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2308
+ self.match(Java20Parser.LBRACK)
+ self.state = 2309
+ self.expression()
+ self.state = 2310
+ self.match(Java20Parser.RBRACK)
+ self.state = 2312
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 272, self._ctx)
+ if la_ == 1:
+ self.state = 2311
+ self.pNNA()
+
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2314
+ self.match(Java20Parser.DOT)
+ self.state = 2316
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2315
+ self.typeArguments()
+
+ self.state = 2318
+ self.match(Java20Parser.Identifier)
+ self.state = 2319
+ self.match(Java20Parser.LPAREN)
+ self.state = 2321
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2320
+ self.argumentList()
+
+ self.state = 2323
+ self.match(Java20Parser.RPAREN)
+ self.state = 2325
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 275, self._ctx)
+ if la_ == 1:
+ self.state = 2324
+ self.pNNA()
+
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2327
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2328
+ self.typeArguments()
+
+ self.state = 2331
+ self.match(Java20Parser.Identifier)
+ self.state = 2333
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 277, self._ctx)
+ if la_ == 1:
+ self.state = 2332
+ self.pNNA()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassLiteralContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def CLASS(self):
+ return self.getToken(Java20Parser.CLASS, 0)
+
+ def LBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LBRACK)
+ else:
+ return self.getToken(Java20Parser.LBRACK, i)
+
+ def RBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.RBRACK)
+ else:
+ return self.getToken(Java20Parser.RBRACK, i)
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def VOID(self):
+ return self.getToken(Java20Parser.VOID, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classLiteral
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassLiteral"):
+ listener.enterClassLiteral(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassLiteral"):
+ listener.exitClassLiteral(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassLiteral"):
+ return visitor.visitClassLiteral(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classLiteral(self):
+
+ localctx = Java20Parser.ClassLiteralContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 396, self.RULE_classLiteral)
+ self._la = 0 # Token type
+ try:
+ self.state = 2372
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2337
+ self.typeName()
+ self.state = 2342
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2338
+ self.match(Java20Parser.LBRACK)
+ self.state = 2339
+ self.match(Java20Parser.RBRACK)
+ self.state = 2344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2345
+ self.match(Java20Parser.DOT)
+ self.state = 2346
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [22, 25, 31, 37, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2348
+ self.numericType()
+ self.state = 2353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2349
+ self.match(Java20Parser.LBRACK)
+ self.state = 2350
+ self.match(Java20Parser.RBRACK)
+ self.state = 2355
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2356
+ self.match(Java20Parser.DOT)
+ self.state = 2357
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2359
+ self.match(Java20Parser.BOOLEAN)
+ self.state = 2364
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2360
+ self.match(Java20Parser.LBRACK)
+ self.state = 2361
+ self.match(Java20Parser.RBRACK)
+ self.state = 2366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2367
+ self.match(Java20Parser.DOT)
+ self.state = 2368
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [65]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2369
+ self.match(Java20Parser.VOID)
+ self.state = 2370
+ self.match(Java20Parser.DOT)
+ self.state = 2371
+ self.match(Java20Parser.CLASS)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassInstanceCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classInstanceCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassInstanceCreationExpression"):
+ listener.enterClassInstanceCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassInstanceCreationExpression"):
+ listener.exitClassInstanceCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassInstanceCreationExpression"):
+ return visitor.visitClassInstanceCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classInstanceCreationExpression(self):
+
+ localctx = Java20Parser.ClassInstanceCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 398, self.RULE_classInstanceCreationExpression)
+ try:
+ self.state = 2383
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 283, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2374
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2375
+ self.expressionName()
+ self.state = 2376
+ self.match(Java20Parser.DOT)
+ self.state = 2377
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2379
+ self.primary()
+ self.state = 2380
+ self.match(Java20Parser.DOT)
+ self.state = 2381
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnqualifiedClassInstanceCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def classOrInterfaceTypeToInstantiate(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeToInstantiateContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unqualifiedClassInstanceCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnqualifiedClassInstanceCreationExpression"):
+ listener.enterUnqualifiedClassInstanceCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnqualifiedClassInstanceCreationExpression"):
+ listener.exitUnqualifiedClassInstanceCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnqualifiedClassInstanceCreationExpression"):
+ return visitor.visitUnqualifiedClassInstanceCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+
+ localctx = Java20Parser.UnqualifiedClassInstanceCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 400, self.RULE_unqualifiedClassInstanceCreationExpression)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2385
+ self.match(Java20Parser.NEW)
+ self.state = 2387
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2386
+ self.typeArguments()
+
+ self.state = 2389
+ self.classOrInterfaceTypeToInstantiate()
+ self.state = 2390
+ self.match(Java20Parser.LPAREN)
+ self.state = 2392
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2391
+ self.argumentList()
+
+ self.state = 2394
+ self.match(Java20Parser.RPAREN)
+ self.state = 2396
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 286, self._ctx)
+ if la_ == 1:
+ self.state = 2395
+ self.classBody()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassOrInterfaceTypeToInstantiateContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def typeArgumentsOrDiamond(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsOrDiamondContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classOrInterfaceTypeToInstantiate
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassOrInterfaceTypeToInstantiate"):
+ listener.enterClassOrInterfaceTypeToInstantiate(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassOrInterfaceTypeToInstantiate"):
+ listener.exitClassOrInterfaceTypeToInstantiate(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassOrInterfaceTypeToInstantiate"):
+ return visitor.visitClassOrInterfaceTypeToInstantiate(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classOrInterfaceTypeToInstantiate(self):
+
+ localctx = Java20Parser.ClassOrInterfaceTypeToInstantiateContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 402, self.RULE_classOrInterfaceTypeToInstantiate)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2398
+ self.annotation()
+ self.state = 2403
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2404
+ self.match(Java20Parser.Identifier)
+ self.state = 2415
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 2405
+ self.match(Java20Parser.DOT)
+ self.state = 2409
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2406
+ self.annotation()
+ self.state = 2411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2412
+ self.match(Java20Parser.Identifier)
+ self.state = 2417
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2419
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 4 or _la == 90:
+ self.state = 2418
+ self.typeArgumentsOrDiamond()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentsOrDiamondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def OACA(self):
+ return self.getToken(Java20Parser.OACA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgumentsOrDiamond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgumentsOrDiamond"):
+ listener.enterTypeArgumentsOrDiamond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgumentsOrDiamond"):
+ listener.exitTypeArgumentsOrDiamond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgumentsOrDiamond"):
+ return visitor.visitTypeArgumentsOrDiamond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgumentsOrDiamond(self):
+
+ localctx = Java20Parser.TypeArgumentsOrDiamondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 404, self.RULE_typeArgumentsOrDiamond)
+ try:
+ self.state = 2423
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [90]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2421
+ self.typeArguments()
+ pass
+ elif token in [4]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2422
+ self.match(Java20Parser.OACA)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def arrayCreationExpressionWithoutInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithoutInitializerContext, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpression"):
+ listener.enterArrayCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpression"):
+ listener.exitArrayCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpression"):
+ return visitor.visitArrayCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpression(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 406, self.RULE_arrayCreationExpression)
+ try:
+ self.state = 2427
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 292, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2425
+ self.arrayCreationExpressionWithoutInitializer()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2426
+ self.arrayCreationExpressionWithInitializer()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionWithoutInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dimExprs(self):
+ return self.getTypedRuleContext(Java20Parser.DimExprsContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpressionWithoutInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpressionWithoutInitializer"):
+ listener.enterArrayCreationExpressionWithoutInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpressionWithoutInitializer"):
+ listener.exitArrayCreationExpressionWithoutInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpressionWithoutInitializer"):
+ return visitor.visitArrayCreationExpressionWithoutInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpressionWithoutInitializer(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionWithoutInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 408, self.RULE_arrayCreationExpressionWithoutInitializer)
+ try:
+ self.state = 2441
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 295, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2429
+ self.match(Java20Parser.NEW)
+ self.state = 2430
+ self.primitiveType()
+ self.state = 2431
+ self.dimExprs()
+ self.state = 2433
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 293, self._ctx)
+ if la_ == 1:
+ self.state = 2432
+ self.dims()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2435
+ self.match(Java20Parser.NEW)
+ self.state = 2436
+ self.classType()
+ self.state = 2437
+ self.dimExprs()
+ self.state = 2439
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 294, self._ctx)
+ if la_ == 1:
+ self.state = 2438
+ self.dims()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionWithInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def arrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpressionWithInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpressionWithInitializer"):
+ listener.enterArrayCreationExpressionWithInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpressionWithInitializer"):
+ listener.exitArrayCreationExpressionWithInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpressionWithInitializer"):
+ return visitor.visitArrayCreationExpressionWithInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpressionWithInitializer(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionWithInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 410, self.RULE_arrayCreationExpressionWithInitializer)
+ try:
+ self.state = 2453
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 296, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2443
+ self.match(Java20Parser.NEW)
+ self.state = 2444
+ self.primitiveType()
+ self.state = 2445
+ self.dims()
+ self.state = 2446
+ self.arrayInitializer()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2448
+ self.match(Java20Parser.NEW)
+ self.state = 2449
+ self.classOrInterfaceType()
+ self.state = 2450
+ self.dims()
+ self.state = 2451
+ self.arrayInitializer()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimExprsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dimExpr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.DimExprContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.DimExprContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dimExprs
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDimExprs"):
+ listener.enterDimExprs(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDimExprs"):
+ listener.exitDimExprs(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDimExprs"):
+ return visitor.visitDimExprs(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dimExprs(self):
+
+ localctx = Java20Parser.DimExprsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 412, self.RULE_dimExprs)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2455
+ self.dimExpr()
+ self.state = 2459
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 2456
+ self.dimExpr()
+ self.state = 2461
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimExprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dimExpr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDimExpr"):
+ listener.enterDimExpr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDimExpr"):
+ listener.exitDimExpr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDimExpr"):
+ return visitor.visitDimExpr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dimExpr(self):
+
+ localctx = Java20Parser.DimExprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 414, self.RULE_dimExpr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2465
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2462
+ self.annotation()
+ self.state = 2467
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2468
+ self.match(Java20Parser.LBRACK)
+ self.state = 2469
+ self.expression()
+ self.state = 2470
+ self.match(Java20Parser.RBRACK)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def primaryNoNewArray(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayAccess"):
+ listener.enterArrayAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayAccess"):
+ listener.exitArrayAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayAccess"):
+ return visitor.visitArrayAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayAccess(self):
+
+ localctx = Java20Parser.ArrayAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 416, self.RULE_arrayAccess)
+ try:
+ self.state = 2487
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 299, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2472
+ self.expressionName()
+ self.state = 2473
+ self.match(Java20Parser.LBRACK)
+ self.state = 2474
+ self.expression()
+ self.state = 2475
+ self.match(Java20Parser.RBRACK)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2477
+ self.primaryNoNewArray()
+ self.state = 2478
+ self.match(Java20Parser.LBRACK)
+ self.state = 2479
+ self.expression()
+ self.state = 2480
+ self.match(Java20Parser.RBRACK)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2482
+ self.arrayCreationExpressionWithInitializer()
+ self.state = 2483
+ self.match(Java20Parser.LBRACK)
+ self.state = 2484
+ self.expression()
+ self.state = 2485
+ self.match(Java20Parser.RBRACK)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldAccess"):
+ listener.enterFieldAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldAccess"):
+ listener.exitFieldAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldAccess"):
+ return visitor.visitFieldAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldAccess(self):
+
+ localctx = Java20Parser.FieldAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 418, self.RULE_fieldAccess)
+ try:
+ self.state = 2502
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 300, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2489
+ self.primary()
+ self.state = 2490
+ self.match(Java20Parser.DOT)
+ self.state = 2491
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2493
+ self.match(Java20Parser.SUPER)
+ self.state = 2494
+ self.match(Java20Parser.DOT)
+ self.state = 2495
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2496
+ self.typeName()
+ self.state = 2497
+ self.match(Java20Parser.DOT)
+ self.state = 2498
+ self.match(Java20Parser.SUPER)
+ self.state = 2499
+ self.match(Java20Parser.DOT)
+ self.state = 2500
+ self.match(Java20Parser.Identifier)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodInvocationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodName(self):
+ return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodInvocation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodInvocation"):
+ listener.enterMethodInvocation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodInvocation"):
+ listener.exitMethodInvocation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodInvocation"):
+ return visitor.visitMethodInvocation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodInvocation(self):
+
+ localctx = Java20Parser.MethodInvocationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 420, self.RULE_methodInvocation)
+ self._la = 0 # Token type
+ try:
+ self.state = 2572
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 312, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2504
+ self.methodName()
+ self.state = 2505
+ self.match(Java20Parser.LPAREN)
+ self.state = 2507
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2506
+ self.argumentList()
+
+ self.state = 2509
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2511
+ self.typeName()
+ self.state = 2512
+ self.match(Java20Parser.DOT)
+ self.state = 2514
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2513
+ self.typeArguments()
+
+ self.state = 2516
+ self.match(Java20Parser.Identifier)
+ self.state = 2517
+ self.match(Java20Parser.LPAREN)
+ self.state = 2519
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2518
+ self.argumentList()
+
+ self.state = 2521
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2523
+ self.expressionName()
+ self.state = 2524
+ self.match(Java20Parser.DOT)
+ self.state = 2526
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2525
+ self.typeArguments()
+
+ self.state = 2528
+ self.match(Java20Parser.Identifier)
+ self.state = 2529
+ self.match(Java20Parser.LPAREN)
+ self.state = 2531
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2530
+ self.argumentList()
+
+ self.state = 2533
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2535
+ self.primary()
+ self.state = 2536
+ self.match(Java20Parser.DOT)
+ self.state = 2538
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2537
+ self.typeArguments()
+
+ self.state = 2540
+ self.match(Java20Parser.Identifier)
+ self.state = 2541
+ self.match(Java20Parser.LPAREN)
+ self.state = 2543
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2542
+ self.argumentList()
+
+ self.state = 2545
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2547
+ self.match(Java20Parser.SUPER)
+ self.state = 2548
+ self.match(Java20Parser.DOT)
+ self.state = 2550
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2549
+ self.typeArguments()
+
+ self.state = 2552
+ self.match(Java20Parser.Identifier)
+ self.state = 2553
+ self.match(Java20Parser.LPAREN)
+ self.state = 2555
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2554
+ self.argumentList()
+
+ self.state = 2557
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2558
+ self.typeName()
+ self.state = 2559
+ self.match(Java20Parser.DOT)
+ self.state = 2560
+ self.match(Java20Parser.SUPER)
+ self.state = 2561
+ self.match(Java20Parser.DOT)
+ self.state = 2563
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2562
+ self.typeArguments()
+
+ self.state = 2565
+ self.match(Java20Parser.Identifier)
+ self.state = 2566
+ self.match(Java20Parser.LPAREN)
+ self.state = 2568
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2567
+ self.argumentList()
+
+ self.state = 2570
+ self.match(Java20Parser.RPAREN)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArgumentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_argumentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArgumentList"):
+ listener.enterArgumentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArgumentList"):
+ listener.exitArgumentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArgumentList"):
+ return visitor.visitArgumentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def argumentList(self):
+
+ localctx = Java20Parser.ArgumentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 422, self.RULE_argumentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2574
+ self.expression()
+ self.state = 2579
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2575
+ self.match(Java20Parser.COMMA)
+ self.state = 2576
+ self.expression()
+ self.state = 2581
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodReferenceContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodReference
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodReference"):
+ listener.enterMethodReference(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodReference"):
+ listener.exitMethodReference(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodReference"):
+ return visitor.visitMethodReference(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodReference(self):
+
+ localctx = Java20Parser.MethodReferenceContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 424, self.RULE_methodReference)
+ self._la = 0 # Token type
+ try:
+ self.state = 2629
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 320, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2582
+ self.expressionName()
+ self.state = 2583
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2585
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2584
+ self.typeArguments()
+
+ self.state = 2587
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2589
+ self.primary()
+ self.state = 2590
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2592
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2591
+ self.typeArguments()
+
+ self.state = 2594
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2596
+ self.referenceType()
+ self.state = 2597
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2599
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2598
+ self.typeArguments()
+
+ self.state = 2601
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2603
+ self.match(Java20Parser.SUPER)
+ self.state = 2604
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2606
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2605
+ self.typeArguments()
+
+ self.state = 2608
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2609
+ self.typeName()
+ self.state = 2610
+ self.match(Java20Parser.DOT)
+ self.state = 2611
+ self.match(Java20Parser.SUPER)
+ self.state = 2612
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2614
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2613
+ self.typeArguments()
+
+ self.state = 2616
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2618
+ self.classType()
+ self.state = 2619
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2621
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2620
+ self.typeArguments()
+
+ self.state = 2623
+ self.match(Java20Parser.NEW)
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 2625
+ self.arrayType()
+ self.state = 2626
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2627
+ self.match(Java20Parser.NEW)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostfixExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def pfE(self):
+ return self.getTypedRuleContext(Java20Parser.PfEContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postfixExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostfixExpression"):
+ listener.enterPostfixExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostfixExpression"):
+ listener.exitPostfixExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostfixExpression"):
+ return visitor.visitPostfixExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postfixExpression(self):
+
+ localctx = Java20Parser.PostfixExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 426, self.RULE_postfixExpression)
+ try:
+ self.state = 2639
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 323, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2631
+ self.primary()
+ self.state = 2633
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 321, self._ctx)
+ if la_ == 1:
+ self.state = 2632
+ self.pfE()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2635
+ self.expressionName()
+ self.state = 2637
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 322, self._ctx)
+ if la_ == 1:
+ self.state = 2636
+ self.pfE()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PfEContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def pfE(self):
+ return self.getTypedRuleContext(Java20Parser.PfEContext, 0)
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pfE
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPfE"):
+ listener.enterPfE(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPfE"):
+ listener.exitPfE(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPfE"):
+ return visitor.visitPfE(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pfE(self):
+
+ localctx = Java20Parser.PfEContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 428, self.RULE_pfE)
+ try:
+ self.state = 2649
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [102]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2641
+ self.match(Java20Parser.INC)
+ self.state = 2643
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 324, self._ctx)
+ if la_ == 1:
+ self.state = 2642
+ self.pfE()
+
+ pass
+ elif token in [103]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2645
+ self.match(Java20Parser.DEC)
+ self.state = 2647
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 325, self._ctx)
+ if la_ == 1:
+ self.state = 2646
+ self.pfE()
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostIncrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postIncrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostIncrementExpression"):
+ listener.enterPostIncrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostIncrementExpression"):
+ listener.exitPostIncrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostIncrementExpression"):
+ return visitor.visitPostIncrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postIncrementExpression(self):
+
+ localctx = Java20Parser.PostIncrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 430, self.RULE_postIncrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2651
+ self.postfixExpression()
+ self.state = 2652
+ self.match(Java20Parser.INC)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostDecrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postDecrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostDecrementExpression"):
+ listener.enterPostDecrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostDecrementExpression"):
+ listener.exitPostDecrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostDecrementExpression"):
+ return visitor.visitPostDecrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postDecrementExpression(self):
+
+ localctx = Java20Parser.PostDecrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 432, self.RULE_postDecrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2654
+ self.postfixExpression()
+ self.state = 2655
+ self.match(Java20Parser.DEC)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnaryExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def preIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0)
+
+ def preDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0)
+
+ def ADD(self):
+ return self.getToken(Java20Parser.ADD, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def SUB(self):
+ return self.getToken(Java20Parser.SUB, 0)
+
+ def unaryExpressionNotPlusMinus(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unaryExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnaryExpression"):
+ listener.enterUnaryExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnaryExpression"):
+ listener.exitUnaryExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnaryExpression"):
+ return visitor.visitUnaryExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unaryExpression(self):
+
+ localctx = Java20Parser.UnaryExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 434, self.RULE_unaryExpression)
+ try:
+ self.state = 2664
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [102]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2657
+ self.preIncrementExpression()
+ pass
+ elif token in [103]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2658
+ self.preDecrementExpression()
+ pass
+ elif token in [104]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2659
+ self.match(Java20Parser.ADD)
+ self.state = 2660
+ self.unaryExpression()
+ pass
+ elif token in [105]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2661
+ self.match(Java20Parser.SUB)
+ self.state = 2662
+ self.unaryExpression()
+ pass
+ elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91,
+ 92, 123]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2663
+ self.unaryExpressionNotPlusMinus()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PreIncrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_preIncrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPreIncrementExpression"):
+ listener.enterPreIncrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPreIncrementExpression"):
+ listener.exitPreIncrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPreIncrementExpression"):
+ return visitor.visitPreIncrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def preIncrementExpression(self):
+
+ localctx = Java20Parser.PreIncrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 436, self.RULE_preIncrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2666
+ self.match(Java20Parser.INC)
+ self.state = 2667
+ self.unaryExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PreDecrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_preDecrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPreDecrementExpression"):
+ listener.enterPreDecrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPreDecrementExpression"):
+ listener.exitPreDecrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPreDecrementExpression"):
+ return visitor.visitPreDecrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def preDecrementExpression(self):
+
+ localctx = Java20Parser.PreDecrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 438, self.RULE_preDecrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2669
+ self.match(Java20Parser.DEC)
+ self.state = 2670
+ self.unaryExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnaryExpressionNotPlusMinusContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def TILDE(self):
+ return self.getToken(Java20Parser.TILDE, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def BANG(self):
+ return self.getToken(Java20Parser.BANG, 0)
+
+ def castExpression(self):
+ return self.getTypedRuleContext(Java20Parser.CastExpressionContext, 0)
+
+ def switchExpression(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unaryExpressionNotPlusMinus
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnaryExpressionNotPlusMinus"):
+ listener.enterUnaryExpressionNotPlusMinus(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnaryExpressionNotPlusMinus"):
+ listener.exitUnaryExpressionNotPlusMinus(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnaryExpressionNotPlusMinus"):
+ return visitor.visitUnaryExpressionNotPlusMinus(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unaryExpressionNotPlusMinus(self):
+
+ localctx = Java20Parser.UnaryExpressionNotPlusMinusContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 440, self.RULE_unaryExpressionNotPlusMinus)
+ try:
+ self.state = 2679
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 328, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2672
+ self.postfixExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2673
+ self.match(Java20Parser.TILDE)
+ self.state = 2674
+ self.unaryExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2675
+ self.match(Java20Parser.BANG)
+ self.state = 2676
+ self.unaryExpression()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2677
+ self.castExpression()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2678
+ self.switchExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CastExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def unaryExpressionNotPlusMinus(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0)
+
+ def additionalBound(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i)
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_castExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCastExpression"):
+ listener.enterCastExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCastExpression"):
+ listener.exitCastExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCastExpression"):
+ return visitor.visitCastExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def castExpression(self):
+
+ localctx = Java20Parser.CastExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 442, self.RULE_castExpression)
+ self._la = 0 # Token type
+ try:
+ self.state = 2708
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 331, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2681
+ self.match(Java20Parser.LPAREN)
+ self.state = 2682
+ self.primitiveType()
+ self.state = 2683
+ self.match(Java20Parser.RPAREN)
+ self.state = 2684
+ self.unaryExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2686
+ self.match(Java20Parser.LPAREN)
+ self.state = 2687
+ self.referenceType()
+ self.state = 2691
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 2688
+ self.additionalBound()
+ self.state = 2693
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2694
+ self.match(Java20Parser.RPAREN)
+ self.state = 2695
+ self.unaryExpressionNotPlusMinus()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2697
+ self.match(Java20Parser.LPAREN)
+ self.state = 2698
+ self.referenceType()
+ self.state = 2702
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 2699
+ self.additionalBound()
+ self.state = 2704
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2705
+ self.match(Java20Parser.RPAREN)
+ self.state = 2706
+ self.lambdaExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MultiplicativeExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def multiplicativeExpression(self):
+ return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def DIV(self):
+ return self.getToken(Java20Parser.DIV, 0)
+
+ def MOD(self):
+ return self.getToken(Java20Parser.MOD, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_multiplicativeExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMultiplicativeExpression"):
+ listener.enterMultiplicativeExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMultiplicativeExpression"):
+ listener.exitMultiplicativeExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMultiplicativeExpression"):
+ return visitor.visitMultiplicativeExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def multiplicativeExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 444
+ self.enterRecursionRule(localctx, 444, self.RULE_multiplicativeExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2711
+ self.unaryExpression()
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2724
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 333, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2722
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 332, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2713
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2714
+ self.match(Java20Parser.MUL)
+ self.state = 2715
+ self.unaryExpression()
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2716
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2717
+ self.match(Java20Parser.DIV)
+ self.state = 2718
+ self.unaryExpression()
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2719
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2720
+ self.match(Java20Parser.MOD)
+ self.state = 2721
+ self.unaryExpression()
+ pass
+
+ self.state = 2726
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 333, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class AdditiveExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def multiplicativeExpression(self):
+ return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0)
+
+ def additiveExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0)
+
+ def ADD(self):
+ return self.getToken(Java20Parser.ADD, 0)
+
+ def SUB(self):
+ return self.getToken(Java20Parser.SUB, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_additiveExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAdditiveExpression"):
+ listener.enterAdditiveExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAdditiveExpression"):
+ listener.exitAdditiveExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAdditiveExpression"):
+ return visitor.visitAdditiveExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def additiveExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.AdditiveExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 446
+ self.enterRecursionRule(localctx, 446, self.RULE_additiveExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2728
+ self.multiplicativeExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2738
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 335, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2736
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 334, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression)
+ self.state = 2730
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2731
+ self.match(Java20Parser.ADD)
+ self.state = 2732
+ self.multiplicativeExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression)
+ self.state = 2733
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2734
+ self.match(Java20Parser.SUB)
+ self.state = 2735
+ self.multiplicativeExpression(0)
+ pass
+
+ self.state = 2740
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 335, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ShiftExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def additiveExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0)
+
+ def shiftExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0)
+
+ def LT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LT)
+ else:
+ return self.getToken(Java20Parser.LT, i)
+
+ def GT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.GT)
+ else:
+ return self.getToken(Java20Parser.GT, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_shiftExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterShiftExpression"):
+ listener.enterShiftExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitShiftExpression"):
+ listener.exitShiftExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitShiftExpression"):
+ return visitor.visitShiftExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def shiftExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ShiftExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 448
+ self.enterRecursionRule(localctx, 448, self.RULE_shiftExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2742
+ self.additiveExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2759
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 337, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2757
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 336, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2744
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2745
+ self.match(Java20Parser.LT)
+ self.state = 2746
+ self.match(Java20Parser.LT)
+ self.state = 2747
+ self.additiveExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2748
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2749
+ self.match(Java20Parser.GT)
+ self.state = 2750
+ self.match(Java20Parser.GT)
+ self.state = 2751
+ self.additiveExpression(0)
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2752
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2753
+ self.match(Java20Parser.GT)
+ self.state = 2754
+ self.match(Java20Parser.GT)
+ self.state = 2755
+ self.match(Java20Parser.GT)
+ self.state = 2756
+ self.additiveExpression(0)
+ pass
+
+ self.state = 2761
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 337, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class RelationalExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def shiftExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0)
+
+ def relationalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0)
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def LE(self):
+ return self.getToken(Java20Parser.LE, 0)
+
+ def GE(self):
+ return self.getToken(Java20Parser.GE, 0)
+
+ def INSTANCEOF(self):
+ return self.getToken(Java20Parser.INSTANCEOF, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Java20Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_relationalExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRelationalExpression"):
+ listener.enterRelationalExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRelationalExpression"):
+ listener.exitRelationalExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRelationalExpression"):
+ return visitor.visitRelationalExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def relationalExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.RelationalExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 450
+ self.enterRecursionRule(localctx, 450, self.RULE_relationalExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2763
+ self.shiftExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2785
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 340, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2783
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 339, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2765
+ if not self.precpred(self._ctx, 5):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+ self.state = 2766
+ self.match(Java20Parser.LT)
+ self.state = 2767
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2768
+ if not self.precpred(self._ctx, 4):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+ self.state = 2769
+ self.match(Java20Parser.GT)
+ self.state = 2770
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2771
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2772
+ self.match(Java20Parser.LE)
+ self.state = 2773
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 4:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2774
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2775
+ self.match(Java20Parser.GE)
+ self.state = 2776
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 5:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2777
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2778
+ self.match(Java20Parser.INSTANCEOF)
+ self.state = 2781
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 338, self._ctx)
+ if la_ == 1:
+ self.state = 2779
+ self.referenceType()
+ pass
+
+ elif la_ == 2:
+ self.state = 2780
+ self.pattern()
+ pass
+
+ pass
+
+ self.state = 2787
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 340, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class EqualityExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def relationalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0)
+
+ def equalityExpression(self):
+ return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0)
+
+ def EQUAL(self):
+ return self.getToken(Java20Parser.EQUAL, 0)
+
+ def NOTEQUAL(self):
+ return self.getToken(Java20Parser.NOTEQUAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_equalityExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEqualityExpression"):
+ listener.enterEqualityExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEqualityExpression"):
+ listener.exitEqualityExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEqualityExpression"):
+ return visitor.visitEqualityExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def equalityExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.EqualityExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 452
+ self.enterRecursionRule(localctx, 452, self.RULE_equalityExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2789
+ self.relationalExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2799
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 342, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2797
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 341, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression)
+ self.state = 2791
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2792
+ self.match(Java20Parser.EQUAL)
+ self.state = 2793
+ self.relationalExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression)
+ self.state = 2794
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2795
+ self.match(Java20Parser.NOTEQUAL)
+ self.state = 2796
+ self.relationalExpression(0)
+ pass
+
+ self.state = 2801
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 342, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class AndExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def equalityExpression(self):
+ return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0)
+
+ def andExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0)
+
+ def BITAND(self):
+ return self.getToken(Java20Parser.BITAND, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_andExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAndExpression"):
+ listener.enterAndExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAndExpression"):
+ listener.exitAndExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAndExpression"):
+ return visitor.visitAndExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def andExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.AndExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 454
+ self.enterRecursionRule(localctx, 454, self.RULE_andExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2803
+ self.equalityExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2810
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 343, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.AndExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_andExpression)
+ self.state = 2805
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2806
+ self.match(Java20Parser.BITAND)
+ self.state = 2807
+ self.equalityExpression(0)
+ self.state = 2812
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 343, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ExclusiveOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def andExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0)
+
+ def exclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0)
+
+ def CARET(self):
+ return self.getToken(Java20Parser.CARET, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exclusiveOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExclusiveOrExpression"):
+ listener.enterExclusiveOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExclusiveOrExpression"):
+ listener.exitExclusiveOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExclusiveOrExpression"):
+ return visitor.visitExclusiveOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exclusiveOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ExclusiveOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 456
+ self.enterRecursionRule(localctx, 456, self.RULE_exclusiveOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2814
+ self.andExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2821
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 344, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ExclusiveOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_exclusiveOrExpression)
+ self.state = 2816
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2817
+ self.match(Java20Parser.CARET)
+ self.state = 2818
+ self.andExpression(0)
+ self.state = 2823
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 344, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class InclusiveOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def exclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0)
+
+ def inclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0)
+
+ def BITOR(self):
+ return self.getToken(Java20Parser.BITOR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_inclusiveOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInclusiveOrExpression"):
+ listener.enterInclusiveOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInclusiveOrExpression"):
+ listener.exitInclusiveOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInclusiveOrExpression"):
+ return visitor.visitInclusiveOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def inclusiveOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.InclusiveOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 458
+ self.enterRecursionRule(localctx, 458, self.RULE_inclusiveOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2825
+ self.exclusiveOrExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2832
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 345, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.InclusiveOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_inclusiveOrExpression)
+ self.state = 2827
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2828
+ self.match(Java20Parser.BITOR)
+ self.state = 2829
+ self.exclusiveOrExpression(0)
+ self.state = 2834
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 345, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalAndExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def inclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0)
+
+ def conditionalAndExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0)
+
+ def AND(self):
+ return self.getToken(Java20Parser.AND, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalAndExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalAndExpression"):
+ listener.enterConditionalAndExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalAndExpression"):
+ listener.exitConditionalAndExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalAndExpression"):
+ return visitor.visitConditionalAndExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalAndExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ConditionalAndExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 460
+ self.enterRecursionRule(localctx, 460, self.RULE_conditionalAndExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2836
+ self.inclusiveOrExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2843
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 346, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ConditionalAndExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalAndExpression)
+ self.state = 2838
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2839
+ self.match(Java20Parser.AND)
+ self.state = 2840
+ self.inclusiveOrExpression(0)
+ self.state = 2845
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 346, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalAndExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0)
+
+ def conditionalOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0)
+
+ def OR(self):
+ return self.getToken(Java20Parser.OR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalOrExpression"):
+ listener.enterConditionalOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalOrExpression"):
+ listener.exitConditionalOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalOrExpression"):
+ return visitor.visitConditionalOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ConditionalOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 462
+ self.enterRecursionRule(localctx, 462, self.RULE_conditionalOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2847
+ self.conditionalAndExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2854
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 347, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ConditionalOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalOrExpression)
+ self.state = 2849
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2850
+ self.match(Java20Parser.OR)
+ self.state = 2851
+ self.conditionalAndExpression(0)
+ self.state = 2856
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 347, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0)
+
+ def QUESTION(self):
+ return self.getToken(Java20Parser.QUESTION, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalExpression"):
+ listener.enterConditionalExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalExpression"):
+ listener.exitConditionalExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalExpression"):
+ return visitor.visitConditionalExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalExpression(self):
+
+ localctx = Java20Parser.ConditionalExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 464, self.RULE_conditionalExpression)
+ try:
+ self.state = 2870
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 348, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2857
+ self.conditionalOrExpression(0)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2858
+ self.conditionalOrExpression(0)
+ self.state = 2859
+ self.match(Java20Parser.QUESTION)
+ self.state = 2860
+ self.expression()
+ self.state = 2861
+ self.match(Java20Parser.COLON)
+ self.state = 2862
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2864
+ self.conditionalOrExpression(0)
+ self.state = 2865
+ self.match(Java20Parser.QUESTION)
+ self.state = 2866
+ self.expression()
+ self.state = 2867
+ self.match(Java20Parser.COLON)
+ self.state = 2868
+ self.lambdaExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def assignment(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignmentExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignmentExpression"):
+ listener.enterAssignmentExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignmentExpression"):
+ listener.exitAssignmentExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignmentExpression"):
+ return visitor.visitAssignmentExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignmentExpression(self):
+
+ localctx = Java20Parser.AssignmentExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 466, self.RULE_assignmentExpression)
+ try:
+ self.state = 2874
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 349, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2872
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2873
+ self.assignment()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def leftHandSide(self):
+ return self.getTypedRuleContext(Java20Parser.LeftHandSideContext, 0)
+
+ def assignmentOperator(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentOperatorContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignment
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignment"):
+ listener.enterAssignment(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignment"):
+ listener.exitAssignment(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignment"):
+ return visitor.visitAssignment(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignment(self):
+
+ localctx = Java20Parser.AssignmentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 468, self.RULE_assignment)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2876
+ self.leftHandSide()
+ self.state = 2877
+ self.assignmentOperator()
+ self.state = 2878
+ self.expression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LeftHandSideContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def fieldAccess(self):
+ return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0)
+
+ def arrayAccess(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_leftHandSide
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLeftHandSide"):
+ listener.enterLeftHandSide(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLeftHandSide"):
+ listener.exitLeftHandSide(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLeftHandSide"):
+ return visitor.visitLeftHandSide(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def leftHandSide(self):
+
+ localctx = Java20Parser.LeftHandSideContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 470, self.RULE_leftHandSide)
+ try:
+ self.state = 2883
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 350, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2880
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(loc)
+ self.state = 2881
+ self.fieldAccess()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2882
+ self.arrayAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentOperatorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def MUL_ASSIGN(self):
+ return self.getToken(Java20Parser.MUL_ASSIGN, 0)
+
+ def DIV_ASSIGN(self):
+ return self.getToken(Java20Parser.DIV_ASSIGN, 0)
+
+ def MOD_ASSIGN(self):
+ return self.getToken(Java20Parser.MOD_ASSIGN, 0)
+
+ def ADD_ASSIGN(self):
+ return self.getToken(Java20Parser.ADD_ASSIGN, 0)
+
+ def SUB_ASSIGN(self):
+ return self.getToken(Java20Parser.SUB_ASSIGN, 0)
+
+ def LSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.LSHIFT_ASSIGN, 0)
+
+ def RSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.RSHIFT_ASSIGN, 0)
+
+ def URSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.URSHIFT_ASSIGN, 0)
+
+ def AND_ASSIGN(self):
+ return self.getToken(Java20Parser.AND_ASSIGN, 0)
+
+ def XOR_ASSIGN(self):
+ return self.getToken(Java20Parser.XOR_ASSIGN, 0)
+
+ def OR_ASSIGN(self):
+ return self.getToken(Java20Parser.OR_ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignmentOperator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignmentOperator"):
+ listener.enterAssignmentOperator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignmentOperator"):
+ listener.exitAssignmentOperator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignmentOperator"):
+ return visitor.visitAssignmentOperator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignmentOperator(self):
+
+ localctx = Java20Parser.AssignmentOperatorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 472, self.RULE_assignmentOperator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2885
+ _la = self._input.LA(1)
+ if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 34342961153) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameters(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParametersContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Java20Parser.ARROW, 0)
+
+ def lambdaBody(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaBodyContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaExpression"):
+ listener.enterLambdaExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaExpression"):
+ listener.exitLambdaExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaExpression"):
+ return visitor.visitLambdaExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaExpression(self):
+
+ localctx = Java20Parser.LambdaExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 474, self.RULE_lambdaExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2887
+ self.lambdaParameters()
+ self.state = 2888
+ self.match(Java20Parser.ARROW)
+ self.state = 2889
+ self.lambdaBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def lambdaParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterListContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameters"):
+ listener.enterLambdaParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameters"):
+ listener.exitLambdaParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameters"):
+ return visitor.visitLambdaParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameters(self):
+
+ localctx = Java20Parser.LambdaParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 476, self.RULE_lambdaParameters)
+ self._la = 0 # Token type
+ try:
+ self.state = 2897
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [76]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2891
+ self.match(Java20Parser.LPAREN)
+ self.state = 2893
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424709632) != 0) or _la == 86 or _la == 123:
+ self.state = 2892
+ self.lambdaParameterList()
+
+ self.state = 2895
+ self.match(Java20Parser.RPAREN)
+ pass
+ elif token in [123]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2896
+ self.match(Java20Parser.Identifier)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.LambdaParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameterList"):
+ listener.enterLambdaParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameterList"):
+ listener.exitLambdaParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameterList"):
+ return visitor.visitLambdaParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameterList(self):
+
+ localctx = Java20Parser.LambdaParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 478, self.RULE_lambdaParameterList)
+ self._la = 0 # Token type
+ try:
+ self.state = 2915
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 355, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2899
+ self.lambdaParameter()
+ self.state = 2904
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2900
+ self.match(Java20Parser.COMMA)
+ self.state = 2901
+ self.lambdaParameter()
+ self.state = 2906
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2907
+ self.match(Java20Parser.Identifier)
+ self.state = 2912
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2908
+ self.match(Java20Parser.COMMA)
+ self.state = 2909
+ self.match(Java20Parser.Identifier)
+ self.state = 2914
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameterType(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableArityParameter(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameter"):
+ listener.enterLambdaParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameter"):
+ listener.exitLambdaParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameter"):
+ return visitor.visitLambdaParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameter(self):
+
+ localctx = Java20Parser.LambdaParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 480, self.RULE_lambdaParameter)
+ self._la = 0 # Token type
+ try:
+ self.state = 2927
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 357, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2920
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 2917
+ self.variableModifier()
+ self.state = 2922
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2923
+ self.lambdaParameterType()
+ self.state = 2924
+ self.variableDeclaratorId()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2926
+ self.variableArityParameter()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VAR(self):
+ return self.getToken(Java20Parser.VAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameterType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameterType"):
+ listener.enterLambdaParameterType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameterType"):
+ listener.exitLambdaParameterType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameterType"):
+ return visitor.visitLambdaParameterType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameterType(self):
+
+ localctx = Java20Parser.LambdaParameterTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 482, self.RULE_lambdaParameterType)
+ try:
+ self.state = 2931
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2929
+ self.unannType()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2930
+ self.match(Java20Parser.VAR)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaBody"):
+ listener.enterLambdaBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaBody"):
+ listener.exitLambdaBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaBody"):
+ return visitor.visitLambdaBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaBody(self):
+
+ localctx = Java20Parser.LambdaBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 484, self.RULE_lambdaBody)
+ try:
+ self.state = 2935
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2933
+ self.expression()
+ pass
+ elif token in [78]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2934
+ self.block()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SWITCH(self):
+ return self.getToken(Java20Parser.SWITCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def switchBlock(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchExpression"):
+ listener.enterSwitchExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchExpression"):
+ listener.exitSwitchExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchExpression"):
+ return visitor.visitSwitchExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchExpression(self):
+
+ localctx = Java20Parser.SwitchExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 486, self.RULE_switchExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2937
+ self.match(Java20Parser.SWITCH)
+ self.state = 2938
+ self.match(Java20Parser.LPAREN)
+ self.state = 2939
+ self.expression()
+ self.state = 2940
+ self.match(Java20Parser.RPAREN)
+ self.state = 2941
+ self.switchBlock()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantExpression"):
+ listener.enterConstantExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantExpression"):
+ listener.exitConstantExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantExpression"):
+ return visitor.visitConstantExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantExpression(self):
+
+ localctx = Java20Parser.ConstantExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 488, self.RULE_constantExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2943
+ self.expression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
+ if self._predicates == None:
+ self._predicates = dict()
+ self._predicates[222] = self.multiplicativeExpression_sempred
+ self._predicates[223] = self.additiveExpression_sempred
+ self._predicates[224] = self.shiftExpression_sempred
+ self._predicates[225] = self.relationalExpression_sempred
+ self._predicates[226] = self.equalityExpression_sempred
+ self._predicates[227] = self.andExpression_sempred
+ self._predicates[228] = self.exclusiveOrExpression_sempred
+ self._predicates[229] = self.inclusiveOrExpression_sempred
+ self._predicates[230] = self.conditionalAndExpression_sempred
+ self._predicates[231] = self.conditionalOrExpression_sempred
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is None:
+ raise Exception("No predicate with index:" + str(ruleIndex))
+ else:
+ return pred(localctx, predIndex)
+
+ def multiplicativeExpression_sempred(self, localctx: MultiplicativeExpressionContext, predIndex: int):
+ if predIndex == 0:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 1:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 2:
+ return self.precpred(self._ctx, 1)
+
+ def additiveExpression_sempred(self, localctx: AdditiveExpressionContext, predIndex: int):
+ if predIndex == 3:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 4:
+ return self.precpred(self._ctx, 1)
+
+ def shiftExpression_sempred(self, localctx: ShiftExpressionContext, predIndex: int):
+ if predIndex == 5:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 6:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 7:
+ return self.precpred(self._ctx, 1)
+
+ def relationalExpression_sempred(self, localctx: RelationalExpressionContext, predIndex: int):
+ if predIndex == 8:
+ return self.precpred(self._ctx, 5)
+
+ if predIndex == 9:
+ return self.precpred(self._ctx, 4)
+
+ if predIndex == 10:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 11:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 12:
+ return self.precpred(self._ctx, 1)
+
+ def equalityExpression_sempred(self, localctx: EqualityExpressionContext, predIndex: int):
+ if predIndex == 13:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 14:
+ return self.precpred(self._ctx, 1)
+
+ def andExpression_sempred(self, localctx: AndExpressionContext, predIndex: int):
+ if predIndex == 15:
+ return self.precpred(self._ctx, 1)
+
+ def exclusiveOrExpression_sempred(self, localctx: ExclusiveOrExpressionContext, predIndex: int):
+ if predIndex == 16:
+ return self.precpred(self._ctx, 1)
+
+ def inclusiveOrExpression_sempred(self, localctx: InclusiveOrExpressionContext, predIndex: int):
+ if predIndex == 17:
+ return self.precpred(self._ctx, 1)
+
+ def conditionalAndExpression_sempred(self, localctx: ConditionalAndExpressionContext, predIndex: int):
+ if predIndex == 18:
+ return self.precpred(self._ctx, 1)
+
+ def conditionalOrExpression_sempred(self, localctx: ConditionalOrExpressionContext, predIndex: int):
+ if predIndex == 19:
+ return self.precpred(self._ctx, 1)
+
+
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
new file mode 100644
index 000000000..62eb96c77
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
@@ -0,0 +1,1240 @@
+# Generated from Java20Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+
+if "." in __name__:
+ from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+else:
+ from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+
+
+# This class defines a complete generic visitor for a parse tree produced by Java20Parser.
+
+class Java20ParserVisitor(ParseTreeVisitor):
+
+ # Visit a parse tree produced by Java20Parser#start_.
+ def visitStart_(self, ctx:Java20Parser.Start_Context):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#literal.
+ def visitLiteral(self, ctx:Java20Parser.LiteralContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeIdentifier.
+ def visitTypeIdentifier(self, ctx:Java20Parser.TypeIdentifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unqualifiedMethodIdentifier.
+ def visitUnqualifiedMethodIdentifier(self, ctx:Java20Parser.UnqualifiedMethodIdentifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primitiveType.
+ def visitPrimitiveType(self, ctx:Java20Parser.PrimitiveTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#numericType.
+ def visitNumericType(self, ctx:Java20Parser.NumericTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#integralType.
+ def visitIntegralType(self, ctx:Java20Parser.IntegralTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#floatingPointType.
+ def visitFloatingPointType(self, ctx:Java20Parser.FloatingPointTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#referenceType.
+ def visitReferenceType(self, ctx:Java20Parser.ReferenceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#coit.
+ def visitCoit(self, ctx:Java20Parser.CoitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classOrInterfaceType.
+ def visitClassOrInterfaceType(self, ctx:Java20Parser.ClassOrInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classType.
+ def visitClassType(self, ctx:Java20Parser.ClassTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceType.
+ def visitInterfaceType(self, ctx:Java20Parser.InterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeVariable.
+ def visitTypeVariable(self, ctx:Java20Parser.TypeVariableContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayType.
+ def visitArrayType(self, ctx:Java20Parser.ArrayTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dims.
+ def visitDims(self, ctx:Java20Parser.DimsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameter.
+ def visitTypeParameter(self, ctx:Java20Parser.TypeParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameterModifier.
+ def visitTypeParameterModifier(self, ctx:Java20Parser.TypeParameterModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeBound.
+ def visitTypeBound(self, ctx:Java20Parser.TypeBoundContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#additionalBound.
+ def visitAdditionalBound(self, ctx:Java20Parser.AdditionalBoundContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArguments.
+ def visitTypeArguments(self, ctx:Java20Parser.TypeArgumentsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgumentList.
+ def visitTypeArgumentList(self, ctx:Java20Parser.TypeArgumentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgument.
+ def visitTypeArgument(self, ctx:Java20Parser.TypeArgumentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#wildcard.
+ def visitWildcard(self, ctx:Java20Parser.WildcardContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#wildcardBounds.
+ def visitWildcardBounds(self, ctx:Java20Parser.WildcardBoundsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleName.
+ def visitModuleName(self, ctx:Java20Parser.ModuleNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageName.
+ def visitPackageName(self, ctx:Java20Parser.PackageNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeName.
+ def visitTypeName(self, ctx:Java20Parser.TypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageOrTypeName.
+ def visitPackageOrTypeName(self, ctx:Java20Parser.PackageOrTypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expressionName.
+ def visitExpressionName(self, ctx:Java20Parser.ExpressionNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodName.
+ def visitMethodName(self, ctx:Java20Parser.MethodNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ambiguousName.
+ def visitAmbiguousName(self, ctx:Java20Parser.AmbiguousNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#compilationUnit.
+ def visitCompilationUnit(self, ctx:Java20Parser.CompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ordinaryCompilationUnit.
+ def visitOrdinaryCompilationUnit(self, ctx:Java20Parser.OrdinaryCompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#modularCompilationUnit.
+ def visitModularCompilationUnit(self, ctx:Java20Parser.ModularCompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageDeclaration.
+ def visitPackageDeclaration(self, ctx:Java20Parser.PackageDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageModifier.
+ def visitPackageModifier(self, ctx:Java20Parser.PackageModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#importDeclaration.
+ def visitImportDeclaration(self, ctx:Java20Parser.ImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleTypeImportDeclaration.
+ def visitSingleTypeImportDeclaration(self, ctx:Java20Parser.SingleTypeImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeImportOnDemandDeclaration.
+ def visitTypeImportOnDemandDeclaration(self, ctx:Java20Parser.TypeImportOnDemandDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleStaticImportDeclaration.
+ def visitSingleStaticImportDeclaration(self, ctx:Java20Parser.SingleStaticImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#staticImportOnDemandDeclaration.
+ def visitStaticImportOnDemandDeclaration(self, ctx:Java20Parser.StaticImportOnDemandDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#topLevelClassOrInterfaceDeclaration.
+ def visitTopLevelClassOrInterfaceDeclaration(self, ctx:Java20Parser.TopLevelClassOrInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleDeclaration.
+ def visitModuleDeclaration(self, ctx:Java20Parser.ModuleDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleDirective.
+ def visitModuleDirective(self, ctx:Java20Parser.ModuleDirectiveContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#requiresModifier.
+ def visitRequiresModifier(self, ctx:Java20Parser.RequiresModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classDeclaration.
+ def visitClassDeclaration(self, ctx:Java20Parser.ClassDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalClassDeclaration.
+ def visitNormalClassDeclaration(self, ctx:Java20Parser.NormalClassDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classModifier.
+ def visitClassModifier(self, ctx:Java20Parser.ClassModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameters.
+ def visitTypeParameters(self, ctx:Java20Parser.TypeParametersContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameterList.
+ def visitTypeParameterList(self, ctx:Java20Parser.TypeParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classExtends.
+ def visitClassExtends(self, ctx:Java20Parser.ClassExtendsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classImplements.
+ def visitClassImplements(self, ctx:Java20Parser.ClassImplementsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceTypeList.
+ def visitInterfaceTypeList(self, ctx:Java20Parser.InterfaceTypeListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classPermits.
+ def visitClassPermits(self, ctx:Java20Parser.ClassPermitsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classBody.
+ def visitClassBody(self, ctx:Java20Parser.ClassBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classBodyDeclaration.
+ def visitClassBodyDeclaration(self, ctx:Java20Parser.ClassBodyDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classMemberDeclaration.
+ def visitClassMemberDeclaration(self, ctx:Java20Parser.ClassMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldDeclaration.
+ def visitFieldDeclaration(self, ctx:Java20Parser.FieldDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldModifier.
+ def visitFieldModifier(self, ctx:Java20Parser.FieldModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclaratorList.
+ def visitVariableDeclaratorList(self, ctx:Java20Parser.VariableDeclaratorListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclarator.
+ def visitVariableDeclarator(self, ctx:Java20Parser.VariableDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclaratorId.
+ def visitVariableDeclaratorId(self, ctx:Java20Parser.VariableDeclaratorIdContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableInitializer.
+ def visitVariableInitializer(self, ctx:Java20Parser.VariableInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannType.
+ def visitUnannType(self, ctx:Java20Parser.UnannTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannPrimitiveType.
+ def visitUnannPrimitiveType(self, ctx:Java20Parser.UnannPrimitiveTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannReferenceType.
+ def visitUnannReferenceType(self, ctx:Java20Parser.UnannReferenceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannClassOrInterfaceType.
+ def visitUnannClassOrInterfaceType(self, ctx:Java20Parser.UnannClassOrInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#uCOIT.
+ def visitUCOIT(self, ctx:Java20Parser.UCOITContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannClassType.
+ def visitUnannClassType(self, ctx:Java20Parser.UnannClassTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannInterfaceType.
+ def visitUnannInterfaceType(self, ctx:Java20Parser.UnannInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannTypeVariable.
+ def visitUnannTypeVariable(self, ctx:Java20Parser.UnannTypeVariableContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannArrayType.
+ def visitUnannArrayType(self, ctx:Java20Parser.UnannArrayTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodDeclaration.
+ def visitMethodDeclaration(self, ctx:Java20Parser.MethodDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodModifier.
+ def visitMethodModifier(self, ctx:Java20Parser.MethodModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodHeader.
+ def visitMethodHeader(self, ctx:Java20Parser.MethodHeaderContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#result.
+ def visitResult(self, ctx:Java20Parser.ResultContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodDeclarator.
+ def visitMethodDeclarator(self, ctx:Java20Parser.MethodDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#receiverParameter.
+ def visitReceiverParameter(self, ctx:Java20Parser.ReceiverParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#formalParameterList.
+ def visitFormalParameterList(self, ctx:Java20Parser.FormalParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#formalParameter.
+ def visitFormalParameter(self, ctx:Java20Parser.FormalParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableArityParameter.
+ def visitVariableArityParameter(self, ctx:Java20Parser.VariableArityParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableModifier.
+ def visitVariableModifier(self, ctx:Java20Parser.VariableModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#throwsT.
+ def visitThrowsT(self, ctx:Java20Parser.ThrowsTContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exceptionTypeList.
+ def visitExceptionTypeList(self, ctx:Java20Parser.ExceptionTypeListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exceptionType.
+ def visitExceptionType(self, ctx:Java20Parser.ExceptionTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodBody.
+ def visitMethodBody(self, ctx:Java20Parser.MethodBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#instanceInitializer.
+ def visitInstanceInitializer(self, ctx:Java20Parser.InstanceInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#staticInitializer.
+ def visitStaticInitializer(self, ctx:Java20Parser.StaticInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorDeclaration.
+ def visitConstructorDeclaration(self, ctx:Java20Parser.ConstructorDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorModifier.
+ def visitConstructorModifier(self, ctx:Java20Parser.ConstructorModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorDeclarator.
+ def visitConstructorDeclarator(self, ctx:Java20Parser.ConstructorDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#simpleTypeName.
+ def visitSimpleTypeName(self, ctx:Java20Parser.SimpleTypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorBody.
+ def visitConstructorBody(self, ctx:Java20Parser.ConstructorBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#explicitConstructorInvocation.
+ def visitExplicitConstructorInvocation(self, ctx:Java20Parser.ExplicitConstructorInvocationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumDeclaration.
+ def visitEnumDeclaration(self, ctx:Java20Parser.EnumDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumBody.
+ def visitEnumBody(self, ctx:Java20Parser.EnumBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstantList.
+ def visitEnumConstantList(self, ctx:Java20Parser.EnumConstantListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstant.
+ def visitEnumConstant(self, ctx:Java20Parser.EnumConstantContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstantModifier.
+ def visitEnumConstantModifier(self, ctx:Java20Parser.EnumConstantModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumBodyDeclarations.
+ def visitEnumBodyDeclarations(self, ctx:Java20Parser.EnumBodyDeclarationsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordDeclaration.
+ def visitRecordDeclaration(self, ctx:Java20Parser.RecordDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordHeader.
+ def visitRecordHeader(self, ctx:Java20Parser.RecordHeaderContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponentList.
+ def visitRecordComponentList(self, ctx:Java20Parser.RecordComponentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponent.
+ def visitRecordComponent(self, ctx:Java20Parser.RecordComponentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableArityRecordComponent.
+ def visitVariableArityRecordComponent(self, ctx:Java20Parser.VariableArityRecordComponentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponentModifier.
+ def visitRecordComponentModifier(self, ctx:Java20Parser.RecordComponentModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordBody.
+ def visitRecordBody(self, ctx:Java20Parser.RecordBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordBodyDeclaration.
+ def visitRecordBodyDeclaration(self, ctx:Java20Parser.RecordBodyDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#compactConstructorDeclaration.
+ def visitCompactConstructorDeclaration(self, ctx:Java20Parser.CompactConstructorDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceDeclaration.
+ def visitInterfaceDeclaration(self, ctx:Java20Parser.InterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalInterfaceDeclaration.
+ def visitNormalInterfaceDeclaration(self, ctx:Java20Parser.NormalInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceModifier.
+ def visitInterfaceModifier(self, ctx:Java20Parser.InterfaceModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceExtends.
+ def visitInterfaceExtends(self, ctx:Java20Parser.InterfaceExtendsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfacePermits.
+ def visitInterfacePermits(self, ctx:Java20Parser.InterfacePermitsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceBody.
+ def visitInterfaceBody(self, ctx:Java20Parser.InterfaceBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMemberDeclaration.
+ def visitInterfaceMemberDeclaration(self, ctx:Java20Parser.InterfaceMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantDeclaration.
+ def visitConstantDeclaration(self, ctx:Java20Parser.ConstantDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantModifier.
+ def visitConstantModifier(self, ctx:Java20Parser.ConstantModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMethodDeclaration.
+ def visitInterfaceMethodDeclaration(self, ctx:Java20Parser.InterfaceMethodDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMethodModifier.
+ def visitInterfaceMethodModifier(self, ctx:Java20Parser.InterfaceMethodModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceDeclaration.
+ def visitAnnotationInterfaceDeclaration(self, ctx:Java20Parser.AnnotationInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceBody.
+ def visitAnnotationInterfaceBody(self, ctx:Java20Parser.AnnotationInterfaceBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceMemberDeclaration.
+ def visitAnnotationInterfaceMemberDeclaration(self, ctx:Java20Parser.AnnotationInterfaceMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceElementDeclaration.
+ def visitAnnotationInterfaceElementDeclaration(self, ctx:Java20Parser.AnnotationInterfaceElementDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceElementModifier.
+ def visitAnnotationInterfaceElementModifier(self, ctx:Java20Parser.AnnotationInterfaceElementModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#defaultValue.
+ def visitDefaultValue(self, ctx:Java20Parser.DefaultValueContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotation.
+ def visitAnnotation(self, ctx:Java20Parser.AnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalAnnotation.
+ def visitNormalAnnotation(self, ctx:Java20Parser.NormalAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValuePairList.
+ def visitElementValuePairList(self, ctx:Java20Parser.ElementValuePairListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValuePair.
+ def visitElementValuePair(self, ctx:Java20Parser.ElementValuePairContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValue.
+ def visitElementValue(self, ctx:Java20Parser.ElementValueContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValueArrayInitializer.
+ def visitElementValueArrayInitializer(self, ctx:Java20Parser.ElementValueArrayInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValueList.
+ def visitElementValueList(self, ctx:Java20Parser.ElementValueListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#markerAnnotation.
+ def visitMarkerAnnotation(self, ctx:Java20Parser.MarkerAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleElementAnnotation.
+ def visitSingleElementAnnotation(self, ctx:Java20Parser.SingleElementAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayInitializer.
+ def visitArrayInitializer(self, ctx:Java20Parser.ArrayInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableInitializerList.
+ def visitVariableInitializerList(self, ctx:Java20Parser.VariableInitializerListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#block.
+ def visitBlock(self, ctx:Java20Parser.BlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#blockStatements.
+ def visitBlockStatements(self, ctx:Java20Parser.BlockStatementsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#blockStatement.
+ def visitBlockStatement(self, ctx:Java20Parser.BlockStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localClassOrInterfaceDeclaration.
+ def visitLocalClassOrInterfaceDeclaration(self, ctx:Java20Parser.LocalClassOrInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableDeclaration.
+ def visitLocalVariableDeclaration(self, ctx:Java20Parser.LocalVariableDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableType.
+ def visitLocalVariableType(self, ctx:Java20Parser.LocalVariableTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableDeclarationStatement.
+ def visitLocalVariableDeclarationStatement(self, ctx:Java20Parser.LocalVariableDeclarationStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statement.
+ def visitStatement(self, ctx:Java20Parser.StatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementNoShortIf.
+ def visitStatementNoShortIf(self, ctx:Java20Parser.StatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementWithoutTrailingSubstatement.
+ def visitStatementWithoutTrailingSubstatement(self, ctx:Java20Parser.StatementWithoutTrailingSubstatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#emptyStatement_.
+ def visitEmptyStatement_(self, ctx:Java20Parser.EmptyStatement_Context):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#labeledStatement.
+ def visitLabeledStatement(self, ctx:Java20Parser.LabeledStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#labeledStatementNoShortIf.
+ def visitLabeledStatementNoShortIf(self, ctx:Java20Parser.LabeledStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expressionStatement.
+ def visitExpressionStatement(self, ctx:Java20Parser.ExpressionStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementExpression.
+ def visitStatementExpression(self, ctx:Java20Parser.StatementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenStatement.
+ def visitIfThenStatement(self, ctx:Java20Parser.IfThenStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenElseStatement.
+ def visitIfThenElseStatement(self, ctx:Java20Parser.IfThenElseStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenElseStatementNoShortIf.
+ def visitIfThenElseStatementNoShortIf(self, ctx:Java20Parser.IfThenElseStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assertStatement.
+ def visitAssertStatement(self, ctx:Java20Parser.AssertStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchStatement.
+ def visitSwitchStatement(self, ctx:Java20Parser.SwitchStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchBlock.
+ def visitSwitchBlock(self, ctx:Java20Parser.SwitchBlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchRule.
+ def visitSwitchRule(self, ctx:Java20Parser.SwitchRuleContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchBlockStatementGroup.
+ def visitSwitchBlockStatementGroup(self, ctx:Java20Parser.SwitchBlockStatementGroupContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchLabel.
+ def visitSwitchLabel(self, ctx:Java20Parser.SwitchLabelContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#caseConstant.
+ def visitCaseConstant(self, ctx:Java20Parser.CaseConstantContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#whileStatement.
+ def visitWhileStatement(self, ctx:Java20Parser.WhileStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#whileStatementNoShortIf.
+ def visitWhileStatementNoShortIf(self, ctx:Java20Parser.WhileStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#doStatement.
+ def visitDoStatement(self, ctx:Java20Parser.DoStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forStatement.
+ def visitForStatement(self, ctx:Java20Parser.ForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forStatementNoShortIf.
+ def visitForStatementNoShortIf(self, ctx:Java20Parser.ForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#basicForStatement.
+ def visitBasicForStatement(self, ctx:Java20Parser.BasicForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#basicForStatementNoShortIf.
+ def visitBasicForStatementNoShortIf(self, ctx:Java20Parser.BasicForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forInit.
+ def visitForInit(self, ctx:Java20Parser.ForInitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forUpdate.
+ def visitForUpdate(self, ctx:Java20Parser.ForUpdateContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementExpressionList.
+ def visitStatementExpressionList(self, ctx:Java20Parser.StatementExpressionListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enhancedForStatement.
+ def visitEnhancedForStatement(self, ctx:Java20Parser.EnhancedForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enhancedForStatementNoShortIf.
+ def visitEnhancedForStatementNoShortIf(self, ctx:Java20Parser.EnhancedForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#breakStatement.
+ def visitBreakStatement(self, ctx:Java20Parser.BreakStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#continueStatement.
+ def visitContinueStatement(self, ctx:Java20Parser.ContinueStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#returnStatement.
+ def visitReturnStatement(self, ctx:Java20Parser.ReturnStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#throwStatement.
+ def visitThrowStatement(self, ctx:Java20Parser.ThrowStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#synchronizedStatement.
+ def visitSynchronizedStatement(self, ctx:Java20Parser.SynchronizedStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#tryStatement.
+ def visitTryStatement(self, ctx:Java20Parser.TryStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catches.
+ def visitCatches(self, ctx:Java20Parser.CatchesContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchClause.
+ def visitCatchClause(self, ctx:Java20Parser.CatchClauseContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchFormalParameter.
+ def visitCatchFormalParameter(self, ctx:Java20Parser.CatchFormalParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchType.
+ def visitCatchType(self, ctx:Java20Parser.CatchTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#finallyBlock.
+ def visitFinallyBlock(self, ctx:Java20Parser.FinallyBlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#tryWithResourcesStatement.
+ def visitTryWithResourcesStatement(self, ctx:Java20Parser.TryWithResourcesStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resourceSpecification.
+ def visitResourceSpecification(self, ctx:Java20Parser.ResourceSpecificationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resourceList.
+ def visitResourceList(self, ctx:Java20Parser.ResourceListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resource.
+ def visitResource(self, ctx:Java20Parser.ResourceContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableAccess.
+ def visitVariableAccess(self, ctx:Java20Parser.VariableAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#yieldStatement.
+ def visitYieldStatement(self, ctx:Java20Parser.YieldStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pattern.
+ def visitPattern(self, ctx:Java20Parser.PatternContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typePattern.
+ def visitTypePattern(self, ctx:Java20Parser.TypePatternContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expression.
+ def visitExpression(self, ctx:Java20Parser.ExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primary.
+ def visitPrimary(self, ctx:Java20Parser.PrimaryContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primaryNoNewArray.
+ def visitPrimaryNoNewArray(self, ctx:Java20Parser.PrimaryNoNewArrayContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pNNA.
+ def visitPNNA(self, ctx:Java20Parser.PNNAContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classLiteral.
+ def visitClassLiteral(self, ctx:Java20Parser.ClassLiteralContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classInstanceCreationExpression.
+ def visitClassInstanceCreationExpression(self, ctx:Java20Parser.ClassInstanceCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unqualifiedClassInstanceCreationExpression.
+ def visitUnqualifiedClassInstanceCreationExpression(self, ctx:Java20Parser.UnqualifiedClassInstanceCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classOrInterfaceTypeToInstantiate.
+ def visitClassOrInterfaceTypeToInstantiate(self, ctx:Java20Parser.ClassOrInterfaceTypeToInstantiateContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgumentsOrDiamond.
+ def visitTypeArgumentsOrDiamond(self, ctx:Java20Parser.TypeArgumentsOrDiamondContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpression.
+ def visitArrayCreationExpression(self, ctx:Java20Parser.ArrayCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithoutInitializer.
+ def visitArrayCreationExpressionWithoutInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithoutInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithInitializer.
+ def visitArrayCreationExpressionWithInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dimExprs.
+ def visitDimExprs(self, ctx:Java20Parser.DimExprsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dimExpr.
+ def visitDimExpr(self, ctx:Java20Parser.DimExprContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayAccess.
+ def visitArrayAccess(self, ctx:Java20Parser.ArrayAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldAccess.
+ def visitFieldAccess(self, ctx:Java20Parser.FieldAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodInvocation.
+ def visitMethodInvocation(self, ctx:Java20Parser.MethodInvocationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#argumentList.
+ def visitArgumentList(self, ctx:Java20Parser.ArgumentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodReference.
+ def visitMethodReference(self, ctx:Java20Parser.MethodReferenceContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postfixExpression.
+ def visitPostfixExpression(self, ctx:Java20Parser.PostfixExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pfE.
+ def visitPfE(self, ctx:Java20Parser.PfEContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postIncrementExpression.
+ def visitPostIncrementExpression(self, ctx:Java20Parser.PostIncrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postDecrementExpression.
+ def visitPostDecrementExpression(self, ctx:Java20Parser.PostDecrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unaryExpression.
+ def visitUnaryExpression(self, ctx:Java20Parser.UnaryExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#preIncrementExpression.
+ def visitPreIncrementExpression(self, ctx:Java20Parser.PreIncrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#preDecrementExpression.
+ def visitPreDecrementExpression(self, ctx:Java20Parser.PreDecrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unaryExpressionNotPlusMinus.
+ def visitUnaryExpressionNotPlusMinus(self, ctx:Java20Parser.UnaryExpressionNotPlusMinusContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#castExpression.
+ def visitCastExpression(self, ctx:Java20Parser.CastExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#multiplicativeExpression.
+ def visitMultiplicativeExpression(self, ctx:Java20Parser.MultiplicativeExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#additiveExpression.
+ def visitAdditiveExpression(self, ctx:Java20Parser.AdditiveExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#shiftExpression.
+ def visitShiftExpression(self, ctx:Java20Parser.ShiftExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#relationalExpression.
+ def visitRelationalExpression(self, ctx:Java20Parser.RelationalExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#equalityExpression.
+ def visitEqualityExpression(self, ctx:Java20Parser.EqualityExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#andExpression.
+ def visitAndExpression(self, ctx:Java20Parser.AndExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exclusiveOrExpression.
+ def visitExclusiveOrExpression(self, ctx:Java20Parser.ExclusiveOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#inclusiveOrExpression.
+ def visitInclusiveOrExpression(self, ctx:Java20Parser.InclusiveOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalAndExpression.
+ def visitConditionalAndExpression(self, ctx:Java20Parser.ConditionalAndExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalOrExpression.
+ def visitConditionalOrExpression(self, ctx:Java20Parser.ConditionalOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalExpression.
+ def visitConditionalExpression(self, ctx:Java20Parser.ConditionalExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignmentExpression.
+ def visitAssignmentExpression(self, ctx:Java20Parser.AssignmentExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignment.
+ def visitAssignment(self, ctx:Java20Parser.AssignmentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#leftHandSide.
+ def visitLeftHandSide(self, ctx:Java20Parser.LeftHandSideContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignmentOperator.
+ def visitAssignmentOperator(self, ctx:Java20Parser.AssignmentOperatorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaExpression.
+ def visitLambdaExpression(self, ctx:Java20Parser.LambdaExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameters.
+ def visitLambdaParameters(self, ctx:Java20Parser.LambdaParametersContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameterList.
+ def visitLambdaParameterList(self, ctx:Java20Parser.LambdaParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameter.
+ def visitLambdaParameter(self, ctx:Java20Parser.LambdaParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameterType.
+ def visitLambdaParameterType(self, ctx:Java20Parser.LambdaParameterTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaBody.
+ def visitLambdaBody(self, ctx:Java20Parser.LambdaBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchExpression.
+ def visitSwitchExpression(self, ctx:Java20Parser.SwitchExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantExpression.
+ def visitConstantExpression(self, ctx:Java20Parser.ConstantExpressionContext):
+ return self.visitChildren(ctx)
+
+
+
+del Java20Parser
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
new file mode 100644
index 000000000..5603da4fa
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
@@ -0,0 +1,791 @@
+# Generated from Python3Lexer.g4 by ANTLR 4.13.1
+from antlr4 import *
+from io import StringIO
+import sys
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+if "." in __name__:
+ from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase
+else:
+ from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase
+
+def serializedATN():
+ return [
+ 4,0,102,910,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
+ 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
+ 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,
+ 19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,
+ 26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,
+ 32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,
+ 39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,
+ 45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,
+ 52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,
+ 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,
+ 65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,
+ 71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,
+ 78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,
+ 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,
+ 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,
+ 97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,
+ 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,
+ 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,
+ 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,
+ 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,
+ 7,125,2,126,7,126,2,127,7,127,2,128,7,128,1,0,1,0,3,0,262,8,0,1,
+ 1,1,1,1,1,3,1,267,8,1,1,2,1,2,1,2,1,2,3,2,273,8,2,1,3,1,3,1,3,1,
+ 3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,
+ 6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,
+ 9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,
+ 1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14,
+ 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,
+ 1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,
+ 1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,
+ 1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23,
+ 1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,
+ 1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,
+ 1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,
+ 1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,
+ 1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,
+ 1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,
+ 1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,
+ 1,41,3,41,481,8,41,1,41,1,41,3,41,485,8,41,1,41,3,41,488,8,41,3,
+ 41,490,8,41,1,41,1,41,1,42,1,42,5,42,496,8,42,10,42,12,42,499,9,
+ 42,1,43,1,43,1,43,1,43,1,43,3,43,506,8,43,1,43,1,43,3,43,510,8,43,
+ 1,44,1,44,1,44,1,44,1,44,3,44,517,8,44,1,44,1,44,3,44,521,8,44,1,
+ 45,1,45,5,45,525,8,45,10,45,12,45,528,9,45,1,45,4,45,531,8,45,11,
+ 45,12,45,532,3,45,535,8,45,1,46,1,46,1,46,4,46,540,8,46,11,46,12,
+ 46,541,1,47,1,47,1,47,4,47,547,8,47,11,47,12,47,548,1,48,1,48,1,
+ 48,4,48,554,8,48,11,48,12,48,555,1,49,1,49,3,49,560,8,49,1,50,1,
+ 50,3,50,564,8,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1,
+ 53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,
+ 59,1,59,1,59,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,
+ 64,1,64,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,69,1,
+ 69,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,1,
+ 75,1,75,1,75,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,
+ 80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,1,
+ 84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,
+ 89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1,
+ 93,1,93,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,
+ 96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,3,98,700,8,98,1,98,1,98,1,
+ 99,1,99,1,100,1,100,1,100,5,100,709,8,100,10,100,12,100,712,9,100,
+ 1,100,1,100,1,100,1,100,5,100,718,8,100,10,100,12,100,721,9,100,
+ 1,100,3,100,724,8,100,1,101,1,101,1,101,1,101,1,101,5,101,731,8,
+ 101,10,101,12,101,734,9,101,1,101,1,101,1,101,1,101,1,101,1,101,
+ 1,101,1,101,5,101,744,8,101,10,101,12,101,747,9,101,1,101,1,101,
+ 1,101,3,101,752,8,101,1,102,1,102,3,102,756,8,102,1,103,1,103,1,
+ 104,1,104,1,104,1,104,3,104,764,8,104,1,105,1,105,1,106,1,106,1,
+ 107,1,107,1,108,1,108,1,109,1,109,1,110,3,110,777,8,110,1,110,1,
+ 110,1,110,1,110,3,110,783,8,110,1,111,1,111,3,111,787,8,111,1,111,
+ 1,111,1,112,4,112,792,8,112,11,112,12,112,793,1,113,1,113,4,113,
+ 798,8,113,11,113,12,113,799,1,114,1,114,3,114,804,8,114,1,114,4,
+ 114,807,8,114,11,114,12,114,808,1,115,1,115,1,115,5,115,814,8,115,
+ 10,115,12,115,817,9,115,1,115,1,115,1,115,1,115,5,115,823,8,115,
+ 10,115,12,115,826,9,115,1,115,3,115,829,8,115,1,116,1,116,1,116,
+ 1,116,1,116,5,116,836,8,116,10,116,12,116,839,9,116,1,116,1,116,
+ 1,116,1,116,1,116,1,116,1,116,1,116,5,116,849,8,116,10,116,12,116,
+ 852,9,116,1,116,1,116,1,116,3,116,857,8,116,1,117,1,117,3,117,861,
+ 8,117,1,118,3,118,864,8,118,1,119,3,119,867,8,119,1,120,3,120,870,
+ 8,120,1,121,1,121,1,121,1,122,4,122,876,8,122,11,122,12,122,877,
+ 1,123,1,123,5,123,882,8,123,10,123,12,123,885,9,123,1,124,1,124,
+ 3,124,889,8,124,1,124,3,124,892,8,124,1,124,1,124,3,124,896,8,124,
+ 1,125,1,125,1,126,1,126,1,127,1,127,3,127,904,8,127,1,128,1,128,
+ 1,128,3,128,909,8,128,4,732,745,837,850,0,129,1,3,3,4,5,5,7,6,9,
+ 7,11,8,13,9,15,10,17,11,19,12,21,13,23,14,25,15,27,16,29,17,31,18,
+ 33,19,35,20,37,21,39,22,41,23,43,24,45,25,47,26,49,27,51,28,53,29,
+ 55,30,57,31,59,32,61,33,63,34,65,35,67,36,69,37,71,38,73,39,75,40,
+ 77,41,79,42,81,43,83,44,85,45,87,46,89,47,91,48,93,49,95,50,97,51,
+ 99,52,101,53,103,54,105,55,107,56,109,57,111,58,113,59,115,60,117,
+ 61,119,62,121,63,123,64,125,65,127,66,129,67,131,68,133,69,135,70,
+ 137,71,139,72,141,73,143,74,145,75,147,76,149,77,151,78,153,79,155,
+ 80,157,81,159,82,161,83,163,84,165,85,167,86,169,87,171,88,173,89,
+ 175,90,177,91,179,92,181,93,183,94,185,95,187,96,189,97,191,98,193,
+ 99,195,100,197,101,199,102,201,0,203,0,205,0,207,0,209,0,211,0,213,
+ 0,215,0,217,0,219,0,221,0,223,0,225,0,227,0,229,0,231,0,233,0,235,
+ 0,237,0,239,0,241,0,243,0,245,0,247,0,249,0,251,0,253,0,255,0,257,
+ 0,1,0,27,6,0,70,70,82,82,85,85,102,102,114,114,117,117,2,0,70,70,
+ 102,102,2,0,82,82,114,114,2,0,66,66,98,98,2,0,79,79,111,111,2,0,
+ 88,88,120,120,2,0,74,74,106,106,4,0,10,10,12,13,39,39,92,92,4,0,
+ 10,10,12,13,34,34,92,92,1,0,92,92,1,0,49,57,1,0,48,57,1,0,48,55,
+ 3,0,48,57,65,70,97,102,1,0,48,49,2,0,69,69,101,101,2,0,43,43,45,
+ 45,5,0,0,9,11,12,14,38,40,91,93,127,5,0,0,9,11,12,14,33,35,91,93,
+ 127,2,0,0,91,93,127,1,0,0,127,2,0,9,9,32,32,2,0,10,10,12,13,4,0,
+ 6277,6278,8472,8472,8494,8494,12443,12444,4,0,183,183,903,903,4969,
+ 4977,6618,6618,663,0,65,90,95,95,97,122,170,170,181,181,186,186,
+ 192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,
+ 886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,
+ 1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,
+ 1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,
+ 1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,
+ 2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,
+ 2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,
+ 2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,
+ 2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,
+ 2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,
+ 2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,
+ 2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,
+ 2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,
+ 2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,
+ 2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,
+ 2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,
+ 3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,
+ 3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,
+ 3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,
+ 3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,
+ 3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,
+ 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,
+ 3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,
+ 3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,
+ 4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,
+ 4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,
+ 4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,
+ 4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,
+ 5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,
+ 5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,
+ 6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,
+ 6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,
+ 6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,
+ 7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,
+ 7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,
+ 8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,
+ 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,
+ 8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,
+ 8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,
+ 8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,
+ 8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,
+ 11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,
+ 11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,
+ 11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,
+ 12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,
+ 12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,
+ 42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,
+ 42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,
+ 42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,
+ 43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,
+ 43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,
+ 43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,
+ 43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,
+ 43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,
+ 43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,
+ 43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,
+ 63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,
+ 64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,
+ 64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,
+ 65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,
+ 65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,
+ 65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,
+ 66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,
+ 66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,
+ 66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,
+ 66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,
+ 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,
+ 67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,
+ 67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,
+ 67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,
+ 68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,
+ 68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,
+ 68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,
+ 69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,
+ 69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,
+ 69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,
+ 70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,
+ 70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,
+ 70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,
+ 70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,
+ 70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,
+ 71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,
+ 71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,
+ 71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,
+ 72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,
+ 72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,
+ 72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,
+ 72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,
+ 73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,
+ 73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,
+ 78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,
+ 92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,
+ 93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,
+ 100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,
+ 110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,
+ 110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,
+ 113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,
+ 119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,
+ 120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,
+ 120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,
+ 120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,
+ 120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,
+ 120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,
+ 123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,
+ 124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,
+ 125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,
+ 126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,
+ 126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,
+ 126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,
+ 126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,
+ 126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,
+ 126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,
+ 173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,
+ 195101,196608,201546,201552,205743,372,0,48,57,95,95,768,879,1155,
+ 1159,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1552,1562,
+ 1611,1641,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,1776,
+ 1785,1809,1809,1840,1866,1958,1968,1984,1993,2027,2035,2045,2045,
+ 2070,2073,2075,2083,2085,2087,2089,2093,2137,2139,2200,2207,2250,
+ 2273,2275,2307,2362,2364,2366,2383,2385,2391,2402,2403,2406,2415,
+ 2433,2435,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2530,
+ 2531,2534,2543,2558,2558,2561,2563,2620,2620,2622,2626,2631,2632,
+ 2635,2637,2641,2641,2662,2673,2677,2677,2689,2691,2748,2748,2750,
+ 2757,2759,2761,2763,2765,2786,2787,2790,2799,2810,2815,2817,2819,
+ 2876,2876,2878,2884,2887,2888,2891,2893,2901,2903,2914,2915,2918,
+ 2927,2946,2946,3006,3010,3014,3016,3018,3021,3031,3031,3046,3055,
+ 3072,3076,3132,3132,3134,3140,3142,3144,3146,3149,3157,3158,3170,
+ 3171,3174,3183,3201,3203,3260,3260,3262,3268,3270,3272,3274,3277,
+ 3285,3286,3298,3299,3302,3311,3315,3315,3328,3331,3387,3388,3390,
+ 3396,3398,3400,3402,3405,3415,3415,3426,3427,3430,3439,3457,3459,
+ 3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3633,
+ 3633,3636,3642,3655,3662,3664,3673,3761,3761,3764,3772,3784,3790,
+ 3792,3801,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,
+ 3903,3953,3972,3974,3975,3981,3991,3993,4028,4038,4038,4139,4158,
+ 4160,4169,4182,4185,4190,4192,4194,4196,4199,4205,4209,4212,4226,
+ 4237,4239,4253,4957,4959,5906,5909,5938,5940,5970,5971,6002,6003,
+ 6068,6099,6109,6109,6112,6121,6155,6157,6159,6169,6277,6278,6313,
+ 6313,6432,6443,6448,6459,6470,6479,6608,6617,6679,6683,6741,6750,
+ 6752,6780,6783,6793,6800,6809,6832,6845,6847,6862,6912,6916,6964,
+ 6980,6992,7001,7019,7027,7040,7042,7073,7085,7088,7097,7142,7155,
+ 7204,7223,7232,7241,7248,7257,7376,7378,7380,7400,7405,7405,7412,
+ 7412,7415,7417,7616,7679,8255,8256,8276,8276,8400,8412,8417,8417,
+ 8421,8432,11503,11505,11647,11647,11744,11775,12330,12335,12441,
+ 12442,42528,42537,42607,42607,42612,42621,42654,42655,42736,42737,
+ 43010,43010,43014,43014,43019,43019,43043,43047,43052,43052,43136,
+ 43137,43188,43205,43216,43225,43232,43249,43263,43273,43302,43309,
+ 43335,43347,43392,43395,43443,43456,43472,43481,43493,43493,43504,
+ 43513,43561,43574,43587,43587,43596,43597,43600,43609,43643,43645,
+ 43696,43696,43698,43700,43703,43704,43710,43711,43713,43713,43755,
+ 43759,43765,43766,44003,44010,44012,44013,44016,44025,64286,64286,
+ 65024,65039,65056,65071,65075,65076,65101,65103,65296,65305,65343,
+ 65343,66045,66045,66272,66272,66422,66426,66720,66729,68097,68099,
+ 68101,68102,68108,68111,68152,68154,68159,68159,68325,68326,68900,
+ 68903,68912,68921,69291,69292,69373,69375,69446,69456,69506,69509,
+ 69632,69634,69688,69702,69734,69744,69747,69748,69759,69762,69808,
+ 69818,69826,69826,69872,69881,69888,69890,69927,69940,69942,69951,
+ 69957,69958,70003,70003,70016,70018,70067,70080,70089,70092,70094,
+ 70105,70188,70199,70206,70206,70209,70209,70367,70378,70384,70393,
+ 70400,70403,70459,70460,70462,70468,70471,70472,70475,70477,70487,
+ 70487,70498,70499,70502,70508,70512,70516,70709,70726,70736,70745,
+ 70750,70750,70832,70851,70864,70873,71087,71093,71096,71104,71132,
+ 71133,71216,71232,71248,71257,71339,71351,71360,71369,71453,71467,
+ 71472,71481,71724,71738,71904,71913,71984,71989,71991,71992,71995,
+ 71998,72000,72000,72002,72003,72016,72025,72145,72151,72154,72160,
+ 72164,72164,72193,72202,72243,72249,72251,72254,72263,72263,72273,
+ 72283,72330,72345,72751,72758,72760,72767,72784,72793,72850,72871,
+ 72873,72886,73009,73014,73018,73018,73020,73021,73023,73029,73031,
+ 73031,73040,73049,73098,73102,73104,73105,73107,73111,73120,73129,
+ 73459,73462,73472,73473,73475,73475,73524,73530,73534,73538,73552,
+ 73561,78912,78912,78919,78933,92768,92777,92864,92873,92912,92916,
+ 92976,92982,93008,93017,94031,94031,94033,94087,94095,94098,94180,
+ 94180,94192,94193,113821,113822,118528,118573,118576,118598,119141,
+ 119145,119149,119154,119163,119170,119173,119179,119210,119213,119362,
+ 119364,120782,120831,121344,121398,121403,121452,121461,121461,121476,
+ 121476,121499,121503,121505,121519,122880,122886,122888,122904,122907,
+ 122913,122915,122916,122918,122922,123023,123023,123184,123190,123200,
+ 123209,123566,123566,123628,123641,124140,124153,125136,125142,125252,
+ 125258,125264,125273,130032,130041,917760,917999,942,0,1,1,0,0,0,
+ 0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,
+ 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,
+ 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,
+ 1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,
+ 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,
+ 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,
+ 1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,
+ 1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,
+ 1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,
+ 1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,
+ 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,
+ 0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,
+ 0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,
+ 131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,
+ 0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,
+ 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,
+ 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,
+ 0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,
+ 177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,
+ 0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,
+ 1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,1,261,1,0,0,0,3,266,1,0,0,0,
+ 5,272,1,0,0,0,7,274,1,0,0,0,9,278,1,0,0,0,11,281,1,0,0,0,13,288,
+ 1,0,0,0,15,294,1,0,0,0,17,300,1,0,0,0,19,306,1,0,0,0,21,311,1,0,
+ 0,0,23,317,1,0,0,0,25,326,1,0,0,0,27,330,1,0,0,0,29,334,1,0,0,0,
+ 31,339,1,0,0,0,33,344,1,0,0,0,35,351,1,0,0,0,37,357,1,0,0,0,39,365,
+ 1,0,0,0,41,369,1,0,0,0,43,374,1,0,0,0,45,381,1,0,0,0,47,384,1,0,
+ 0,0,49,391,1,0,0,0,51,394,1,0,0,0,53,397,1,0,0,0,55,404,1,0,0,0,
+ 57,410,1,0,0,0,59,415,1,0,0,0,61,424,1,0,0,0,63,428,1,0,0,0,65,431,
+ 1,0,0,0,67,436,1,0,0,0,69,442,1,0,0,0,71,449,1,0,0,0,73,454,1,0,
+ 0,0,75,458,1,0,0,0,77,460,1,0,0,0,79,466,1,0,0,0,81,471,1,0,0,0,
+ 83,489,1,0,0,0,85,493,1,0,0,0,87,505,1,0,0,0,89,516,1,0,0,0,91,534,
+ 1,0,0,0,93,536,1,0,0,0,95,543,1,0,0,0,97,550,1,0,0,0,99,559,1,0,
+ 0,0,101,563,1,0,0,0,103,567,1,0,0,0,105,569,1,0,0,0,107,573,1,0,
+ 0,0,109,575,1,0,0,0,111,578,1,0,0,0,113,581,1,0,0,0,115,583,1,0,
+ 0,0,117,585,1,0,0,0,119,587,1,0,0,0,121,590,1,0,0,0,123,592,1,0,
+ 0,0,125,595,1,0,0,0,127,598,1,0,0,0,129,600,1,0,0,0,131,602,1,0,
+ 0,0,133,604,1,0,0,0,135,607,1,0,0,0,137,610,1,0,0,0,139,612,1,0,
+ 0,0,141,614,1,0,0,0,143,616,1,0,0,0,145,618,1,0,0,0,147,621,1,0,
+ 0,0,149,623,1,0,0,0,151,626,1,0,0,0,153,629,1,0,0,0,155,631,1,0,
+ 0,0,157,633,1,0,0,0,159,636,1,0,0,0,161,639,1,0,0,0,163,642,1,0,
+ 0,0,165,645,1,0,0,0,167,648,1,0,0,0,169,650,1,0,0,0,171,653,1,0,
+ 0,0,173,656,1,0,0,0,175,659,1,0,0,0,177,662,1,0,0,0,179,665,1,0,
+ 0,0,181,668,1,0,0,0,183,671,1,0,0,0,185,674,1,0,0,0,187,677,1,0,
+ 0,0,189,680,1,0,0,0,191,684,1,0,0,0,193,688,1,0,0,0,195,692,1,0,
+ 0,0,197,699,1,0,0,0,199,703,1,0,0,0,201,723,1,0,0,0,203,751,1,0,
+ 0,0,205,755,1,0,0,0,207,757,1,0,0,0,209,763,1,0,0,0,211,765,1,0,
+ 0,0,213,767,1,0,0,0,215,769,1,0,0,0,217,771,1,0,0,0,219,773,1,0,
+ 0,0,221,782,1,0,0,0,223,786,1,0,0,0,225,791,1,0,0,0,227,795,1,0,
+ 0,0,229,801,1,0,0,0,231,828,1,0,0,0,233,856,1,0,0,0,235,860,1,0,
+ 0,0,237,863,1,0,0,0,239,866,1,0,0,0,241,869,1,0,0,0,243,871,1,0,
+ 0,0,245,875,1,0,0,0,247,879,1,0,0,0,249,886,1,0,0,0,251,897,1,0,
+ 0,0,253,899,1,0,0,0,255,903,1,0,0,0,257,908,1,0,0,0,259,262,3,87,
+ 43,0,260,262,3,89,44,0,261,259,1,0,0,0,261,260,1,0,0,0,262,2,1,0,
+ 0,0,263,267,3,5,2,0,264,267,3,99,49,0,265,267,3,101,50,0,266,263,
+ 1,0,0,0,266,264,1,0,0,0,266,265,1,0,0,0,267,4,1,0,0,0,268,273,3,
+ 91,45,0,269,273,3,93,46,0,270,273,3,95,47,0,271,273,3,97,48,0,272,
+ 268,1,0,0,0,272,269,1,0,0,0,272,270,1,0,0,0,272,271,1,0,0,0,273,
+ 6,1,0,0,0,274,275,5,97,0,0,275,276,5,110,0,0,276,277,5,100,0,0,277,
+ 8,1,0,0,0,278,279,5,97,0,0,279,280,5,115,0,0,280,10,1,0,0,0,281,
+ 282,5,97,0,0,282,283,5,115,0,0,283,284,5,115,0,0,284,285,5,101,0,
+ 0,285,286,5,114,0,0,286,287,5,116,0,0,287,12,1,0,0,0,288,289,5,97,
+ 0,0,289,290,5,115,0,0,290,291,5,121,0,0,291,292,5,110,0,0,292,293,
+ 5,99,0,0,293,14,1,0,0,0,294,295,5,97,0,0,295,296,5,119,0,0,296,297,
+ 5,97,0,0,297,298,5,105,0,0,298,299,5,116,0,0,299,16,1,0,0,0,300,
+ 301,5,98,0,0,301,302,5,114,0,0,302,303,5,101,0,0,303,304,5,97,0,
+ 0,304,305,5,107,0,0,305,18,1,0,0,0,306,307,5,99,0,0,307,308,5,97,
+ 0,0,308,309,5,115,0,0,309,310,5,101,0,0,310,20,1,0,0,0,311,312,5,
+ 99,0,0,312,313,5,108,0,0,313,314,5,97,0,0,314,315,5,115,0,0,315,
+ 316,5,115,0,0,316,22,1,0,0,0,317,318,5,99,0,0,318,319,5,111,0,0,
+ 319,320,5,110,0,0,320,321,5,116,0,0,321,322,5,105,0,0,322,323,5,
+ 110,0,0,323,324,5,117,0,0,324,325,5,101,0,0,325,24,1,0,0,0,326,327,
+ 5,100,0,0,327,328,5,101,0,0,328,329,5,102,0,0,329,26,1,0,0,0,330,
+ 331,5,100,0,0,331,332,5,101,0,0,332,333,5,108,0,0,333,28,1,0,0,0,
+ 334,335,5,101,0,0,335,336,5,108,0,0,336,337,5,105,0,0,337,338,5,
+ 102,0,0,338,30,1,0,0,0,339,340,5,101,0,0,340,341,5,108,0,0,341,342,
+ 5,115,0,0,342,343,5,101,0,0,343,32,1,0,0,0,344,345,5,101,0,0,345,
+ 346,5,120,0,0,346,347,5,99,0,0,347,348,5,101,0,0,348,349,5,112,0,
+ 0,349,350,5,116,0,0,350,34,1,0,0,0,351,352,5,70,0,0,352,353,5,97,
+ 0,0,353,354,5,108,0,0,354,355,5,115,0,0,355,356,5,101,0,0,356,36,
+ 1,0,0,0,357,358,5,102,0,0,358,359,5,105,0,0,359,360,5,110,0,0,360,
+ 361,5,97,0,0,361,362,5,108,0,0,362,363,5,108,0,0,363,364,5,121,0,
+ 0,364,38,1,0,0,0,365,366,5,102,0,0,366,367,5,111,0,0,367,368,5,114,
+ 0,0,368,40,1,0,0,0,369,370,5,102,0,0,370,371,5,114,0,0,371,372,5,
+ 111,0,0,372,373,5,109,0,0,373,42,1,0,0,0,374,375,5,103,0,0,375,376,
+ 5,108,0,0,376,377,5,111,0,0,377,378,5,98,0,0,378,379,5,97,0,0,379,
+ 380,5,108,0,0,380,44,1,0,0,0,381,382,5,105,0,0,382,383,5,102,0,0,
+ 383,46,1,0,0,0,384,385,5,105,0,0,385,386,5,109,0,0,386,387,5,112,
+ 0,0,387,388,5,111,0,0,388,389,5,114,0,0,389,390,5,116,0,0,390,48,
+ 1,0,0,0,391,392,5,105,0,0,392,393,5,110,0,0,393,50,1,0,0,0,394,395,
+ 5,105,0,0,395,396,5,115,0,0,396,52,1,0,0,0,397,398,5,108,0,0,398,
+ 399,5,97,0,0,399,400,5,109,0,0,400,401,5,98,0,0,401,402,5,100,0,
+ 0,402,403,5,97,0,0,403,54,1,0,0,0,404,405,5,109,0,0,405,406,5,97,
+ 0,0,406,407,5,116,0,0,407,408,5,99,0,0,408,409,5,104,0,0,409,56,
+ 1,0,0,0,410,411,5,78,0,0,411,412,5,111,0,0,412,413,5,110,0,0,413,
+ 414,5,101,0,0,414,58,1,0,0,0,415,416,5,110,0,0,416,417,5,111,0,0,
+ 417,418,5,110,0,0,418,419,5,108,0,0,419,420,5,111,0,0,420,421,5,
+ 99,0,0,421,422,5,97,0,0,422,423,5,108,0,0,423,60,1,0,0,0,424,425,
+ 5,110,0,0,425,426,5,111,0,0,426,427,5,116,0,0,427,62,1,0,0,0,428,
+ 429,5,111,0,0,429,430,5,114,0,0,430,64,1,0,0,0,431,432,5,112,0,0,
+ 432,433,5,97,0,0,433,434,5,115,0,0,434,435,5,115,0,0,435,66,1,0,
+ 0,0,436,437,5,114,0,0,437,438,5,97,0,0,438,439,5,105,0,0,439,440,
+ 5,115,0,0,440,441,5,101,0,0,441,68,1,0,0,0,442,443,5,114,0,0,443,
+ 444,5,101,0,0,444,445,5,116,0,0,445,446,5,117,0,0,446,447,5,114,
+ 0,0,447,448,5,110,0,0,448,70,1,0,0,0,449,450,5,84,0,0,450,451,5,
+ 114,0,0,451,452,5,117,0,0,452,453,5,101,0,0,453,72,1,0,0,0,454,455,
+ 5,116,0,0,455,456,5,114,0,0,456,457,5,121,0,0,457,74,1,0,0,0,458,
+ 459,5,95,0,0,459,76,1,0,0,0,460,461,5,119,0,0,461,462,5,104,0,0,
+ 462,463,5,105,0,0,463,464,5,108,0,0,464,465,5,101,0,0,465,78,1,0,
+ 0,0,466,467,5,119,0,0,467,468,5,105,0,0,468,469,5,116,0,0,469,470,
+ 5,104,0,0,470,80,1,0,0,0,471,472,5,121,0,0,472,473,5,105,0,0,473,
+ 474,5,101,0,0,474,475,5,108,0,0,475,476,5,100,0,0,476,82,1,0,0,0,
+ 477,478,4,41,0,0,478,490,3,245,122,0,479,481,5,13,0,0,480,479,1,
+ 0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,485,5,10,0,0,483,485,2,
+ 12,13,0,484,480,1,0,0,0,484,483,1,0,0,0,485,487,1,0,0,0,486,488,
+ 3,245,122,0,487,486,1,0,0,0,487,488,1,0,0,0,488,490,1,0,0,0,489,
+ 477,1,0,0,0,489,484,1,0,0,0,490,491,1,0,0,0,491,492,6,41,0,0,492,
+ 84,1,0,0,0,493,497,3,255,127,0,494,496,3,257,128,0,495,494,1,0,0,
+ 0,496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,86,1,0,0,0,
+ 499,497,1,0,0,0,500,506,7,0,0,0,501,502,7,1,0,0,502,506,7,2,0,0,
+ 503,504,7,2,0,0,504,506,7,1,0,0,505,500,1,0,0,0,505,501,1,0,0,0,
+ 505,503,1,0,0,0,505,506,1,0,0,0,506,509,1,0,0,0,507,510,3,201,100,
+ 0,508,510,3,203,101,0,509,507,1,0,0,0,509,508,1,0,0,0,510,88,1,0,
+ 0,0,511,517,7,3,0,0,512,513,7,3,0,0,513,517,7,2,0,0,514,515,7,2,
+ 0,0,515,517,7,3,0,0,516,511,1,0,0,0,516,512,1,0,0,0,516,514,1,0,
+ 0,0,517,520,1,0,0,0,518,521,3,231,115,0,519,521,3,233,116,0,520,
+ 518,1,0,0,0,520,519,1,0,0,0,521,90,1,0,0,0,522,526,3,211,105,0,523,
+ 525,3,213,106,0,524,523,1,0,0,0,525,528,1,0,0,0,526,524,1,0,0,0,
+ 526,527,1,0,0,0,527,535,1,0,0,0,528,526,1,0,0,0,529,531,5,48,0,0,
+ 530,529,1,0,0,0,531,532,1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0,
+ 533,535,1,0,0,0,534,522,1,0,0,0,534,530,1,0,0,0,535,92,1,0,0,0,536,
+ 537,5,48,0,0,537,539,7,4,0,0,538,540,3,215,107,0,539,538,1,0,0,0,
+ 540,541,1,0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,94,1,0,0,0,543,
+ 544,5,48,0,0,544,546,7,5,0,0,545,547,3,217,108,0,546,545,1,0,0,0,
+ 547,548,1,0,0,0,548,546,1,0,0,0,548,549,1,0,0,0,549,96,1,0,0,0,550,
+ 551,5,48,0,0,551,553,7,3,0,0,552,554,3,219,109,0,553,552,1,0,0,0,
+ 554,555,1,0,0,0,555,553,1,0,0,0,555,556,1,0,0,0,556,98,1,0,0,0,557,
+ 560,3,221,110,0,558,560,3,223,111,0,559,557,1,0,0,0,559,558,1,0,
+ 0,0,560,100,1,0,0,0,561,564,3,99,49,0,562,564,3,225,112,0,563,561,
+ 1,0,0,0,563,562,1,0,0,0,564,565,1,0,0,0,565,566,7,6,0,0,566,102,
+ 1,0,0,0,567,568,5,46,0,0,568,104,1,0,0,0,569,570,5,46,0,0,570,571,
+ 5,46,0,0,571,572,5,46,0,0,572,106,1,0,0,0,573,574,5,42,0,0,574,108,
+ 1,0,0,0,575,576,5,40,0,0,576,577,6,54,1,0,577,110,1,0,0,0,578,579,
+ 5,41,0,0,579,580,6,55,2,0,580,112,1,0,0,0,581,582,5,44,0,0,582,114,
+ 1,0,0,0,583,584,5,58,0,0,584,116,1,0,0,0,585,586,5,59,0,0,586,118,
+ 1,0,0,0,587,588,5,42,0,0,588,589,5,42,0,0,589,120,1,0,0,0,590,591,
+ 5,61,0,0,591,122,1,0,0,0,592,593,5,91,0,0,593,594,6,61,3,0,594,124,
+ 1,0,0,0,595,596,5,93,0,0,596,597,6,62,4,0,597,126,1,0,0,0,598,599,
+ 5,124,0,0,599,128,1,0,0,0,600,601,5,94,0,0,601,130,1,0,0,0,602,603,
+ 5,38,0,0,603,132,1,0,0,0,604,605,5,60,0,0,605,606,5,60,0,0,606,134,
+ 1,0,0,0,607,608,5,62,0,0,608,609,5,62,0,0,609,136,1,0,0,0,610,611,
+ 5,43,0,0,611,138,1,0,0,0,612,613,5,45,0,0,613,140,1,0,0,0,614,615,
+ 5,47,0,0,615,142,1,0,0,0,616,617,5,37,0,0,617,144,1,0,0,0,618,619,
+ 5,47,0,0,619,620,5,47,0,0,620,146,1,0,0,0,621,622,5,126,0,0,622,
+ 148,1,0,0,0,623,624,5,123,0,0,624,625,6,74,5,0,625,150,1,0,0,0,626,
+ 627,5,125,0,0,627,628,6,75,6,0,628,152,1,0,0,0,629,630,5,60,0,0,
+ 630,154,1,0,0,0,631,632,5,62,0,0,632,156,1,0,0,0,633,634,5,61,0,
+ 0,634,635,5,61,0,0,635,158,1,0,0,0,636,637,5,62,0,0,637,638,5,61,
+ 0,0,638,160,1,0,0,0,639,640,5,60,0,0,640,641,5,61,0,0,641,162,1,
+ 0,0,0,642,643,5,60,0,0,643,644,5,62,0,0,644,164,1,0,0,0,645,646,
+ 5,33,0,0,646,647,5,61,0,0,647,166,1,0,0,0,648,649,5,64,0,0,649,168,
+ 1,0,0,0,650,651,5,45,0,0,651,652,5,62,0,0,652,170,1,0,0,0,653,654,
+ 5,43,0,0,654,655,5,61,0,0,655,172,1,0,0,0,656,657,5,45,0,0,657,658,
+ 5,61,0,0,658,174,1,0,0,0,659,660,5,42,0,0,660,661,5,61,0,0,661,176,
+ 1,0,0,0,662,663,5,64,0,0,663,664,5,61,0,0,664,178,1,0,0,0,665,666,
+ 5,47,0,0,666,667,5,61,0,0,667,180,1,0,0,0,668,669,5,37,0,0,669,670,
+ 5,61,0,0,670,182,1,0,0,0,671,672,5,38,0,0,672,673,5,61,0,0,673,184,
+ 1,0,0,0,674,675,5,124,0,0,675,676,5,61,0,0,676,186,1,0,0,0,677,678,
+ 5,94,0,0,678,679,5,61,0,0,679,188,1,0,0,0,680,681,5,60,0,0,681,682,
+ 5,60,0,0,682,683,5,61,0,0,683,190,1,0,0,0,684,685,5,62,0,0,685,686,
+ 5,62,0,0,686,687,5,61,0,0,687,192,1,0,0,0,688,689,5,42,0,0,689,690,
+ 5,42,0,0,690,691,5,61,0,0,691,194,1,0,0,0,692,693,5,47,0,0,693,694,
+ 5,47,0,0,694,695,5,61,0,0,695,196,1,0,0,0,696,700,3,245,122,0,697,
+ 700,3,247,123,0,698,700,3,249,124,0,699,696,1,0,0,0,699,697,1,0,
+ 0,0,699,698,1,0,0,0,700,701,1,0,0,0,701,702,6,98,7,0,702,198,1,0,
+ 0,0,703,704,9,0,0,0,704,200,1,0,0,0,705,710,5,39,0,0,706,709,3,209,
+ 104,0,707,709,8,7,0,0,708,706,1,0,0,0,708,707,1,0,0,0,709,712,1,
+ 0,0,0,710,708,1,0,0,0,710,711,1,0,0,0,711,713,1,0,0,0,712,710,1,
+ 0,0,0,713,724,5,39,0,0,714,719,5,34,0,0,715,718,3,209,104,0,716,
+ 718,8,8,0,0,717,715,1,0,0,0,717,716,1,0,0,0,718,721,1,0,0,0,719,
+ 717,1,0,0,0,719,720,1,0,0,0,720,722,1,0,0,0,721,719,1,0,0,0,722,
+ 724,5,34,0,0,723,705,1,0,0,0,723,714,1,0,0,0,724,202,1,0,0,0,725,
+ 726,5,39,0,0,726,727,5,39,0,0,727,728,5,39,0,0,728,732,1,0,0,0,729,
+ 731,3,205,102,0,730,729,1,0,0,0,731,734,1,0,0,0,732,733,1,0,0,0,
+ 732,730,1,0,0,0,733,735,1,0,0,0,734,732,1,0,0,0,735,736,5,39,0,0,
+ 736,737,5,39,0,0,737,752,5,39,0,0,738,739,5,34,0,0,739,740,5,34,
+ 0,0,740,741,5,34,0,0,741,745,1,0,0,0,742,744,3,205,102,0,743,742,
+ 1,0,0,0,744,747,1,0,0,0,745,746,1,0,0,0,745,743,1,0,0,0,746,748,
+ 1,0,0,0,747,745,1,0,0,0,748,749,5,34,0,0,749,750,5,34,0,0,750,752,
+ 5,34,0,0,751,725,1,0,0,0,751,738,1,0,0,0,752,204,1,0,0,0,753,756,
+ 3,207,103,0,754,756,3,209,104,0,755,753,1,0,0,0,755,754,1,0,0,0,
+ 756,206,1,0,0,0,757,758,8,9,0,0,758,208,1,0,0,0,759,760,5,92,0,0,
+ 760,764,9,0,0,0,761,762,5,92,0,0,762,764,3,83,41,0,763,759,1,0,0,
+ 0,763,761,1,0,0,0,764,210,1,0,0,0,765,766,7,10,0,0,766,212,1,0,0,
+ 0,767,768,7,11,0,0,768,214,1,0,0,0,769,770,7,12,0,0,770,216,1,0,
+ 0,0,771,772,7,13,0,0,772,218,1,0,0,0,773,774,7,14,0,0,774,220,1,
+ 0,0,0,775,777,3,225,112,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778,
+ 1,0,0,0,778,783,3,227,113,0,779,780,3,225,112,0,780,781,5,46,0,0,
+ 781,783,1,0,0,0,782,776,1,0,0,0,782,779,1,0,0,0,783,222,1,0,0,0,
+ 784,787,3,225,112,0,785,787,3,221,110,0,786,784,1,0,0,0,786,785,
+ 1,0,0,0,787,788,1,0,0,0,788,789,3,229,114,0,789,224,1,0,0,0,790,
+ 792,3,213,106,0,791,790,1,0,0,0,792,793,1,0,0,0,793,791,1,0,0,0,
+ 793,794,1,0,0,0,794,226,1,0,0,0,795,797,5,46,0,0,796,798,3,213,106,
+ 0,797,796,1,0,0,0,798,799,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0,
+ 0,800,228,1,0,0,0,801,803,7,15,0,0,802,804,7,16,0,0,803,802,1,0,
+ 0,0,803,804,1,0,0,0,804,806,1,0,0,0,805,807,3,213,106,0,806,805,
+ 1,0,0,0,807,808,1,0,0,0,808,806,1,0,0,0,808,809,1,0,0,0,809,230,
+ 1,0,0,0,810,815,5,39,0,0,811,814,3,237,118,0,812,814,3,243,121,0,
+ 813,811,1,0,0,0,813,812,1,0,0,0,814,817,1,0,0,0,815,813,1,0,0,0,
+ 815,816,1,0,0,0,816,818,1,0,0,0,817,815,1,0,0,0,818,829,5,39,0,0,
+ 819,824,5,34,0,0,820,823,3,239,119,0,821,823,3,243,121,0,822,820,
+ 1,0,0,0,822,821,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825,
+ 1,0,0,0,825,827,1,0,0,0,826,824,1,0,0,0,827,829,5,34,0,0,828,810,
+ 1,0,0,0,828,819,1,0,0,0,829,232,1,0,0,0,830,831,5,39,0,0,831,832,
+ 5,39,0,0,832,833,5,39,0,0,833,837,1,0,0,0,834,836,3,235,117,0,835,
+ 834,1,0,0,0,836,839,1,0,0,0,837,838,1,0,0,0,837,835,1,0,0,0,838,
+ 840,1,0,0,0,839,837,1,0,0,0,840,841,5,39,0,0,841,842,5,39,0,0,842,
+ 857,5,39,0,0,843,844,5,34,0,0,844,845,5,34,0,0,845,846,5,34,0,0,
+ 846,850,1,0,0,0,847,849,3,235,117,0,848,847,1,0,0,0,849,852,1,0,
+ 0,0,850,851,1,0,0,0,850,848,1,0,0,0,851,853,1,0,0,0,852,850,1,0,
+ 0,0,853,854,5,34,0,0,854,855,5,34,0,0,855,857,5,34,0,0,856,830,1,
+ 0,0,0,856,843,1,0,0,0,857,234,1,0,0,0,858,861,3,241,120,0,859,861,
+ 3,243,121,0,860,858,1,0,0,0,860,859,1,0,0,0,861,236,1,0,0,0,862,
+ 864,7,17,0,0,863,862,1,0,0,0,864,238,1,0,0,0,865,867,7,18,0,0,866,
+ 865,1,0,0,0,867,240,1,0,0,0,868,870,7,19,0,0,869,868,1,0,0,0,870,
+ 242,1,0,0,0,871,872,5,92,0,0,872,873,7,20,0,0,873,244,1,0,0,0,874,
+ 876,7,21,0,0,875,874,1,0,0,0,876,877,1,0,0,0,877,875,1,0,0,0,877,
+ 878,1,0,0,0,878,246,1,0,0,0,879,883,5,35,0,0,880,882,8,22,0,0,881,
+ 880,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1,0,0,0,884,
+ 248,1,0,0,0,885,883,1,0,0,0,886,888,5,92,0,0,887,889,3,245,122,0,
+ 888,887,1,0,0,0,888,889,1,0,0,0,889,895,1,0,0,0,890,892,5,13,0,0,
+ 891,890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,896,5,10,0,0,
+ 894,896,2,12,13,0,895,891,1,0,0,0,895,894,1,0,0,0,896,250,1,0,0,
+ 0,897,898,7,23,0,0,898,252,1,0,0,0,899,900,7,24,0,0,900,254,1,0,
+ 0,0,901,904,7,25,0,0,902,904,3,251,125,0,903,901,1,0,0,0,903,902,
+ 1,0,0,0,904,256,1,0,0,0,905,909,3,255,127,0,906,909,7,26,0,0,907,
+ 909,3,253,126,0,908,905,1,0,0,0,908,906,1,0,0,0,908,907,1,0,0,0,
+ 909,258,1,0,0,0,58,0,261,266,272,480,484,487,489,497,505,509,516,
+ 520,526,532,534,541,548,555,559,563,699,708,710,717,719,723,732,
+ 745,751,755,763,776,782,786,793,799,803,808,813,815,822,824,828,
+ 837,850,856,860,863,866,869,877,883,888,891,895,903,908,8,1,41,0,
+ 1,54,1,1,55,2,1,61,3,1,62,4,1,74,5,1,75,6,6,0,0
+ ]
+
+class Python3Lexer(Python3LexerBase):
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
+
+ INDENT = 1
+ DEDENT = 2
+ STRING = 3
+ NUMBER = 4
+ INTEGER = 5
+ AND = 6
+ AS = 7
+ ASSERT = 8
+ ASYNC = 9
+ AWAIT = 10
+ BREAK = 11
+ CASE = 12
+ CLASS = 13
+ CONTINUE = 14
+ DEF = 15
+ DEL = 16
+ ELIF = 17
+ ELSE = 18
+ EXCEPT = 19
+ FALSE = 20
+ FINALLY = 21
+ FOR = 22
+ FROM = 23
+ GLOBAL = 24
+ IF = 25
+ IMPORT = 26
+ IN = 27
+ IS = 28
+ LAMBDA = 29
+ MATCH = 30
+ NONE = 31
+ NONLOCAL = 32
+ NOT = 33
+ OR = 34
+ PASS = 35
+ RAISE = 36
+ RETURN = 37
+ TRUE = 38
+ TRY = 39
+ UNDERSCORE = 40
+ WHILE = 41
+ WITH = 42
+ YIELD = 43
+ NEWLINE = 44
+ NAME = 45
+ STRING_LITERAL = 46
+ BYTES_LITERAL = 47
+ DECIMAL_INTEGER = 48
+ OCT_INTEGER = 49
+ HEX_INTEGER = 50
+ BIN_INTEGER = 51
+ FLOAT_NUMBER = 52
+ IMAG_NUMBER = 53
+ DOT = 54
+ ELLIPSIS = 55
+ STAR = 56
+ OPEN_PAREN = 57
+ CLOSE_PAREN = 58
+ COMMA = 59
+ COLON = 60
+ SEMI_COLON = 61
+ POWER = 62
+ ASSIGN = 63
+ OPEN_BRACK = 64
+ CLOSE_BRACK = 65
+ OR_OP = 66
+ XOR = 67
+ AND_OP = 68
+ LEFT_SHIFT = 69
+ RIGHT_SHIFT = 70
+ ADD = 71
+ MINUS = 72
+ DIV = 73
+ MOD = 74
+ IDIV = 75
+ NOT_OP = 76
+ OPEN_BRACE = 77
+ CLOSE_BRACE = 78
+ LESS_THAN = 79
+ GREATER_THAN = 80
+ EQUALS = 81
+ GT_EQ = 82
+ LT_EQ = 83
+ NOT_EQ_1 = 84
+ NOT_EQ_2 = 85
+ AT = 86
+ ARROW = 87
+ ADD_ASSIGN = 88
+ SUB_ASSIGN = 89
+ MULT_ASSIGN = 90
+ AT_ASSIGN = 91
+ DIV_ASSIGN = 92
+ MOD_ASSIGN = 93
+ AND_ASSIGN = 94
+ OR_ASSIGN = 95
+ XOR_ASSIGN = 96
+ LEFT_SHIFT_ASSIGN = 97
+ RIGHT_SHIFT_ASSIGN = 98
+ POWER_ASSIGN = 99
+ IDIV_ASSIGN = 100
+ SKIP_ = 101
+ UNKNOWN_CHAR = 102
+
+ channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]
+
+ modeNames = [ "DEFAULT_MODE" ]
+
+ literalNames = [ "",
+ "'and'", "'as'", "'assert'", "'async'", "'await'", "'break'",
+ "'case'", "'class'", "'continue'", "'def'", "'del'", "'elif'",
+ "'else'", "'except'", "'False'", "'finally'", "'for'", "'from'",
+ "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'",
+ "'match'", "'None'", "'nonlocal'", "'not'", "'or'", "'pass'",
+ "'raise'", "'return'", "'True'", "'try'", "'_'", "'while'",
+ "'with'", "'yield'", "'.'", "'...'", "'*'", "'('", "')'", "','",
+ "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'", "'&'",
+ "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", "'//'", "'~'", "'{'",
+ "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'", "'!='",
+ "'@'", "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='",
+ "'&='", "'|='", "'^='", "'<<='", "'>>='", "'**='", "'//='" ]
+
+ symbolicNames = [ "",
+ "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "AND", "AS",
+ "ASSERT", "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE",
+ "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY",
+ "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE", "RETURN",
+ "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH", "YIELD", "NEWLINE",
+ "NAME", "STRING_LITERAL", "BYTES_LITERAL", "DECIMAL_INTEGER",
+ "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER",
+ "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
+ "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK",
+ "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT",
+ "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE",
+ "CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ",
+ "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN",
+ "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
+ "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_",
+ "UNKNOWN_CHAR" ]
+
+ ruleNames = [ "STRING", "NUMBER", "INTEGER", "AND", "AS", "ASSERT",
+ "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE",
+ "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY",
+ "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE",
+ "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH",
+ "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL",
+ "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER",
+ "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR",
+ "OPEN_PAREN", "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON",
+ "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP",
+ "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS",
+ "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE",
+ "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ",
+ "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
+ "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_",
+ "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM",
+ "LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT",
+ "DIGIT", "OCT_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT",
+ "EXPONENT_FLOAT", "INT_PART", "FRACTION", "EXPONENT",
+ "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE",
+ "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", "LONG_BYTES_CHAR",
+ "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING",
+ "UNICODE_OIDS", "UNICODE_OIDC", "ID_START", "ID_CONTINUE" ]
+
+ grammarFileName = "Python3Lexer.g4"
+
+ def __init__(self, input=None, output:TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
+ self._actions = None
+ self._predicates = None
+
+
+ def action(self, localctx:RuleContext, ruleIndex:int, actionIndex:int):
+ if self._actions is None:
+ actions = dict()
+ actions[41] = self.NEWLINE_action
+ actions[54] = self.OPEN_PAREN_action
+ actions[55] = self.CLOSE_PAREN_action
+ actions[61] = self.OPEN_BRACK_action
+ actions[62] = self.CLOSE_BRACK_action
+ actions[74] = self.OPEN_BRACE_action
+ actions[75] = self.CLOSE_BRACE_action
+ self._actions = actions
+ action = self._actions.get(ruleIndex, None)
+ if action is not None:
+ action(localctx, actionIndex)
+ else:
+ raise Exception("No registered action for:" + str(ruleIndex))
+
+
+ def NEWLINE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 0:
+ self.onNewLine();
+
+
+ def OPEN_PAREN_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 1:
+ self.openBrace();
+
+
+ def CLOSE_PAREN_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 2:
+ self.closeBrace();
+
+
+ def OPEN_BRACK_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 3:
+ self.openBrace();
+
+
+ def CLOSE_BRACK_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 4:
+ self.closeBrace();
+
+
+ def OPEN_BRACE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 5:
+ self.openBrace();
+
+
+ def CLOSE_BRACE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 6:
+ self.closeBrace();
+
+
+ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
+ if self._predicates is None:
+ preds = dict()
+ preds[41] = self.NEWLINE_sempred
+ self._predicates = preds
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is not None:
+ return pred(localctx, predIndex)
+ else:
+ raise Exception("No registered predicate for:" + str(ruleIndex))
+
+ def NEWLINE_sempred(self, localctx:RuleContext, predIndex:int):
+ if predIndex == 0:
+ return self.atStartOfInput()
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
new file mode 100644
index 000000000..d82bfbb78
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
@@ -0,0 +1,101 @@
+from typing import TextIO
+from antlr4 import *
+from antlr4.Token import CommonToken
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+
+import sys
+from typing import TextIO
+import re
+
+
+class Python3LexerBase(Lexer):
+ NEW_LINE_PATTERN = re.compile('[^\r\n\f]+')
+ SPACES_PATTERN = re.compile('[\r\n\f]+')
+
+ def __init__(self, input: InputStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.tokens = []
+ self.indents = []
+ self.opened = 0
+
+ def reset(self):
+ self.tokens = []
+ self.indents = []
+ self.opened = 0
+ super().reset()
+
+ def emitToken(self, token):
+ self._token = token
+ self.tokens.append(token)
+
+ def nextToken(self):
+ # Check if the end-of-file is ahead and there are still some DEDENTS expected.
+ if self._input.LA(1) == Python3Parser.EOF and len(self.indents) != 0:
+ # Remove any trailing EOF tokens from our buffer.
+ self.tokens = [token for token in self.tokens if token.type != Python3Parser.EOF]
+
+ # First emit an extra line break that serves as the end of the statement.
+ self.emitToken(self.commonToken(Python3Parser.NEWLINE, '\n'))
+
+ # Now emit as much DEDENT tokens as needed.
+ while len(self.indents) != 0:
+ self.emitToken(self.createDedent())
+ self.indents.pop()
+
+ # Put the EOF back on the token stream.
+ self.emitToken(self.commonToken(Python3Parser.EOF, ''))
+
+ next_ = super().nextToken()
+ return next_ if len(self.tokens) == 0 else self.tokens.pop(0)
+
+ def createDedent(self):
+ return self.commonToken(Python3Parser.DEDENT, '')
+
+ def commonToken(self, type_: int, text: str):
+ stop = self.getCharIndex() - 1
+ start = stop if text == '' else stop - len(text) + 1
+ return CommonToken(self._tokenFactorySourcePair, type_, Lexer.DEFAULT_TOKEN_CHANNEL, start, stop)
+
+ def getIndentationCount(self, whitespace: str):
+ count = 0
+ for c in whitespace:
+ if c == '\t':
+ count += 8 - count % 8
+ else:
+ count += 1
+ return count
+
+ def atStartOfInput(self):
+ return self.getCharIndex() == 0
+
+ def openBrace(self):
+ self.opened += 1
+
+ def closeBrace(self):
+ self.opened -= 1
+
+ def onNewLine(self):
+ new_line = self.NEW_LINE_PATTERN.sub('', self.text)
+ spaces = self.SPACES_PATTERN.sub('', self.text)
+
+ # Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to
+ # satisfy the final newline needed by the single_put rule used by the REPL.
+ next_ = self._input.LA(1)
+ next_next = self._input.LA(2)
+
+ if self.opened > 0 or (next_next != -1 and next_ in (10, 13, 35)):
+ self.skip()
+ else:
+ self.emitToken(self.commonToken(Python3Parser.NEWLINE, new_line))
+ indent = self.getIndentationCount(spaces)
+ previous = 0 if len(self.indents) == 0 else self.indents[-1]
+
+ if indent == previous:
+ self.skip()
+ elif indent > previous:
+ self.indents.append(indent)
+ self.emitToken(self.commonToken(Python3Parser.INDENT, spaces))
+ else:
+ while len(self.indents) > 0 and self.indents[-1] > indent:
+ self.emitToken(self.createDedent())
+ self.indents.pop()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
new file mode 100644
index 000000000..1f41fb8df
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
@@ -0,0 +1,52 @@
+from antlr4 import ParseTreeListener
+
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserListener import Python3ParserListener
+from dataclasses import dataclass
+
+
+@dataclass
+class MethodNode:
+ def __init__(self, line_start, line_end, source_code, name, ast_string):
+ self.line_start = line_start
+ self.line_end = line_end
+ self.source_code = source_code
+ self.name = name
+ self.ast_string = ast_string
+
+
+class MethodParserListener(Python3ParserListener):
+ def __init__(self, parser):
+ self.methods = []
+ self.parser = parser
+
+ def enterFuncdef(self, ctx: Python3Parser.FuncdefContext):
+ # Initialize the method name as None
+ method_name = None
+
+ # Iterate over the children of the context to find the method name
+ for child in ctx.children:
+ if isinstance(child, Python3Parser.NameContext):
+ method_name = child.getText()
+ break
+
+ # If method name is not found, set it to "Unknown"
+ if method_name is None:
+ method_name = "Unknown"
+
+ ast_string = ctx.toStringTree(recog=self.parser)
+
+ # Create a MethodNode for the method
+ method_node = MethodNode(
+ line_start=ctx.start.line,
+ line_end=ctx.stop.line,
+ source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop),
+ name=method_name,
+ ast_string=ast_string
+ )
+
+ self.methods.append(method_node)
+
+ def enterIdentifier(self, ctx):
+ if self.methods and self.methods[-1].name is None:
+ self.methods[-1].name = ctx.getText()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
new file mode 100644
index 000000000..d7aaf94de
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
@@ -0,0 +1,10288 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+# encoding: utf-8
+from antlr4 import *
+from io import StringIO
+import sys
+
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing import TextIO
+
+if "." in __name__:
+ from .Python3ParserBase import Python3ParserBase
+else:
+ from Python3ParserBase import Python3ParserBase
+
+
+def serializedATN():
+ return [
+ 4, 1, 102, 1435, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6,
+ 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7,
+ 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2,
+ 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7,
+ 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
+ 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7,
+ 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2,
+ 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7,
+ 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2,
+ 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
+ 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2,
+ 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7,
+ 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2,
+ 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7,
+ 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2,
+ 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103,
+ 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109,
+ 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114,
+ 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 3, 0, 244, 8, 0, 1, 1, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 1, 1, 1,
+ 2, 1, 2, 5, 2, 257, 8, 2, 10, 2, 12, 2, 260, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3,
+ 268, 8, 3, 1, 3, 3, 3, 271, 8, 3, 1, 3, 1, 3, 1, 4, 4, 4, 276, 8, 4, 11, 4, 12, 4, 277, 1,
+ 5, 1, 5, 1, 5, 1, 5, 3, 5, 284, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 294,
+ 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 301, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 308,
+ 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 314, 8, 9, 5, 9, 316, 8, 9, 10, 9, 12, 9, 319, 9, 9, 1,
+ 9, 1, 9, 1, 9, 3, 9, 324, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 330, 8, 9, 5, 9, 332, 8, 9, 10,
+ 9, 12, 9, 335, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 341, 8, 9, 3, 9, 343, 8, 9, 3, 9, 345, 8,
+ 9, 1, 9, 1, 9, 1, 9, 3, 9, 350, 8, 9, 3, 9, 352, 8, 9, 3, 9, 354, 8, 9, 1, 9, 1, 9, 3, 9, 358,
+ 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 364, 8, 9, 5, 9, 366, 8, 9, 10, 9, 12, 9, 369, 9, 9, 1,
+ 9, 1, 9, 1, 9, 1, 9, 3, 9, 375, 8, 9, 3, 9, 377, 8, 9, 3, 9, 379, 8, 9, 1, 9, 1, 9, 1, 9, 3,
+ 9, 384, 8, 9, 3, 9, 386, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 391, 8, 10, 1, 11, 1, 11, 1, 11,
+ 3, 11, 396, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 402, 8, 11, 5, 11, 404, 8, 11, 10,
+ 11, 12, 11, 407, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 412, 8, 11, 1, 11, 1, 11, 1, 11, 1,
+ 11, 3, 11, 418, 8, 11, 5, 11, 420, 8, 11, 10, 11, 12, 11, 423, 9, 11, 1, 11, 1, 11, 1,
+ 11, 1, 11, 3, 11, 429, 8, 11, 3, 11, 431, 8, 11, 3, 11, 433, 8, 11, 1, 11, 1, 11, 1, 11,
+ 3, 11, 438, 8, 11, 3, 11, 440, 8, 11, 3, 11, 442, 8, 11, 1, 11, 1, 11, 3, 11, 446, 8, 11,
+ 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 452, 8, 11, 5, 11, 454, 8, 11, 10, 11, 12, 11, 457,
+ 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 463, 8, 11, 3, 11, 465, 8, 11, 3, 11, 467, 8,
+ 11, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 3, 11, 474, 8, 11, 1, 12, 1, 12, 1, 13, 1, 13,
+ 3, 13, 480, 8, 13, 1, 14, 1, 14, 1, 14, 5, 14, 485, 8, 14, 10, 14, 12, 14, 488, 9, 14,
+ 1, 14, 3, 14, 491, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
+ 1, 15, 3, 15, 503, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16, 1,
+ 16, 1, 16, 3, 16, 515, 8, 16, 5, 16, 517, 8, 16, 10, 16, 12, 16, 520, 9, 16, 3, 16, 522,
+ 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 528, 8, 17, 1, 18, 1, 18, 3, 18, 532, 8, 18, 1,
+ 18, 1, 18, 1, 18, 3, 18, 537, 8, 18, 5, 18, 539, 8, 18, 10, 18, 12, 18, 542, 9, 18, 1,
+ 18, 3, 18, 545, 8, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1,
+ 22, 1, 22, 1, 22, 3, 22, 559, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 567,
+ 8, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 575, 8, 27, 3, 27, 577, 8, 27, 1,
+ 28, 1, 28, 3, 28, 581, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 5, 30, 588, 8, 30, 10,
+ 30, 12, 30, 591, 9, 30, 1, 30, 1, 30, 4, 30, 595, 8, 30, 11, 30, 12, 30, 596, 3, 30, 599,
+ 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 608, 8, 30, 1, 31, 1, 31,
+ 1, 31, 3, 31, 613, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 618, 8, 32, 1, 33, 1, 33, 1, 33, 5,
+ 33, 623, 8, 33, 10, 33, 12, 33, 626, 9, 33, 1, 33, 3, 33, 629, 8, 33, 1, 34, 1, 34, 1,
+ 34, 5, 34, 634, 8, 34, 10, 34, 12, 34, 637, 9, 34, 1, 35, 1, 35, 1, 35, 5, 35, 642, 8,
+ 35, 10, 35, 12, 35, 645, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 651, 8, 36, 10, 36,
+ 12, 36, 654, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 660, 8, 37, 10, 37, 12, 37, 663,
+ 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 669, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39,
+ 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 681, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40,
+ 687, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 698, 8,
+ 41, 10, 41, 12, 41, 701, 9, 41, 1, 41, 1, 41, 1, 41, 3, 41, 706, 8, 41, 1, 42, 1, 42, 1,
+ 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 715, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1,
+ 43, 1, 43, 1, 43, 1, 43, 3, 43, 726, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1,
+ 44, 4, 44, 735, 8, 44, 11, 44, 12, 44, 736, 1, 44, 1, 44, 1, 44, 3, 44, 742, 8, 44, 1,
+ 44, 1, 44, 1, 44, 3, 44, 747, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 752, 8, 44, 1, 45, 1, 45,
+ 1, 45, 1, 45, 5, 45, 758, 8, 45, 10, 45, 12, 45, 761, 9, 45, 1, 45, 1, 45, 1, 45, 1, 46,
+ 1, 46, 1, 46, 3, 46, 769, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 775, 8, 47, 3, 47, 777,
+ 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 4, 48, 783, 8, 48, 11, 48, 12, 48, 784, 1, 48, 1, 48,
+ 3, 48, 789, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 797, 8, 49, 11, 49,
+ 12, 49, 798, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 806, 8, 50, 1, 50, 3, 50, 809, 8,
+ 50, 1, 51, 1, 51, 4, 51, 813, 8, 51, 11, 51, 12, 51, 814, 1, 51, 3, 51, 818, 8, 51, 1,
+ 52, 1, 52, 1, 52, 3, 52, 823, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 828, 8, 53, 1, 53, 1, 53,
+ 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 838, 8, 55, 1, 56, 1, 56, 3, 56, 842, 8,
+ 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 851, 8, 58, 10, 58, 12, 58,
+ 854, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 864, 8, 59, 1,
+ 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 874, 8, 60, 1, 61, 1, 61, 1,
+ 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 884, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1,
+ 62, 1, 62, 1, 62, 1, 62, 3, 62, 894, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 899, 8, 63, 1, 64,
+ 1, 64, 1, 64, 3, 64, 904, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68,
+ 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 4, 71, 923, 8, 71, 11, 71,
+ 12, 71, 924, 1, 72, 1, 72, 3, 72, 929, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74,
+ 3, 74, 937, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 942, 8, 74, 1, 74, 3, 74, 945, 8, 74, 1,
+ 75, 1, 75, 1, 75, 3, 75, 950, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 955, 8, 76, 10, 76, 12,
+ 76, 958, 9, 76, 1, 76, 3, 76, 961, 8, 76, 1, 77, 1, 77, 3, 77, 965, 8, 77, 1, 78, 1, 78,
+ 1, 78, 1, 78, 3, 78, 971, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 978, 8, 79, 1,
+ 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 987, 8, 79, 1, 79, 1, 79, 1, 79, 1,
+ 79, 1, 79, 3, 79, 994, 8, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 5, 80,
+ 1003, 8, 80, 10, 80, 12, 80, 1006, 9, 80, 1, 81, 1, 81, 3, 81, 1010, 8, 81, 1, 81, 1,
+ 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3,
+ 83, 1026, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1034, 8, 83, 1, 83, 1,
+ 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1044, 8, 83, 1, 83, 1, 83, 3, 83, 1048,
+ 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1053, 8, 84, 10, 84, 12, 84, 1056, 9, 84, 1, 85, 1,
+ 85, 1, 85, 5, 85, 1061, 8, 85, 10, 85, 12, 85, 1064, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86,
+ 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1076, 8, 87, 1, 87, 3, 87, 1079, 8, 87,
+ 1, 88, 1, 88, 3, 88, 1083, 8, 88, 1, 89, 1, 89, 3, 89, 1087, 8, 89, 1, 89, 1, 89, 1, 89,
+ 1, 90, 1, 90, 3, 90, 1094, 8, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 5, 91, 1102,
+ 8, 91, 10, 91, 12, 91, 1105, 9, 91, 1, 92, 1, 92, 1, 92, 5, 92, 1110, 8, 92, 10, 92, 12,
+ 92, 1113, 9, 92, 1, 93, 1, 93, 1, 93, 3, 93, 1118, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5,
+ 94, 1124, 8, 94, 10, 94, 12, 94, 1127, 9, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95,
+ 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1142, 8, 95, 1, 96, 1, 96, 1, 96,
+ 1, 97, 1, 97, 1, 97, 4, 97, 1150, 8, 97, 11, 97, 12, 97, 1151, 1, 97, 3, 97, 1155, 8,
+ 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1,
+ 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1178, 8, 97, 10, 97,
+ 12, 97, 1181, 9, 97, 1, 98, 3, 98, 1184, 8, 98, 1, 98, 1, 98, 5, 98, 1188, 8, 98, 10,
+ 98, 12, 98, 1191, 9, 98, 1, 99, 1, 99, 1, 99, 3, 99, 1196, 8, 99, 1, 99, 1, 99, 1, 99,
+ 3, 99, 1201, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1206, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99,
+ 4, 99, 1212, 8, 99, 11, 99, 12, 99, 1213, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1220, 8,
+ 99, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1226, 8, 101, 1, 101, 1, 101, 1, 101, 1,
+ 101, 3, 101, 1232, 8, 101, 5, 101, 1234, 8, 101, 10, 101, 12, 101, 1237, 9, 101, 1,
+ 101, 3, 101, 1240, 8, 101, 3, 101, 1242, 8, 101, 1, 102, 1, 102, 3, 102, 1246, 8, 102,
+ 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1255, 8, 102, 1, 103,
+ 1, 103, 1, 103, 5, 103, 1260, 8, 103, 10, 103, 12, 103, 1263, 9, 103, 1, 103, 3, 103,
+ 1266, 8, 103, 1, 104, 1, 104, 3, 104, 1270, 8, 104, 1, 104, 1, 104, 3, 104, 1274, 8,
+ 104, 1, 104, 3, 104, 1277, 8, 104, 3, 104, 1279, 8, 104, 1, 105, 1, 105, 3, 105, 1283,
+ 8, 105, 1, 106, 1, 106, 3, 106, 1287, 8, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1292,
+ 8, 106, 5, 106, 1294, 8, 106, 10, 106, 12, 106, 1297, 9, 106, 1, 106, 3, 106, 1300,
+ 8, 106, 1, 107, 1, 107, 1, 107, 5, 107, 1305, 8, 107, 10, 107, 12, 107, 1308, 9, 107,
+ 1, 107, 3, 107, 1311, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108,
+ 1319, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108,
+ 1329, 8, 108, 5, 108, 1331, 8, 108, 10, 108, 12, 108, 1334, 9, 108, 1, 108, 3, 108,
+ 1337, 8, 108, 3, 108, 1339, 8, 108, 1, 108, 1, 108, 3, 108, 1343, 8, 108, 1, 108, 1,
+ 108, 1, 108, 1, 108, 3, 108, 1349, 8, 108, 5, 108, 1351, 8, 108, 10, 108, 12, 108,
+ 1354, 9, 108, 1, 108, 3, 108, 1357, 8, 108, 3, 108, 1359, 8, 108, 3, 108, 1361, 8,
+ 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1367, 8, 109, 1, 109, 3, 109, 1370, 8,
+ 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1378, 8, 110, 10, 110,
+ 12, 110, 1381, 9, 110, 1, 110, 3, 110, 1384, 8, 110, 1, 111, 1, 111, 3, 111, 1388,
+ 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1398,
+ 8, 111, 1, 112, 1, 112, 3, 112, 1402, 8, 112, 1, 113, 3, 113, 1405, 8, 113, 1, 113,
+ 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1412, 8, 113, 1, 114, 1, 114, 1, 114, 3, 114,
+ 1417, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 3, 116, 1423, 8, 116, 1, 117, 1, 117,
+ 1, 117, 3, 117, 1428, 8, 117, 1, 118, 4, 118, 1431, 8, 118, 11, 118, 12, 118, 1432,
+ 1, 118, 0, 1, 194, 119, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
+ 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
+ 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114,
+ 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146,
+ 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178,
+ 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210,
+ 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 0, 7, 1, 0, 88, 100,
+ 1, 0, 54, 55, 2, 0, 71, 72, 76, 76, 3, 0, 56, 56, 73, 75, 86, 86, 1, 0, 71, 72, 1, 0, 69,
+ 70, 3, 0, 30, 30, 40, 40, 45, 45, 1586, 0, 243, 1, 0, 0, 0, 2, 249, 1, 0, 0, 0, 4, 254,
+ 1, 0, 0, 0, 6, 263, 1, 0, 0, 0, 8, 275, 1, 0, 0, 0, 10, 279, 1, 0, 0, 0, 12, 285, 1, 0, 0,
+ 0, 14, 288, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 385, 1, 0, 0, 0, 20, 387, 1, 0, 0, 0, 22,
+ 473, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 481, 1, 0, 0, 0, 30, 502,
+ 1, 0, 0, 0, 32, 504, 1, 0, 0, 0, 34, 523, 1, 0, 0, 0, 36, 531, 1, 0, 0, 0, 38, 546, 1, 0,
+ 0, 0, 40, 548, 1, 0, 0, 0, 42, 551, 1, 0, 0, 0, 44, 558, 1, 0, 0, 0, 46, 560, 1, 0, 0, 0,
+ 48, 562, 1, 0, 0, 0, 50, 564, 1, 0, 0, 0, 52, 568, 1, 0, 0, 0, 54, 570, 1, 0, 0, 0, 56, 580,
+ 1, 0, 0, 0, 58, 582, 1, 0, 0, 0, 60, 585, 1, 0, 0, 0, 62, 609, 1, 0, 0, 0, 64, 614, 1, 0,
+ 0, 0, 66, 619, 1, 0, 0, 0, 68, 630, 1, 0, 0, 0, 70, 638, 1, 0, 0, 0, 72, 646, 1, 0, 0, 0,
+ 74, 655, 1, 0, 0, 0, 76, 664, 1, 0, 0, 0, 78, 680, 1, 0, 0, 0, 80, 682, 1, 0, 0, 0, 82, 688,
+ 1, 0, 0, 0, 84, 707, 1, 0, 0, 0, 86, 716, 1, 0, 0, 0, 88, 727, 1, 0, 0, 0, 90, 753, 1, 0,
+ 0, 0, 92, 765, 1, 0, 0, 0, 94, 770, 1, 0, 0, 0, 96, 788, 1, 0, 0, 0, 98, 790, 1, 0, 0, 0,
+ 100, 808, 1, 0, 0, 0, 102, 810, 1, 0, 0, 0, 104, 822, 1, 0, 0, 0, 106, 824, 1, 0, 0, 0,
+ 108, 832, 1, 0, 0, 0, 110, 837, 1, 0, 0, 0, 112, 841, 1, 0, 0, 0, 114, 843, 1, 0, 0, 0,
+ 116, 847, 1, 0, 0, 0, 118, 863, 1, 0, 0, 0, 120, 873, 1, 0, 0, 0, 122, 883, 1, 0, 0, 0,
+ 124, 893, 1, 0, 0, 0, 126, 898, 1, 0, 0, 0, 128, 903, 1, 0, 0, 0, 130, 905, 1, 0, 0, 0,
+ 132, 907, 1, 0, 0, 0, 134, 909, 1, 0, 0, 0, 136, 911, 1, 0, 0, 0, 138, 914, 1, 0, 0, 0,
+ 140, 916, 1, 0, 0, 0, 142, 919, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 930, 1, 0, 0, 0,
+ 148, 944, 1, 0, 0, 0, 150, 946, 1, 0, 0, 0, 152, 951, 1, 0, 0, 0, 154, 964, 1, 0, 0, 0,
+ 156, 970, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1009, 1, 0, 0, 0,
+ 164, 1014, 1, 0, 0, 0, 166, 1047, 1, 0, 0, 0, 168, 1049, 1, 0, 0, 0, 170, 1057, 1, 0,
+ 0, 0, 172, 1065, 1, 0, 0, 0, 174, 1078, 1, 0, 0, 0, 176, 1082, 1, 0, 0, 0, 178, 1084,
+ 1, 0, 0, 0, 180, 1091, 1, 0, 0, 0, 182, 1098, 1, 0, 0, 0, 184, 1106, 1, 0, 0, 0, 186, 1117,
+ 1, 0, 0, 0, 188, 1119, 1, 0, 0, 0, 190, 1141, 1, 0, 0, 0, 192, 1143, 1, 0, 0, 0, 194, 1154,
+ 1, 0, 0, 0, 196, 1183, 1, 0, 0, 0, 198, 1219, 1, 0, 0, 0, 200, 1221, 1, 0, 0, 0, 202, 1225,
+ 1, 0, 0, 0, 204, 1254, 1, 0, 0, 0, 206, 1256, 1, 0, 0, 0, 208, 1278, 1, 0, 0, 0, 210, 1280,
+ 1, 0, 0, 0, 212, 1286, 1, 0, 0, 0, 214, 1301, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1362,
+ 1, 0, 0, 0, 220, 1374, 1, 0, 0, 0, 222, 1397, 1, 0, 0, 0, 224, 1401, 1, 0, 0, 0, 226, 1404,
+ 1, 0, 0, 0, 228, 1413, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1427,
+ 1, 0, 0, 0, 236, 1430, 1, 0, 0, 0, 238, 244, 5, 44, 0, 0, 239, 244, 3, 28, 14, 0, 240,
+ 241, 3, 78, 39, 0, 241, 242, 5, 44, 0, 0, 242, 244, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243,
+ 239, 1, 0, 0, 0, 243, 240, 1, 0, 0, 0, 244, 1, 1, 0, 0, 0, 245, 248, 5, 44, 0, 0, 246, 248,
+ 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247,
+ 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 253,
+ 5, 0, 0, 1, 253, 3, 1, 0, 0, 0, 254, 258, 3, 214, 107, 0, 255, 257, 5, 44, 0, 0, 256, 255,
+ 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 261,
+ 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 5, 0, 0, 1, 262, 5, 1, 0, 0, 0, 263, 264, 5,
+ 86, 0, 0, 264, 270, 3, 70, 35, 0, 265, 267, 5, 57, 0, 0, 266, 268, 3, 220, 110, 0, 267,
+ 266, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 5, 58, 0, 0, 270,
+ 265, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 5, 44, 0, 0, 273,
+ 7, 1, 0, 0, 0, 274, 276, 3, 6, 3, 0, 275, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 275,
+ 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 9, 1, 0, 0, 0, 279, 283, 3, 8, 4, 0, 280, 284, 3,
+ 218, 109, 0, 281, 284, 3, 14, 7, 0, 282, 284, 3, 12, 6, 0, 283, 280, 1, 0, 0, 0, 283,
+ 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 11, 1, 0, 0, 0, 285, 286, 5, 9, 0, 0, 286, 287,
+ 3, 14, 7, 0, 287, 13, 1, 0, 0, 0, 288, 289, 5, 15, 0, 0, 289, 290, 3, 200, 100, 0, 290,
+ 293, 3, 16, 8, 0, 291, 292, 5, 87, 0, 0, 292, 294, 3, 174, 87, 0, 293, 291, 1, 0, 0, 0,
+ 293, 294, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 296, 5, 60, 0, 0, 296, 297, 3, 96, 48,
+ 0, 297, 15, 1, 0, 0, 0, 298, 300, 5, 57, 0, 0, 299, 301, 3, 18, 9, 0, 300, 299, 1, 0, 0,
+ 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 5, 58, 0, 0, 303, 17, 1, 0, 0,
+ 0, 304, 307, 3, 20, 10, 0, 305, 306, 5, 63, 0, 0, 306, 308, 3, 174, 87, 0, 307, 305,
+ 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 317, 1, 0, 0, 0, 309, 310, 5, 59, 0, 0, 310, 313,
+ 3, 20, 10, 0, 311, 312, 5, 63, 0, 0, 312, 314, 3, 174, 87, 0, 313, 311, 1, 0, 0, 0, 313,
+ 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317,
+ 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 353, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320,
+ 351, 5, 59, 0, 0, 321, 323, 5, 56, 0, 0, 322, 324, 3, 20, 10, 0, 323, 322, 1, 0, 0, 0,
+ 323, 324, 1, 0, 0, 0, 324, 333, 1, 0, 0, 0, 325, 326, 5, 59, 0, 0, 326, 329, 3, 20, 10,
+ 0, 327, 328, 5, 63, 0, 0, 328, 330, 3, 174, 87, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1,
+ 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 325, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1,
+ 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 344, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 342, 5,
+ 59, 0, 0, 337, 338, 5, 62, 0, 0, 338, 340, 3, 20, 10, 0, 339, 341, 5, 59, 0, 0, 340, 339,
+ 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 337, 1, 0, 0, 0, 342, 343,
+ 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 352,
+ 1, 0, 0, 0, 346, 347, 5, 62, 0, 0, 347, 349, 3, 20, 10, 0, 348, 350, 5, 59, 0, 0, 349,
+ 348, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 321, 1, 0, 0, 0, 351,
+ 346, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 320, 1, 0, 0, 0, 353,
+ 354, 1, 0, 0, 0, 354, 386, 1, 0, 0, 0, 355, 357, 5, 56, 0, 0, 356, 358, 3, 20, 10, 0, 357,
+ 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 367, 1, 0, 0, 0, 359, 360, 5, 59, 0, 0, 360,
+ 363, 3, 20, 10, 0, 361, 362, 5, 63, 0, 0, 362, 364, 3, 174, 87, 0, 363, 361, 1, 0, 0,
+ 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 359, 1, 0, 0, 0, 366, 369, 1, 0, 0,
+ 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 378, 1, 0, 0, 0, 369, 367, 1, 0, 0,
+ 0, 370, 376, 5, 59, 0, 0, 371, 372, 5, 62, 0, 0, 372, 374, 3, 20, 10, 0, 373, 375, 5,
+ 59, 0, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 371, 1,
+ 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 379, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 378, 379, 1,
+ 0, 0, 0, 379, 386, 1, 0, 0, 0, 380, 381, 5, 62, 0, 0, 381, 383, 3, 20, 10, 0, 382, 384,
+ 5, 59, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 304,
+ 1, 0, 0, 0, 385, 355, 1, 0, 0, 0, 385, 380, 1, 0, 0, 0, 386, 19, 1, 0, 0, 0, 387, 390, 3,
+ 200, 100, 0, 388, 389, 5, 60, 0, 0, 389, 391, 3, 174, 87, 0, 390, 388, 1, 0, 0, 0, 390,
+ 391, 1, 0, 0, 0, 391, 21, 1, 0, 0, 0, 392, 395, 3, 24, 12, 0, 393, 394, 5, 63, 0, 0, 394,
+ 396, 3, 174, 87, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 405, 1, 0, 0, 0, 397,
+ 398, 5, 59, 0, 0, 398, 401, 3, 24, 12, 0, 399, 400, 5, 63, 0, 0, 400, 402, 3, 174, 87,
+ 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 397, 1, 0, 0,
+ 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 441, 1, 0, 0,
+ 0, 407, 405, 1, 0, 0, 0, 408, 439, 5, 59, 0, 0, 409, 411, 5, 56, 0, 0, 410, 412, 3, 24,
+ 12, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 421, 1, 0, 0, 0, 413, 414, 5, 59,
+ 0, 0, 414, 417, 3, 24, 12, 0, 415, 416, 5, 63, 0, 0, 416, 418, 3, 174, 87, 0, 417, 415,
+ 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 413, 1, 0, 0, 0, 420, 423,
+ 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 432, 1, 0, 0, 0, 423, 421,
+ 1, 0, 0, 0, 424, 430, 5, 59, 0, 0, 425, 426, 5, 62, 0, 0, 426, 428, 3, 24, 12, 0, 427,
+ 429, 5, 59, 0, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430,
+ 425, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 1, 0, 0, 0, 432, 424, 1, 0, 0, 0, 432,
+ 433, 1, 0, 0, 0, 433, 440, 1, 0, 0, 0, 434, 435, 5, 62, 0, 0, 435, 437, 3, 24, 12, 0, 436,
+ 438, 5, 59, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439,
+ 409, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441,
+ 408, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 474, 1, 0, 0, 0, 443, 445, 5, 56, 0, 0, 444,
+ 446, 3, 24, 12, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 455, 1, 0, 0, 0, 447,
+ 448, 5, 59, 0, 0, 448, 451, 3, 24, 12, 0, 449, 450, 5, 63, 0, 0, 450, 452, 3, 174, 87,
+ 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 447, 1, 0, 0,
+ 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 466, 1, 0, 0,
+ 0, 457, 455, 1, 0, 0, 0, 458, 464, 5, 59, 0, 0, 459, 460, 5, 62, 0, 0, 460, 462, 3, 24,
+ 12, 0, 461, 463, 5, 59, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 1,
+ 0, 0, 0, 464, 459, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 1, 0, 0, 0, 466, 458, 1,
+ 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 474, 1, 0, 0, 0, 468, 469, 5, 62, 0, 0, 469, 471, 3,
+ 24, 12, 0, 470, 472, 5, 59, 0, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474,
+ 1, 0, 0, 0, 473, 392, 1, 0, 0, 0, 473, 443, 1, 0, 0, 0, 473, 468, 1, 0, 0, 0, 474, 23, 1,
+ 0, 0, 0, 475, 476, 3, 200, 100, 0, 476, 25, 1, 0, 0, 0, 477, 480, 3, 28, 14, 0, 478, 480,
+ 3, 78, 39, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 486,
+ 3, 30, 15, 0, 482, 483, 5, 61, 0, 0, 483, 485, 3, 30, 15, 0, 484, 482, 1, 0, 0, 0, 485,
+ 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488,
+ 486, 1, 0, 0, 0, 489, 491, 5, 61, 0, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491,
+ 492, 1, 0, 0, 0, 492, 493, 5, 44, 0, 0, 493, 29, 1, 0, 0, 0, 494, 503, 3, 32, 16, 0, 495,
+ 503, 3, 40, 20, 0, 496, 503, 3, 42, 21, 0, 497, 503, 3, 44, 22, 0, 498, 503, 3, 56, 28,
+ 0, 499, 503, 3, 72, 36, 0, 500, 503, 3, 74, 37, 0, 501, 503, 3, 76, 38, 0, 502, 494,
+ 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 502, 496, 1, 0, 0, 0, 502, 497, 1, 0, 0, 0, 502, 498,
+ 1, 0, 0, 0, 502, 499, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 501, 1, 0, 0, 0, 503, 31, 1,
+ 0, 0, 0, 504, 521, 3, 36, 18, 0, 505, 522, 3, 34, 17, 0, 506, 509, 3, 38, 19, 0, 507,
+ 510, 3, 232, 116, 0, 508, 510, 3, 214, 107, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0,
+ 0, 0, 510, 522, 1, 0, 0, 0, 511, 514, 5, 63, 0, 0, 512, 515, 3, 232, 116, 0, 513, 515,
+ 3, 36, 18, 0, 514, 512, 1, 0, 0, 0, 514, 513, 1, 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 511,
+ 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 522,
+ 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 505, 1, 0, 0, 0, 521, 506, 1, 0, 0, 0, 521, 518,
+ 1, 0, 0, 0, 522, 33, 1, 0, 0, 0, 523, 524, 5, 60, 0, 0, 524, 527, 3, 174, 87, 0, 525, 526,
+ 5, 63, 0, 0, 526, 528, 3, 174, 87, 0, 527, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528,
+ 35, 1, 0, 0, 0, 529, 532, 3, 174, 87, 0, 530, 532, 3, 192, 96, 0, 531, 529, 1, 0, 0, 0,
+ 531, 530, 1, 0, 0, 0, 532, 540, 1, 0, 0, 0, 533, 536, 5, 59, 0, 0, 534, 537, 3, 174, 87,
+ 0, 535, 537, 3, 192, 96, 0, 536, 534, 1, 0, 0, 0, 536, 535, 1, 0, 0, 0, 537, 539, 1, 0,
+ 0, 0, 538, 533, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0,
+ 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 5, 59, 0, 0, 544, 543, 1, 0,
+ 0, 0, 544, 545, 1, 0, 0, 0, 545, 37, 1, 0, 0, 0, 546, 547, 7, 0, 0, 0, 547, 39, 1, 0, 0,
+ 0, 548, 549, 5, 16, 0, 0, 549, 550, 3, 212, 106, 0, 550, 41, 1, 0, 0, 0, 551, 552, 5,
+ 35, 0, 0, 552, 43, 1, 0, 0, 0, 553, 559, 3, 46, 23, 0, 554, 559, 3, 48, 24, 0, 555, 559,
+ 3, 50, 25, 0, 556, 559, 3, 54, 27, 0, 557, 559, 3, 52, 26, 0, 558, 553, 1, 0, 0, 0, 558,
+ 554, 1, 0, 0, 0, 558, 555, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559,
+ 45, 1, 0, 0, 0, 560, 561, 5, 11, 0, 0, 561, 47, 1, 0, 0, 0, 562, 563, 5, 14, 0, 0, 563,
+ 49, 1, 0, 0, 0, 564, 566, 5, 37, 0, 0, 565, 567, 3, 214, 107, 0, 566, 565, 1, 0, 0, 0,
+ 566, 567, 1, 0, 0, 0, 567, 51, 1, 0, 0, 0, 568, 569, 3, 232, 116, 0, 569, 53, 1, 0, 0,
+ 0, 570, 576, 5, 36, 0, 0, 571, 574, 3, 174, 87, 0, 572, 573, 5, 23, 0, 0, 573, 575, 3,
+ 174, 87, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 571,
+ 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 55, 1, 0, 0, 0, 578, 581, 3, 58, 29, 0, 579, 581,
+ 3, 60, 30, 0, 580, 578, 1, 0, 0, 0, 580, 579, 1, 0, 0, 0, 581, 57, 1, 0, 0, 0, 582, 583,
+ 5, 26, 0, 0, 583, 584, 3, 68, 34, 0, 584, 59, 1, 0, 0, 0, 585, 598, 5, 23, 0, 0, 586, 588,
+ 7, 1, 0, 0, 587, 586, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590,
+ 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 599, 3, 70, 35, 0, 593, 595,
+ 7, 1, 0, 0, 594, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597,
+ 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 589, 1, 0, 0, 0, 598, 594, 1, 0, 0, 0, 599, 600,
+ 1, 0, 0, 0, 600, 607, 5, 26, 0, 0, 601, 608, 5, 56, 0, 0, 602, 603, 5, 57, 0, 0, 603, 604,
+ 3, 66, 33, 0, 604, 605, 5, 58, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 66, 33, 0, 607,
+ 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 61, 1, 0, 0, 0, 609, 612,
+ 3, 200, 100, 0, 610, 611, 5, 7, 0, 0, 611, 613, 3, 200, 100, 0, 612, 610, 1, 0, 0, 0,
+ 612, 613, 1, 0, 0, 0, 613, 63, 1, 0, 0, 0, 614, 617, 3, 70, 35, 0, 615, 616, 5, 7, 0, 0,
+ 616, 618, 3, 200, 100, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 65, 1, 0, 0,
+ 0, 619, 624, 3, 62, 31, 0, 620, 621, 5, 59, 0, 0, 621, 623, 3, 62, 31, 0, 622, 620, 1,
+ 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 628, 1,
+ 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 629, 5, 59, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1,
+ 0, 0, 0, 629, 67, 1, 0, 0, 0, 630, 635, 3, 64, 32, 0, 631, 632, 5, 59, 0, 0, 632, 634,
+ 3, 64, 32, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636,
+ 1, 0, 0, 0, 636, 69, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 643, 3, 200, 100, 0, 639, 640,
+ 5, 54, 0, 0, 640, 642, 3, 200, 100, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643,
+ 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 71, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647,
+ 5, 24, 0, 0, 647, 652, 3, 200, 100, 0, 648, 649, 5, 59, 0, 0, 649, 651, 3, 200, 100,
+ 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0,
+ 0, 653, 73, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 655, 656, 5, 32, 0, 0, 656, 661, 3, 200,
+ 100, 0, 657, 658, 5, 59, 0, 0, 658, 660, 3, 200, 100, 0, 659, 657, 1, 0, 0, 0, 660, 663,
+ 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 75, 1, 0, 0, 0, 663, 661, 1,
+ 0, 0, 0, 664, 665, 5, 8, 0, 0, 665, 668, 3, 174, 87, 0, 666, 667, 5, 59, 0, 0, 667, 669,
+ 3, 174, 87, 0, 668, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 77, 1, 0, 0, 0, 670, 681,
+ 3, 82, 41, 0, 671, 681, 3, 84, 42, 0, 672, 681, 3, 86, 43, 0, 673, 681, 3, 88, 44, 0,
+ 674, 681, 3, 90, 45, 0, 675, 681, 3, 14, 7, 0, 676, 681, 3, 218, 109, 0, 677, 681, 3,
+ 10, 5, 0, 678, 681, 3, 80, 40, 0, 679, 681, 3, 98, 49, 0, 680, 670, 1, 0, 0, 0, 680, 671,
+ 1, 0, 0, 0, 680, 672, 1, 0, 0, 0, 680, 673, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 675,
+ 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 680, 677, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679,
+ 1, 0, 0, 0, 681, 79, 1, 0, 0, 0, 682, 686, 5, 9, 0, 0, 683, 687, 3, 14, 7, 0, 684, 687,
+ 3, 90, 45, 0, 685, 687, 3, 86, 43, 0, 686, 683, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 686,
+ 685, 1, 0, 0, 0, 687, 81, 1, 0, 0, 0, 688, 689, 5, 25, 0, 0, 689, 690, 3, 174, 87, 0, 690,
+ 691, 5, 60, 0, 0, 691, 699, 3, 96, 48, 0, 692, 693, 5, 17, 0, 0, 693, 694, 3, 174, 87,
+ 0, 694, 695, 5, 60, 0, 0, 695, 696, 3, 96, 48, 0, 696, 698, 1, 0, 0, 0, 697, 692, 1, 0,
+ 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 705, 1, 0,
+ 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 18, 0, 0, 703, 704, 5, 60, 0, 0, 704, 706, 3,
+ 96, 48, 0, 705, 702, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 83, 1, 0, 0, 0, 707, 708, 5,
+ 41, 0, 0, 708, 709, 3, 174, 87, 0, 709, 710, 5, 60, 0, 0, 710, 714, 3, 96, 48, 0, 711,
+ 712, 5, 18, 0, 0, 712, 713, 5, 60, 0, 0, 713, 715, 3, 96, 48, 0, 714, 711, 1, 0, 0, 0,
+ 714, 715, 1, 0, 0, 0, 715, 85, 1, 0, 0, 0, 716, 717, 5, 22, 0, 0, 717, 718, 3, 212, 106,
+ 0, 718, 719, 5, 27, 0, 0, 719, 720, 3, 214, 107, 0, 720, 721, 5, 60, 0, 0, 721, 725,
+ 3, 96, 48, 0, 722, 723, 5, 18, 0, 0, 723, 724, 5, 60, 0, 0, 724, 726, 3, 96, 48, 0, 725,
+ 722, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 87, 1, 0, 0, 0, 727, 728, 5, 39, 0, 0, 728,
+ 729, 5, 60, 0, 0, 729, 751, 3, 96, 48, 0, 730, 731, 3, 94, 47, 0, 731, 732, 5, 60, 0,
+ 0, 732, 733, 3, 96, 48, 0, 733, 735, 1, 0, 0, 0, 734, 730, 1, 0, 0, 0, 735, 736, 1, 0,
+ 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 741, 1, 0, 0, 0, 738, 739, 5, 18,
+ 0, 0, 739, 740, 5, 60, 0, 0, 740, 742, 3, 96, 48, 0, 741, 738, 1, 0, 0, 0, 741, 742, 1,
+ 0, 0, 0, 742, 746, 1, 0, 0, 0, 743, 744, 5, 21, 0, 0, 744, 745, 5, 60, 0, 0, 745, 747,
+ 3, 96, 48, 0, 746, 743, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 752, 1, 0, 0, 0, 748, 749,
+ 5, 21, 0, 0, 749, 750, 5, 60, 0, 0, 750, 752, 3, 96, 48, 0, 751, 734, 1, 0, 0, 0, 751,
+ 748, 1, 0, 0, 0, 752, 89, 1, 0, 0, 0, 753, 754, 5, 42, 0, 0, 754, 759, 3, 92, 46, 0, 755,
+ 756, 5, 59, 0, 0, 756, 758, 3, 92, 46, 0, 757, 755, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759,
+ 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762,
+ 763, 5, 60, 0, 0, 763, 764, 3, 96, 48, 0, 764, 91, 1, 0, 0, 0, 765, 768, 3, 174, 87, 0,
+ 766, 767, 5, 7, 0, 0, 767, 769, 3, 194, 97, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0,
+ 0, 769, 93, 1, 0, 0, 0, 770, 776, 5, 19, 0, 0, 771, 774, 3, 174, 87, 0, 772, 773, 5, 7,
+ 0, 0, 773, 775, 3, 200, 100, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777,
+ 1, 0, 0, 0, 776, 771, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 95, 1, 0, 0, 0, 778, 789, 3,
+ 28, 14, 0, 779, 780, 5, 44, 0, 0, 780, 782, 5, 1, 0, 0, 781, 783, 3, 26, 13, 0, 782, 781,
+ 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786,
+ 1, 0, 0, 0, 786, 787, 5, 2, 0, 0, 787, 789, 1, 0, 0, 0, 788, 778, 1, 0, 0, 0, 788, 779,
+ 1, 0, 0, 0, 789, 97, 1, 0, 0, 0, 790, 791, 5, 30, 0, 0, 791, 792, 3, 100, 50, 0, 792, 793,
+ 5, 60, 0, 0, 793, 794, 5, 44, 0, 0, 794, 796, 5, 1, 0, 0, 795, 797, 3, 106, 53, 0, 796,
+ 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799,
+ 800, 1, 0, 0, 0, 800, 801, 5, 2, 0, 0, 801, 99, 1, 0, 0, 0, 802, 803, 3, 104, 52, 0, 803,
+ 805, 5, 59, 0, 0, 804, 806, 3, 102, 51, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0,
+ 806, 809, 1, 0, 0, 0, 807, 809, 3, 174, 87, 0, 808, 802, 1, 0, 0, 0, 808, 807, 1, 0, 0,
+ 0, 809, 101, 1, 0, 0, 0, 810, 812, 5, 59, 0, 0, 811, 813, 3, 104, 52, 0, 812, 811, 1,
+ 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1,
+ 0, 0, 0, 816, 818, 5, 59, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 103, 1,
+ 0, 0, 0, 819, 820, 5, 56, 0, 0, 820, 823, 3, 194, 97, 0, 821, 823, 3, 174, 87, 0, 822,
+ 819, 1, 0, 0, 0, 822, 821, 1, 0, 0, 0, 823, 105, 1, 0, 0, 0, 824, 825, 5, 12, 0, 0, 825,
+ 827, 3, 110, 55, 0, 826, 828, 3, 108, 54, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0,
+ 0, 828, 829, 1, 0, 0, 0, 829, 830, 5, 60, 0, 0, 830, 831, 3, 96, 48, 0, 831, 107, 1, 0,
+ 0, 0, 832, 833, 5, 25, 0, 0, 833, 834, 3, 174, 87, 0, 834, 109, 1, 0, 0, 0, 835, 838,
+ 3, 150, 75, 0, 836, 838, 3, 112, 56, 0, 837, 835, 1, 0, 0, 0, 837, 836, 1, 0, 0, 0, 838,
+ 111, 1, 0, 0, 0, 839, 842, 3, 114, 57, 0, 840, 842, 3, 116, 58, 0, 841, 839, 1, 0, 0,
+ 0, 841, 840, 1, 0, 0, 0, 842, 113, 1, 0, 0, 0, 843, 844, 3, 116, 58, 0, 844, 845, 5, 7,
+ 0, 0, 845, 846, 3, 136, 68, 0, 846, 115, 1, 0, 0, 0, 847, 852, 3, 118, 59, 0, 848, 849,
+ 5, 66, 0, 0, 849, 851, 3, 118, 59, 0, 850, 848, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852,
+ 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 117, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 855,
+ 864, 3, 120, 60, 0, 856, 864, 3, 134, 67, 0, 857, 864, 3, 138, 69, 0, 858, 864, 3, 140,
+ 70, 0, 859, 864, 3, 146, 73, 0, 860, 864, 3, 148, 74, 0, 861, 864, 3, 158, 79, 0, 862,
+ 864, 3, 166, 83, 0, 863, 855, 1, 0, 0, 0, 863, 856, 1, 0, 0, 0, 863, 857, 1, 0, 0, 0, 863,
+ 858, 1, 0, 0, 0, 863, 859, 1, 0, 0, 0, 863, 860, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 863,
+ 862, 1, 0, 0, 0, 864, 119, 1, 0, 0, 0, 865, 866, 3, 126, 63, 0, 866, 867, 4, 60, 0, 0,
+ 867, 874, 1, 0, 0, 0, 868, 874, 3, 124, 62, 0, 869, 874, 3, 236, 118, 0, 870, 874, 5,
+ 31, 0, 0, 871, 874, 5, 38, 0, 0, 872, 874, 5, 20, 0, 0, 873, 865, 1, 0, 0, 0, 873, 868,
+ 1, 0, 0, 0, 873, 869, 1, 0, 0, 0, 873, 870, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 872,
+ 1, 0, 0, 0, 874, 121, 1, 0, 0, 0, 875, 876, 3, 126, 63, 0, 876, 877, 4, 61, 1, 0, 877,
+ 884, 1, 0, 0, 0, 878, 884, 3, 124, 62, 0, 879, 884, 3, 236, 118, 0, 880, 884, 5, 31,
+ 0, 0, 881, 884, 5, 38, 0, 0, 882, 884, 5, 20, 0, 0, 883, 875, 1, 0, 0, 0, 883, 878, 1,
+ 0, 0, 0, 883, 879, 1, 0, 0, 0, 883, 880, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1,
+ 0, 0, 0, 884, 123, 1, 0, 0, 0, 885, 886, 3, 128, 64, 0, 886, 887, 5, 71, 0, 0, 887, 888,
+ 3, 132, 66, 0, 888, 894, 1, 0, 0, 0, 889, 890, 3, 128, 64, 0, 890, 891, 5, 72, 0, 0, 891,
+ 892, 3, 132, 66, 0, 892, 894, 1, 0, 0, 0, 893, 885, 1, 0, 0, 0, 893, 889, 1, 0, 0, 0, 894,
+ 125, 1, 0, 0, 0, 895, 899, 5, 4, 0, 0, 896, 897, 5, 72, 0, 0, 897, 899, 5, 4, 0, 0, 898,
+ 895, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 127, 1, 0, 0, 0, 900, 904, 3, 130, 65, 0, 901,
+ 902, 5, 72, 0, 0, 902, 904, 3, 130, 65, 0, 903, 900, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0,
+ 904, 129, 1, 0, 0, 0, 905, 906, 5, 4, 0, 0, 906, 131, 1, 0, 0, 0, 907, 908, 5, 4, 0, 0,
+ 908, 133, 1, 0, 0, 0, 909, 910, 3, 136, 68, 0, 910, 135, 1, 0, 0, 0, 911, 912, 3, 200,
+ 100, 0, 912, 913, 4, 68, 2, 0, 913, 137, 1, 0, 0, 0, 914, 915, 5, 40, 0, 0, 915, 139,
+ 1, 0, 0, 0, 916, 917, 3, 142, 71, 0, 917, 918, 4, 70, 3, 0, 918, 141, 1, 0, 0, 0, 919,
+ 922, 3, 200, 100, 0, 920, 921, 5, 54, 0, 0, 921, 923, 3, 200, 100, 0, 922, 920, 1, 0,
+ 0, 0, 923, 924, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 143, 1, 0,
+ 0, 0, 926, 929, 3, 142, 71, 0, 927, 929, 3, 200, 100, 0, 928, 926, 1, 0, 0, 0, 928, 927,
+ 1, 0, 0, 0, 929, 145, 1, 0, 0, 0, 930, 931, 5, 57, 0, 0, 931, 932, 3, 112, 56, 0, 932,
+ 933, 5, 58, 0, 0, 933, 147, 1, 0, 0, 0, 934, 936, 5, 64, 0, 0, 935, 937, 3, 152, 76, 0,
+ 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 945, 5, 65, 0, 0,
+ 939, 941, 5, 57, 0, 0, 940, 942, 3, 150, 75, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0,
+ 0, 0, 942, 943, 1, 0, 0, 0, 943, 945, 5, 58, 0, 0, 944, 934, 1, 0, 0, 0, 944, 939, 1, 0,
+ 0, 0, 945, 149, 1, 0, 0, 0, 946, 947, 3, 154, 77, 0, 947, 949, 5, 59, 0, 0, 948, 950,
+ 3, 152, 76, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 151, 1, 0, 0, 0, 951, 956,
+ 3, 154, 77, 0, 952, 953, 5, 59, 0, 0, 953, 955, 3, 154, 77, 0, 954, 952, 1, 0, 0, 0, 955,
+ 958, 1, 0, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958,
+ 956, 1, 0, 0, 0, 959, 961, 5, 59, 0, 0, 960, 959, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961,
+ 153, 1, 0, 0, 0, 962, 965, 3, 156, 78, 0, 963, 965, 3, 112, 56, 0, 964, 962, 1, 0, 0,
+ 0, 964, 963, 1, 0, 0, 0, 965, 155, 1, 0, 0, 0, 966, 967, 5, 56, 0, 0, 967, 971, 3, 136,
+ 68, 0, 968, 969, 5, 56, 0, 0, 969, 971, 3, 138, 69, 0, 970, 966, 1, 0, 0, 0, 970, 968,
+ 1, 0, 0, 0, 971, 157, 1, 0, 0, 0, 972, 973, 5, 77, 0, 0, 973, 998, 5, 78, 0, 0, 974, 975,
+ 5, 77, 0, 0, 975, 977, 3, 164, 82, 0, 976, 978, 5, 59, 0, 0, 977, 976, 1, 0, 0, 0, 977,
+ 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 5, 78, 0, 0, 980, 998, 1, 0, 0, 0, 981,
+ 982, 5, 77, 0, 0, 982, 983, 3, 160, 80, 0, 983, 984, 5, 59, 0, 0, 984, 986, 3, 164, 82,
+ 0, 985, 987, 5, 59, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0,
+ 0, 988, 989, 5, 78, 0, 0, 989, 998, 1, 0, 0, 0, 990, 991, 5, 77, 0, 0, 991, 993, 3, 160,
+ 80, 0, 992, 994, 5, 59, 0, 0, 993, 992, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1,
+ 0, 0, 0, 995, 996, 5, 78, 0, 0, 996, 998, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 974, 1,
+ 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1004, 3,
+ 162, 81, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 162, 81, 0, 1002, 1000, 1, 0, 0,
+ 0, 1003, 1006, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 161,
+ 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1007, 1010, 3, 122, 61, 0, 1008, 1010, 3, 142, 71,
+ 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012,
+ 5, 60, 0, 0, 1012, 1013, 3, 112, 56, 0, 1013, 163, 1, 0, 0, 0, 1014, 1015, 5, 62, 0,
+ 0, 1015, 1016, 3, 136, 68, 0, 1016, 165, 1, 0, 0, 0, 1017, 1018, 3, 144, 72, 0, 1018,
+ 1019, 5, 57, 0, 0, 1019, 1020, 5, 58, 0, 0, 1020, 1048, 1, 0, 0, 0, 1021, 1022, 3, 144,
+ 72, 0, 1022, 1023, 5, 57, 0, 0, 1023, 1025, 3, 168, 84, 0, 1024, 1026, 5, 59, 0, 0,
+ 1025, 1024, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028,
+ 5, 58, 0, 0, 1028, 1048, 1, 0, 0, 0, 1029, 1030, 3, 144, 72, 0, 1030, 1031, 5, 57, 0,
+ 0, 1031, 1033, 3, 170, 85, 0, 1032, 1034, 5, 59, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033,
+ 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 5, 58, 0, 0, 1036, 1048, 1, 0,
+ 0, 0, 1037, 1038, 3, 144, 72, 0, 1038, 1039, 5, 57, 0, 0, 1039, 1040, 3, 168, 84, 0,
+ 1040, 1041, 5, 59, 0, 0, 1041, 1043, 3, 170, 85, 0, 1042, 1044, 5, 59, 0, 0, 1043,
+ 1042, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1046, 5, 58,
+ 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1017, 1, 0, 0, 0, 1047, 1021, 1, 0, 0, 0, 1047, 1029,
+ 1, 0, 0, 0, 1047, 1037, 1, 0, 0, 0, 1048, 167, 1, 0, 0, 0, 1049, 1054, 3, 112, 56, 0,
+ 1050, 1051, 5, 59, 0, 0, 1051, 1053, 3, 112, 56, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1056,
+ 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 169, 1, 0, 0, 0, 1056,
+ 1054, 1, 0, 0, 0, 1057, 1062, 3, 172, 86, 0, 1058, 1059, 5, 59, 0, 0, 1059, 1061, 3,
+ 172, 86, 0, 1060, 1058, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062,
+ 1063, 1, 0, 0, 0, 1063, 171, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 3, 200,
+ 100, 0, 1066, 1067, 5, 63, 0, 0, 1067, 1068, 3, 112, 56, 0, 1068, 173, 1, 0, 0, 0, 1069,
+ 1075, 3, 182, 91, 0, 1070, 1071, 5, 25, 0, 0, 1071, 1072, 3, 182, 91, 0, 1072, 1073,
+ 5, 18, 0, 0, 1073, 1074, 3, 174, 87, 0, 1074, 1076, 1, 0, 0, 0, 1075, 1070, 1, 0, 0,
+ 0, 1075, 1076, 1, 0, 0, 0, 1076, 1079, 1, 0, 0, 0, 1077, 1079, 3, 178, 89, 0, 1078,
+ 1069, 1, 0, 0, 0, 1078, 1077, 1, 0, 0, 0, 1079, 175, 1, 0, 0, 0, 1080, 1083, 3, 182,
+ 91, 0, 1081, 1083, 3, 180, 90, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083,
+ 177, 1, 0, 0, 0, 1084, 1086, 5, 29, 0, 0, 1085, 1087, 3, 22, 11, 0, 1086, 1085, 1, 0,
+ 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 60, 0, 0, 1089,
+ 1090, 3, 174, 87, 0, 1090, 179, 1, 0, 0, 0, 1091, 1093, 5, 29, 0, 0, 1092, 1094, 3,
+ 22, 11, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095,
+ 1096, 5, 60, 0, 0, 1096, 1097, 3, 176, 88, 0, 1097, 181, 1, 0, 0, 0, 1098, 1103, 3,
+ 184, 92, 0, 1099, 1100, 5, 34, 0, 0, 1100, 1102, 3, 184, 92, 0, 1101, 1099, 1, 0, 0,
+ 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 183,
+ 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1111, 3, 186, 93, 0, 1107, 1108, 5, 6, 0, 0,
+ 1108, 1110, 3, 186, 93, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109,
+ 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 185, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114,
+ 1115, 5, 33, 0, 0, 1115, 1118, 3, 186, 93, 0, 1116, 1118, 3, 188, 94, 0, 1117, 1114,
+ 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 187, 1, 0, 0, 0, 1119, 1125, 3, 194, 97, 0,
+ 1120, 1121, 3, 190, 95, 0, 1121, 1122, 3, 194, 97, 0, 1122, 1124, 1, 0, 0, 0, 1123,
+ 1120, 1, 0, 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1126, 1, 0, 0,
+ 0, 1126, 189, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1142, 5, 79, 0, 0, 1129, 1142,
+ 5, 80, 0, 0, 1130, 1142, 5, 81, 0, 0, 1131, 1142, 5, 82, 0, 0, 1132, 1142, 5, 83, 0,
+ 0, 1133, 1142, 5, 84, 0, 0, 1134, 1142, 5, 85, 0, 0, 1135, 1142, 5, 27, 0, 0, 1136,
+ 1137, 5, 33, 0, 0, 1137, 1142, 5, 27, 0, 0, 1138, 1142, 5, 28, 0, 0, 1139, 1140, 5,
+ 28, 0, 0, 1140, 1142, 5, 33, 0, 0, 1141, 1128, 1, 0, 0, 0, 1141, 1129, 1, 0, 0, 0, 1141,
+ 1130, 1, 0, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1132, 1, 0, 0, 0, 1141, 1133, 1, 0, 0,
+ 0, 1141, 1134, 1, 0, 0, 0, 1141, 1135, 1, 0, 0, 0, 1141, 1136, 1, 0, 0, 0, 1141, 1138,
+ 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 191, 1, 0, 0, 0, 1143, 1144, 5, 56, 0, 0, 1144,
+ 1145, 3, 194, 97, 0, 1145, 193, 1, 0, 0, 0, 1146, 1147, 6, 97, -1, 0, 1147, 1155, 3,
+ 196, 98, 0, 1148, 1150, 7, 2, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151,
+ 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1155, 3, 194,
+ 97, 7, 1154, 1146, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1155, 1179, 1, 0, 0, 0, 1156,
+ 1157, 10, 8, 0, 0, 1157, 1158, 5, 62, 0, 0, 1158, 1178, 3, 194, 97, 9, 1159, 1160,
+ 10, 6, 0, 0, 1160, 1161, 7, 3, 0, 0, 1161, 1178, 3, 194, 97, 7, 1162, 1163, 10, 5, 0,
+ 0, 1163, 1164, 7, 4, 0, 0, 1164, 1178, 3, 194, 97, 6, 1165, 1166, 10, 4, 0, 0, 1166,
+ 1167, 7, 5, 0, 0, 1167, 1178, 3, 194, 97, 5, 1168, 1169, 10, 3, 0, 0, 1169, 1170, 5,
+ 68, 0, 0, 1170, 1178, 3, 194, 97, 4, 1171, 1172, 10, 2, 0, 0, 1172, 1173, 5, 67, 0,
+ 0, 1173, 1178, 3, 194, 97, 3, 1174, 1175, 10, 1, 0, 0, 1175, 1176, 5, 66, 0, 0, 1176,
+ 1178, 3, 194, 97, 2, 1177, 1156, 1, 0, 0, 0, 1177, 1159, 1, 0, 0, 0, 1177, 1162, 1,
+ 0, 0, 0, 1177, 1165, 1, 0, 0, 0, 1177, 1168, 1, 0, 0, 0, 1177, 1171, 1, 0, 0, 0, 1177,
+ 1174, 1, 0, 0, 0, 1178, 1181, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1179, 1180, 1, 0, 0,
+ 0, 1180, 195, 1, 0, 0, 0, 1181, 1179, 1, 0, 0, 0, 1182, 1184, 5, 10, 0, 0, 1183, 1182,
+ 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1189, 3, 198, 99, 0,
+ 1186, 1188, 3, 204, 102, 0, 1187, 1186, 1, 0, 0, 0, 1188, 1191, 1, 0, 0, 0, 1189, 1187,
+ 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 197, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1192,
+ 1195, 5, 57, 0, 0, 1193, 1196, 3, 232, 116, 0, 1194, 1196, 3, 202, 101, 0, 1195, 1193,
+ 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197,
+ 1220, 5, 58, 0, 0, 1198, 1200, 5, 64, 0, 0, 1199, 1201, 3, 202, 101, 0, 1200, 1199,
+ 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1220, 5, 65, 0, 0, 1203,
+ 1205, 5, 77, 0, 0, 1204, 1206, 3, 216, 108, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206,
+ 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1220, 5, 78, 0, 0, 1208, 1220, 3, 200, 100,
+ 0, 1209, 1220, 5, 4, 0, 0, 1210, 1212, 5, 3, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1213,
+ 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1220, 1, 0, 0, 0, 1215,
+ 1220, 5, 55, 0, 0, 1216, 1220, 5, 31, 0, 0, 1217, 1220, 5, 38, 0, 0, 1218, 1220, 5,
+ 20, 0, 0, 1219, 1192, 1, 0, 0, 0, 1219, 1198, 1, 0, 0, 0, 1219, 1203, 1, 0, 0, 0, 1219,
+ 1208, 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1211, 1, 0, 0, 0, 1219, 1215, 1, 0, 0,
+ 0, 1219, 1216, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1219, 1218, 1, 0, 0, 0, 1220, 199,
+ 1, 0, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 201, 1, 0, 0, 0, 1223, 1226, 3, 174, 87, 0,
+ 1224, 1226, 3, 192, 96, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 1241,
+ 1, 0, 0, 0, 1227, 1242, 3, 226, 113, 0, 1228, 1231, 5, 59, 0, 0, 1229, 1232, 3, 174,
+ 87, 0, 1230, 1232, 3, 192, 96, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1230, 1, 0, 0, 0, 1232,
+ 1234, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 1237, 1, 0, 0, 0, 1235, 1233, 1, 0, 0,
+ 0, 1235, 1236, 1, 0, 0, 0, 1236, 1239, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1238, 1240,
+ 5, 59, 0, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241,
+ 1227, 1, 0, 0, 0, 1241, 1235, 1, 0, 0, 0, 1242, 203, 1, 0, 0, 0, 1243, 1245, 5, 57, 0,
+ 0, 1244, 1246, 3, 220, 110, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246,
+ 1247, 1, 0, 0, 0, 1247, 1255, 5, 58, 0, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1250, 3, 206,
+ 103, 0, 1250, 1251, 5, 65, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1253, 5, 54, 0, 0, 1253,
+ 1255, 3, 200, 100, 0, 1254, 1243, 1, 0, 0, 0, 1254, 1248, 1, 0, 0, 0, 1254, 1252, 1,
+ 0, 0, 0, 1255, 205, 1, 0, 0, 0, 1256, 1261, 3, 208, 104, 0, 1257, 1258, 5, 59, 0, 0,
+ 1258, 1260, 3, 208, 104, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259,
+ 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264,
+ 1266, 5, 59, 0, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 207, 1, 0, 0,
+ 0, 1267, 1279, 3, 174, 87, 0, 1268, 1270, 3, 174, 87, 0, 1269, 1268, 1, 0, 0, 0, 1269,
+ 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 5, 60, 0, 0, 1272, 1274, 3, 174,
+ 87, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275,
+ 1277, 3, 210, 105, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1,
+ 0, 0, 0, 1278, 1267, 1, 0, 0, 0, 1278, 1269, 1, 0, 0, 0, 1279, 209, 1, 0, 0, 0, 1280,
+ 1282, 5, 60, 0, 0, 1281, 1283, 3, 174, 87, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1,
+ 0, 0, 0, 1283, 211, 1, 0, 0, 0, 1284, 1287, 3, 194, 97, 0, 1285, 1287, 3, 192, 96, 0,
+ 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1295, 1, 0, 0, 0, 1288, 1291,
+ 5, 59, 0, 0, 1289, 1292, 3, 194, 97, 0, 1290, 1292, 3, 192, 96, 0, 1291, 1289, 1, 0,
+ 0, 0, 1291, 1290, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1288, 1, 0, 0, 0, 1294, 1297,
+ 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297,
+ 1295, 1, 0, 0, 0, 1298, 1300, 5, 59, 0, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0,
+ 0, 0, 1300, 213, 1, 0, 0, 0, 1301, 1306, 3, 174, 87, 0, 1302, 1303, 5, 59, 0, 0, 1303,
+ 1305, 3, 174, 87, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1,
+ 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1310, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309,
+ 1311, 5, 59, 0, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 215, 1, 0, 0,
+ 0, 1312, 1313, 3, 174, 87, 0, 1313, 1314, 5, 60, 0, 0, 1314, 1315, 3, 174, 87, 0, 1315,
+ 1319, 1, 0, 0, 0, 1316, 1317, 5, 62, 0, 0, 1317, 1319, 3, 194, 97, 0, 1318, 1312, 1,
+ 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1319, 1338, 1, 0, 0, 0, 1320, 1339, 3, 226, 113, 0,
+ 1321, 1328, 5, 59, 0, 0, 1322, 1323, 3, 174, 87, 0, 1323, 1324, 5, 60, 0, 0, 1324,
+ 1325, 3, 174, 87, 0, 1325, 1329, 1, 0, 0, 0, 1326, 1327, 5, 62, 0, 0, 1327, 1329, 3,
+ 194, 97, 0, 1328, 1322, 1, 0, 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330,
+ 1321, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0,
+ 0, 1333, 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1337, 5, 59, 0, 0, 1336, 1335,
+ 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 1, 0, 0, 0, 1338, 1320, 1, 0, 0, 0, 1338,
+ 1332, 1, 0, 0, 0, 1339, 1361, 1, 0, 0, 0, 1340, 1343, 3, 174, 87, 0, 1341, 1343, 3,
+ 192, 96, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344,
+ 1359, 3, 226, 113, 0, 1345, 1348, 5, 59, 0, 0, 1346, 1349, 3, 174, 87, 0, 1347, 1349,
+ 3, 192, 96, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1347, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0,
+ 1350, 1345, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353,
+ 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1357, 5, 59, 0, 0, 1356,
+ 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1344, 1, 0, 0,
+ 0, 1358, 1352, 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1318, 1, 0, 0, 0, 1360, 1342,
+ 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1363, 5, 13, 0, 0, 1363, 1369, 3, 200, 100,
+ 0, 1364, 1366, 5, 57, 0, 0, 1365, 1367, 3, 220, 110, 0, 1366, 1365, 1, 0, 0, 0, 1366,
+ 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 58, 0, 0, 1369, 1364, 1, 0,
+ 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 60, 0, 0, 1372,
+ 1373, 3, 96, 48, 0, 1373, 219, 1, 0, 0, 0, 1374, 1379, 3, 222, 111, 0, 1375, 1376,
+ 5, 59, 0, 0, 1376, 1378, 3, 222, 111, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1381, 1, 0, 0,
+ 0, 1379, 1377, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1379,
+ 1, 0, 0, 0, 1382, 1384, 5, 59, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384,
+ 221, 1, 0, 0, 0, 1385, 1387, 3, 174, 87, 0, 1386, 1388, 3, 226, 113, 0, 1387, 1386,
+ 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1398, 1, 0, 0, 0, 1389, 1390, 3, 174, 87, 0,
+ 1390, 1391, 5, 63, 0, 0, 1391, 1392, 3, 174, 87, 0, 1392, 1398, 1, 0, 0, 0, 1393, 1394,
+ 5, 62, 0, 0, 1394, 1398, 3, 174, 87, 0, 1395, 1396, 5, 56, 0, 0, 1396, 1398, 3, 174,
+ 87, 0, 1397, 1385, 1, 0, 0, 0, 1397, 1389, 1, 0, 0, 0, 1397, 1393, 1, 0, 0, 0, 1397,
+ 1395, 1, 0, 0, 0, 1398, 223, 1, 0, 0, 0, 1399, 1402, 3, 226, 113, 0, 1400, 1402, 3,
+ 228, 114, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1400, 1, 0, 0, 0, 1402, 225, 1, 0, 0, 0, 1403,
+ 1405, 5, 9, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 1, 0, 0,
+ 0, 1406, 1407, 5, 22, 0, 0, 1407, 1408, 3, 212, 106, 0, 1408, 1409, 5, 27, 0, 0, 1409,
+ 1411, 3, 182, 91, 0, 1410, 1412, 3, 224, 112, 0, 1411, 1410, 1, 0, 0, 0, 1411, 1412,
+ 1, 0, 0, 0, 1412, 227, 1, 0, 0, 0, 1413, 1414, 5, 25, 0, 0, 1414, 1416, 3, 176, 88, 0,
+ 1415, 1417, 3, 224, 112, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 229,
+ 1, 0, 0, 0, 1418, 1419, 3, 200, 100, 0, 1419, 231, 1, 0, 0, 0, 1420, 1422, 5, 43, 0,
+ 0, 1421, 1423, 3, 234, 117, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423,
+ 233, 1, 0, 0, 0, 1424, 1425, 5, 23, 0, 0, 1425, 1428, 3, 174, 87, 0, 1426, 1428, 3,
+ 214, 107, 0, 1427, 1424, 1, 0, 0, 0, 1427, 1426, 1, 0, 0, 0, 1428, 235, 1, 0, 0, 0, 1429,
+ 1431, 5, 3, 0, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1430, 1, 0, 0,
+ 0, 1432, 1433, 1, 0, 0, 0, 1433, 237, 1, 0, 0, 0, 201, 243, 247, 249, 258, 267, 270,
+ 277, 283, 293, 300, 307, 313, 317, 323, 329, 333, 340, 342, 344, 349, 351, 353,
+ 357, 363, 367, 374, 376, 378, 383, 385, 390, 395, 401, 405, 411, 417, 421, 428,
+ 430, 432, 437, 439, 441, 445, 451, 455, 462, 464, 466, 471, 473, 479, 486, 490,
+ 502, 509, 514, 518, 521, 527, 531, 536, 540, 544, 558, 566, 574, 576, 580, 589,
+ 596, 598, 607, 612, 617, 624, 628, 635, 643, 652, 661, 668, 680, 686, 699, 705,
+ 714, 725, 736, 741, 746, 751, 759, 768, 774, 776, 784, 788, 798, 805, 808, 814,
+ 817, 822, 827, 837, 841, 852, 863, 873, 883, 893, 898, 903, 924, 928, 936, 941,
+ 944, 949, 956, 960, 964, 970, 977, 986, 993, 997, 1004, 1009, 1025, 1033, 1043,
+ 1047, 1054, 1062, 1075, 1078, 1082, 1086, 1093, 1103, 1111, 1117, 1125, 1141,
+ 1151, 1154, 1177, 1179, 1183, 1189, 1195, 1200, 1205, 1213, 1219, 1225, 1231,
+ 1235, 1239, 1241, 1245, 1254, 1261, 1265, 1269, 1273, 1276, 1278, 1282, 1286,
+ 1291, 1295, 1299, 1306, 1310, 1318, 1328, 1332, 1336, 1338, 1342, 1348, 1352,
+ 1356, 1358, 1360, 1366, 1369, 1379, 1383, 1387, 1397, 1401, 1404, 1411, 1416,
+ 1422, 1427, 1432
+ ]
+
+
+
+
+class Python3Parser(Python3ParserBase):
+ grammarFileName = "Python3Parser.g4"
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ sharedContextCache = PredictionContextCache()
+
+ literalNames = ["", "", "", "",
+ "", "", "'and'", "'as'", "'assert'",
+ "'async'", "'await'", "'break'", "'case'", "'class'",
+ "'continue'", "'def'", "'del'", "'elif'", "'else'",
+ "'except'", "'False'", "'finally'", "'for'", "'from'",
+ "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'",
+ "'match'", "'None'", "'nonlocal'", "'not'", "'or'",
+ "'pass'", "'raise'", "'return'", "'True'", "'try'",
+ "'_'", "'while'", "'with'", "'yield'", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "'.'", "'...'", "'*'", "'('", "')'", "','",
+ "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'",
+ "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'",
+ "'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='",
+ "'>='", "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='",
+ "'-='", "'*='", "'@='", "'/='", "'%='", "'&='", "'|='",
+ "'^='", "'<<='", "'>>='", "'**='", "'//='"]
+
+ symbolicNames = ["", "INDENT", "DEDENT", "STRING", "NUMBER",
+ "INTEGER", "AND", "AS", "ASSERT", "ASYNC", "AWAIT",
+ "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", "DEL",
+ "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", "FOR",
+ "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS",
+ "RAISE", "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE",
+ "WITH", "YIELD", "NEWLINE", "NAME", "STRING_LITERAL",
+ "BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER",
+ "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", "IMAG_NUMBER",
+ "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
+ "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN",
+ "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP",
+ "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", "DIV",
+ "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE",
+ "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ",
+ "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN",
+ "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN",
+ "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
+ "LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN",
+ "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR"]
+
+ RULE_single_input = 0
+ RULE_file_input = 1
+ RULE_eval_input = 2
+ RULE_decorator = 3
+ RULE_decorators = 4
+ RULE_decorated = 5
+ RULE_async_funcdef = 6
+ RULE_funcdef = 7
+ RULE_parameters = 8
+ RULE_typedargslist = 9
+ RULE_tfpdef = 10
+ RULE_varargslist = 11
+ RULE_vfpdef = 12
+ RULE_stmt = 13
+ RULE_simple_stmts = 14
+ RULE_simple_stmt = 15
+ RULE_expr_stmt = 16
+ RULE_annassign = 17
+ RULE_testlist_star_expr = 18
+ RULE_augassign = 19
+ RULE_del_stmt = 20
+ RULE_pass_stmt = 21
+ RULE_flow_stmt = 22
+ RULE_break_stmt = 23
+ RULE_continue_stmt = 24
+ RULE_return_stmt = 25
+ RULE_yield_stmt = 26
+ RULE_raise_stmt = 27
+ RULE_import_stmt = 28
+ RULE_import_name = 29
+ RULE_import_from = 30
+ RULE_import_as_name = 31
+ RULE_dotted_as_name = 32
+ RULE_import_as_names = 33
+ RULE_dotted_as_names = 34
+ RULE_dotted_name = 35
+ RULE_global_stmt = 36
+ RULE_nonlocal_stmt = 37
+ RULE_assert_stmt = 38
+ RULE_compound_stmt = 39
+ RULE_async_stmt = 40
+ RULE_if_stmt = 41
+ RULE_while_stmt = 42
+ RULE_for_stmt = 43
+ RULE_try_stmt = 44
+ RULE_with_stmt = 45
+ RULE_with_item = 46
+ RULE_except_clause = 47
+ RULE_block = 48
+ RULE_match_stmt = 49
+ RULE_subject_expr = 50
+ RULE_star_named_expressions = 51
+ RULE_star_named_expression = 52
+ RULE_case_block = 53
+ RULE_guard = 54
+ RULE_patterns = 55
+ RULE_pattern = 56
+ RULE_as_pattern = 57
+ RULE_or_pattern = 58
+ RULE_closed_pattern = 59
+ RULE_literal_pattern = 60
+ RULE_literal_expr = 61
+ RULE_complex_number = 62
+ RULE_signed_number = 63
+ RULE_signed_real_number = 64
+ RULE_real_number = 65
+ RULE_imaginary_number = 66
+ RULE_capture_pattern = 67
+ RULE_pattern_capture_target = 68
+ RULE_wildcard_pattern = 69
+ RULE_value_pattern = 70
+ RULE_attr = 71
+ RULE_name_or_attr = 72
+ RULE_group_pattern = 73
+ RULE_sequence_pattern = 74
+ RULE_open_sequence_pattern = 75
+ RULE_maybe_sequence_pattern = 76
+ RULE_maybe_star_pattern = 77
+ RULE_star_pattern = 78
+ RULE_mapping_pattern = 79
+ RULE_items_pattern = 80
+ RULE_key_value_pattern = 81
+ RULE_double_star_pattern = 82
+ RULE_class_pattern = 83
+ RULE_positional_patterns = 84
+ RULE_keyword_patterns = 85
+ RULE_keyword_pattern = 86
+ RULE_test = 87
+ RULE_test_nocond = 88
+ RULE_lambdef = 89
+ RULE_lambdef_nocond = 90
+ RULE_or_test = 91
+ RULE_and_test = 92
+ RULE_not_test = 93
+ RULE_comparison = 94
+ RULE_comp_op = 95
+ RULE_star_expr = 96
+ RULE_expr = 97
+ RULE_atom_expr = 98
+ RULE_atom = 99
+ RULE_name = 100
+ RULE_testlist_comp = 101
+ RULE_trailer = 102
+ RULE_subscriptlist = 103
+ RULE_subscript_ = 104
+ RULE_sliceop = 105
+ RULE_exprlist = 106
+ RULE_testlist = 107
+ RULE_dictorsetmaker = 108
+ RULE_classdef = 109
+ RULE_arglist = 110
+ RULE_argument = 111
+ RULE_comp_iter = 112
+ RULE_comp_for = 113
+ RULE_comp_if = 114
+ RULE_encoding_decl = 115
+ RULE_yield_expr = 116
+ RULE_yield_arg = 117
+ RULE_strings = 118
+
+ ruleNames = ["single_input", "file_input", "eval_input", "decorator",
+ "decorators", "decorated", "async_funcdef", "funcdef",
+ "parameters", "typedargslist", "tfpdef", "varargslist",
+ "vfpdef", "stmt", "simple_stmts", "simple_stmt", "expr_stmt",
+ "annassign", "testlist_star_expr", "augassign", "del_stmt",
+ "pass_stmt", "flow_stmt", "break_stmt", "continue_stmt",
+ "return_stmt", "yield_stmt", "raise_stmt", "import_stmt",
+ "import_name", "import_from", "import_as_name", "dotted_as_name",
+ "import_as_names", "dotted_as_names", "dotted_name",
+ "global_stmt", "nonlocal_stmt", "assert_stmt", "compound_stmt",
+ "async_stmt", "if_stmt", "while_stmt", "for_stmt", "try_stmt",
+ "with_stmt", "with_item", "except_clause", "block", "match_stmt",
+ "subject_expr", "star_named_expressions", "star_named_expression",
+ "case_block", "guard", "patterns", "pattern", "as_pattern",
+ "or_pattern", "closed_pattern", "literal_pattern", "literal_expr",
+ "complex_number", "signed_number", "signed_real_number",
+ "real_number", "imaginary_number", "capture_pattern",
+ "pattern_capture_target", "wildcard_pattern", "value_pattern",
+ "attr", "name_or_attr", "group_pattern", "sequence_pattern",
+ "open_sequence_pattern", "maybe_sequence_pattern", "maybe_star_pattern",
+ "star_pattern", "mapping_pattern", "items_pattern", "key_value_pattern",
+ "double_star_pattern", "class_pattern", "positional_patterns",
+ "keyword_patterns", "keyword_pattern", "test", "test_nocond",
+ "lambdef", "lambdef_nocond", "or_test", "and_test", "not_test",
+ "comparison", "comp_op", "star_expr", "expr", "atom_expr",
+ "atom", "name", "testlist_comp", "trailer", "subscriptlist",
+ "subscript_", "sliceop", "exprlist", "testlist", "dictorsetmaker",
+ "classdef", "arglist", "argument", "comp_iter", "comp_for",
+ "comp_if", "encoding_decl", "yield_expr", "yield_arg",
+ "strings"]
+
+ EOF = Token.EOF
+ INDENT = 1
+ DEDENT = 2
+ STRING = 3
+ NUMBER = 4
+ INTEGER = 5
+ AND = 6
+ AS = 7
+ ASSERT = 8
+ ASYNC = 9
+ AWAIT = 10
+ BREAK = 11
+ CASE = 12
+ CLASS = 13
+ CONTINUE = 14
+ DEF = 15
+ DEL = 16
+ ELIF = 17
+ ELSE = 18
+ EXCEPT = 19
+ FALSE = 20
+ FINALLY = 21
+ FOR = 22
+ FROM = 23
+ GLOBAL = 24
+ IF = 25
+ IMPORT = 26
+ IN = 27
+ IS = 28
+ LAMBDA = 29
+ MATCH = 30
+ NONE = 31
+ NONLOCAL = 32
+ NOT = 33
+ OR = 34
+ PASS = 35
+ RAISE = 36
+ RETURN = 37
+ TRUE = 38
+ TRY = 39
+ UNDERSCORE = 40
+ WHILE = 41
+ WITH = 42
+ YIELD = 43
+ NEWLINE = 44
+ NAME = 45
+ STRING_LITERAL = 46
+ BYTES_LITERAL = 47
+ DECIMAL_INTEGER = 48
+ OCT_INTEGER = 49
+ HEX_INTEGER = 50
+ BIN_INTEGER = 51
+ FLOAT_NUMBER = 52
+ IMAG_NUMBER = 53
+ DOT = 54
+ ELLIPSIS = 55
+ STAR = 56
+ OPEN_PAREN = 57
+ CLOSE_PAREN = 58
+ COMMA = 59
+ COLON = 60
+ SEMI_COLON = 61
+ POWER = 62
+ ASSIGN = 63
+ OPEN_BRACK = 64
+ CLOSE_BRACK = 65
+ OR_OP = 66
+ XOR = 67
+ AND_OP = 68
+ LEFT_SHIFT = 69
+ RIGHT_SHIFT = 70
+ ADD = 71
+ MINUS = 72
+ DIV = 73
+ MOD = 74
+ IDIV = 75
+ NOT_OP = 76
+ OPEN_BRACE = 77
+ CLOSE_BRACE = 78
+ LESS_THAN = 79
+ GREATER_THAN = 80
+ EQUALS = 81
+ GT_EQ = 82
+ LT_EQ = 83
+ NOT_EQ_1 = 84
+ NOT_EQ_2 = 85
+ AT = 86
+ ARROW = 87
+ ADD_ASSIGN = 88
+ SUB_ASSIGN = 89
+ MULT_ASSIGN = 90
+ AT_ASSIGN = 91
+ DIV_ASSIGN = 92
+ MOD_ASSIGN = 93
+ AND_ASSIGN = 94
+ OR_ASSIGN = 95
+ XOR_ASSIGN = 96
+ LEFT_SHIFT_ASSIGN = 97
+ RIGHT_SHIFT_ASSIGN = 98
+ POWER_ASSIGN = 99
+ IDIV_ASSIGN = 100
+ SKIP_ = 101
+ UNKNOWN_CHAR = 102
+
+ def __init__(self, input: TokenStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
+ self._predicates = None
+
+ class Single_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def compound_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_single_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingle_input"):
+ listener.enterSingle_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingle_input"):
+ listener.exitSingle_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingle_input"):
+ return visitor.visitSingle_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def single_input(self):
+
+ localctx = Python3Parser.Single_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 0, self.RULE_single_input)
+ try:
+ self.state = 243
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 0, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 238
+ self.match(Python3Parser.NEWLINE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 239
+ self.simple_stmts()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 240
+ self.compound_stmt()
+ self.state = 241
+ self.match(Python3Parser.NEWLINE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class File_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EOF(self):
+ return self.getToken(Python3Parser.EOF, 0)
+
+ def NEWLINE(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NEWLINE)
+ else:
+ return self.getToken(Python3Parser.NEWLINE, i)
+
+ def stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.StmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.StmtContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_file_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFile_input"):
+ listener.enterFile_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFile_input"):
+ listener.exitFile_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFile_input"):
+ return visitor.visitFile_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def file_input(self):
+
+ localctx = Python3Parser.File_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 2, self.RULE_file_input)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 249
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 252271930291384088) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0):
+ self.state = 247
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [44]:
+ self.state = 245
+ self.match(Python3Parser.NEWLINE)
+ pass
+ elif token in [3, 4, 8, 9, 10, 11, 13, 14, 15, 16, 20, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 45, 55, 56, 57, 64, 71, 72, 76, 77, 86]:
+ self.state = 246
+ self.stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 251
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 252
+ self.match(Python3Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Eval_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def EOF(self):
+ return self.getToken(Python3Parser.EOF, 0)
+
+ def NEWLINE(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NEWLINE)
+ else:
+ return self.getToken(Python3Parser.NEWLINE, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_eval_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEval_input"):
+ listener.enterEval_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEval_input"):
+ listener.exitEval_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEval_input"):
+ return visitor.visitEval_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def eval_input(self):
+
+ localctx = Python3Parser.Eval_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 4, self.RULE_eval_input)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 254
+ self.testlist()
+ self.state = 258
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 44:
+ self.state = 255
+ self.match(Python3Parser.NEWLINE)
+ self.state = 260
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 261
+ self.match(Python3Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Python3Parser.AT, 0)
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorator"):
+ listener.enterDecorator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorator"):
+ listener.exitDecorator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorator"):
+ return visitor.visitDecorator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorator(self):
+
+ localctx = Python3Parser.DecoratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 6, self.RULE_decorator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 263
+ self.match(Python3Parser.AT)
+ self.state = 264
+ self.dotted_name()
+ self.state = 270
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 57:
+ self.state = 265
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 267
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 266
+ self.arglist()
+
+ self.state = 269
+ self.match(Python3Parser.CLOSE_PAREN)
+
+ self.state = 272
+ self.match(Python3Parser.NEWLINE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratorsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def decorator(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.DecoratorContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.DecoratorContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorators
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorators"):
+ listener.enterDecorators(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorators"):
+ listener.exitDecorators(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorators"):
+ return visitor.visitDecorators(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorators(self):
+
+ localctx = Python3Parser.DecoratorsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 8, self.RULE_decorators)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 275
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 274
+ self.decorator()
+ self.state = 277
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 86):
+ break
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratedContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def decorators(self):
+ return self.getTypedRuleContext(Python3Parser.DecoratorsContext, 0)
+
+ def classdef(self):
+ return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def async_funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.Async_funcdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorated
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorated"):
+ listener.enterDecorated(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorated"):
+ listener.exitDecorated(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorated"):
+ return visitor.visitDecorated(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorated(self):
+
+ localctx = Python3Parser.DecoratedContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 10, self.RULE_decorated)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 279
+ self.decorators()
+ self.state = 283
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [13]:
+ self.state = 280
+ self.classdef()
+ pass
+ elif token in [15]:
+ self.state = 281
+ self.funcdef()
+ pass
+ elif token in [9]:
+ self.state = 282
+ self.async_funcdef()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Async_funcdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_async_funcdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAsync_funcdef"):
+ listener.enterAsync_funcdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAsync_funcdef"):
+ listener.exitAsync_funcdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAsync_funcdef"):
+ return visitor.visitAsync_funcdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def async_funcdef(self):
+
+ localctx = Python3Parser.Async_funcdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 12, self.RULE_async_funcdef)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 285
+ self.match(Python3Parser.ASYNC)
+ self.state = 286
+ self.funcdef()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FuncdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEF(self):
+ return self.getToken(Python3Parser.DEF, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def parameters(self):
+ return self.getTypedRuleContext(Python3Parser.ParametersContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Python3Parser.ARROW, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_funcdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFuncdef"):
+ listener.enterFuncdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFuncdef"):
+ listener.exitFuncdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFuncdef"):
+ return visitor.visitFuncdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def funcdef(self):
+
+ localctx = Python3Parser.FuncdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 14, self.RULE_funcdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 288
+ self.match(Python3Parser.DEF)
+ self.state = 289
+ self.name()
+ self.state = 290
+ self.parameters()
+ self.state = 293
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 87:
+ self.state = 291
+ self.match(Python3Parser.ARROW)
+ self.state = 292
+ self.test()
+
+ self.state = 295
+ self.match(Python3Parser.COLON)
+ self.state = 296
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def typedargslist(self):
+ return self.getTypedRuleContext(Python3Parser.TypedargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_parameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterParameters"):
+ listener.enterParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitParameters"):
+ listener.exitParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitParameters"):
+ return visitor.visitParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def parameters(self):
+
+ localctx = Python3Parser.ParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 16, self.RULE_parameters)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 298
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 300
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 299
+ self.typedargslist()
+
+ self.state = 302
+ self.match(Python3Parser.CLOSE_PAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypedargslistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def tfpdef(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TfpdefContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TfpdefContext, i)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_typedargslist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypedargslist"):
+ listener.enterTypedargslist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypedargslist"):
+ listener.exitTypedargslist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypedargslist"):
+ return visitor.visitTypedargslist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typedargslist(self):
+
+ localctx = Python3Parser.TypedargslistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 18, self.RULE_typedargslist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 385
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [30, 40, 45]:
+ self.state = 304
+ self.tfpdef()
+ self.state = 307
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 305
+ self.match(Python3Parser.ASSIGN)
+ self.state = 306
+ self.test()
+
+ self.state = 317
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 309
+ self.match(Python3Parser.COMMA)
+ self.state = 310
+ self.tfpdef()
+ self.state = 313
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 311
+ self.match(Python3Parser.ASSIGN)
+ self.state = 312
+ self.test()
+
+ self.state = 319
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
+
+ self.state = 353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 320
+ self.match(Python3Parser.COMMA)
+ self.state = 351
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 321
+ self.match(Python3Parser.STAR)
+ self.state = 323
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 322
+ self.tfpdef()
+
+ self.state = 333
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 15, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 325
+ self.match(Python3Parser.COMMA)
+ self.state = 326
+ self.tfpdef()
+ self.state = 329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 327
+ self.match(Python3Parser.ASSIGN)
+ self.state = 328
+ self.test()
+
+ self.state = 335
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 15, self._ctx)
+
+ self.state = 344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 336
+ self.match(Python3Parser.COMMA)
+ self.state = 342
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 337
+ self.match(Python3Parser.POWER)
+ self.state = 338
+ self.tfpdef()
+ self.state = 340
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 339
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 346
+ self.match(Python3Parser.POWER)
+ self.state = 347
+ self.tfpdef()
+ self.state = 349
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 348
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [58]:
+ pass
+ else:
+ pass
+
+ pass
+ elif token in [56]:
+ self.state = 355
+ self.match(Python3Parser.STAR)
+ self.state = 357
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 356
+ self.tfpdef()
+
+ self.state = 367
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 359
+ self.match(Python3Parser.COMMA)
+ self.state = 360
+ self.tfpdef()
+ self.state = 363
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 361
+ self.match(Python3Parser.ASSIGN)
+ self.state = 362
+ self.test()
+
+ self.state = 369
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
+
+ self.state = 378
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 370
+ self.match(Python3Parser.COMMA)
+ self.state = 376
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 371
+ self.match(Python3Parser.POWER)
+ self.state = 372
+ self.tfpdef()
+ self.state = 374
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 373
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 380
+ self.match(Python3Parser.POWER)
+ self.state = 381
+ self.tfpdef()
+ self.state = 383
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 382
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TfpdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_tfpdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTfpdef"):
+ listener.enterTfpdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTfpdef"):
+ listener.exitTfpdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTfpdef"):
+ return visitor.visitTfpdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tfpdef(self):
+
+ localctx = Python3Parser.TfpdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 20, self.RULE_tfpdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 387
+ self.name()
+ self.state = 390
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 60:
+ self.state = 388
+ self.match(Python3Parser.COLON)
+ self.state = 389
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VarargslistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def vfpdef(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.VfpdefContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.VfpdefContext, i)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_varargslist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVarargslist"):
+ listener.enterVarargslist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVarargslist"):
+ listener.exitVarargslist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVarargslist"):
+ return visitor.visitVarargslist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def varargslist(self):
+
+ localctx = Python3Parser.VarargslistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 22, self.RULE_varargslist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 473
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [30, 40, 45]:
+ self.state = 392
+ self.vfpdef()
+ self.state = 395
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 393
+ self.match(Python3Parser.ASSIGN)
+ self.state = 394
+ self.test()
+
+ self.state = 405
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 33, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 397
+ self.match(Python3Parser.COMMA)
+ self.state = 398
+ self.vfpdef()
+ self.state = 401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 399
+ self.match(Python3Parser.ASSIGN)
+ self.state = 400
+ self.test()
+
+ self.state = 407
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 33, self._ctx)
+
+ self.state = 441
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 408
+ self.match(Python3Parser.COMMA)
+ self.state = 439
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 409
+ self.match(Python3Parser.STAR)
+ self.state = 411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 410
+ self.vfpdef()
+
+ self.state = 421
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 36, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 413
+ self.match(Python3Parser.COMMA)
+ self.state = 414
+ self.vfpdef()
+ self.state = 417
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 415
+ self.match(Python3Parser.ASSIGN)
+ self.state = 416
+ self.test()
+
+ self.state = 423
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 36, self._ctx)
+
+ self.state = 432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 424
+ self.match(Python3Parser.COMMA)
+ self.state = 430
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 425
+ self.match(Python3Parser.POWER)
+ self.state = 426
+ self.vfpdef()
+ self.state = 428
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 427
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 434
+ self.match(Python3Parser.POWER)
+ self.state = 435
+ self.vfpdef()
+ self.state = 437
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 436
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [60]:
+ pass
+ else:
+ pass
+
+ pass
+ elif token in [56]:
+ self.state = 443
+ self.match(Python3Parser.STAR)
+ self.state = 445
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 444
+ self.vfpdef()
+
+ self.state = 455
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 45, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 447
+ self.match(Python3Parser.COMMA)
+ self.state = 448
+ self.vfpdef()
+ self.state = 451
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 449
+ self.match(Python3Parser.ASSIGN)
+ self.state = 450
+ self.test()
+
+ self.state = 457
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 45, self._ctx)
+
+ self.state = 466
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 458
+ self.match(Python3Parser.COMMA)
+ self.state = 464
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 459
+ self.match(Python3Parser.POWER)
+ self.state = 460
+ self.vfpdef()
+ self.state = 462
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 461
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 468
+ self.match(Python3Parser.POWER)
+ self.state = 469
+ self.vfpdef()
+ self.state = 471
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 470
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VfpdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_vfpdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVfpdef"):
+ listener.enterVfpdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVfpdef"):
+ listener.exitVfpdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVfpdef"):
+ return visitor.visitVfpdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def vfpdef(self):
+
+ localctx = Python3Parser.VfpdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 24, self.RULE_vfpdef)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 475
+ self.name()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def compound_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStmt"):
+ listener.enterStmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStmt"):
+ listener.exitStmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStmt"):
+ return visitor.visitStmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def stmt(self):
+
+ localctx = Python3Parser.StmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 26, self.RULE_stmt)
+ try:
+ self.state = 479
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 51, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 477
+ self.simple_stmts()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 478
+ self.compound_stmt()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Simple_stmtsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Simple_stmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtContext, i)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def SEMI_COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.SEMI_COLON)
+ else:
+ return self.getToken(Python3Parser.SEMI_COLON, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_simple_stmts
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimple_stmts"):
+ listener.enterSimple_stmts(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimple_stmts"):
+ listener.exitSimple_stmts(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimple_stmts"):
+ return visitor.visitSimple_stmts(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simple_stmts(self):
+
+ localctx = Python3Parser.Simple_stmtsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 28, self.RULE_simple_stmts)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 481
+ self.simple_stmt()
+ self.state = 486
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 52, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 482
+ self.match(Python3Parser.SEMI_COLON)
+ self.state = 483
+ self.simple_stmt()
+ self.state = 488
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 52, self._ctx)
+
+ self.state = 490
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 61:
+ self.state = 489
+ self.match(Python3Parser.SEMI_COLON)
+
+ self.state = 492
+ self.match(Python3Parser.NEWLINE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Simple_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Expr_stmtContext, 0)
+
+ def del_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Del_stmtContext, 0)
+
+ def pass_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Pass_stmtContext, 0)
+
+ def flow_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Flow_stmtContext, 0)
+
+ def import_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Import_stmtContext, 0)
+
+ def global_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Global_stmtContext, 0)
+
+ def nonlocal_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Nonlocal_stmtContext, 0)
+
+ def assert_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Assert_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_simple_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimple_stmt"):
+ listener.enterSimple_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimple_stmt"):
+ listener.exitSimple_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimple_stmt"):
+ return visitor.visitSimple_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simple_stmt(self):
+
+ localctx = Python3Parser.Simple_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 30, self.RULE_simple_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 502
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 494
+ self.expr_stmt()
+ pass
+ elif token in [16]:
+ self.state = 495
+ self.del_stmt()
+ pass
+ elif token in [35]:
+ self.state = 496
+ self.pass_stmt()
+ pass
+ elif token in [11, 14, 36, 37, 43]:
+ self.state = 497
+ self.flow_stmt()
+ pass
+ elif token in [23, 26]:
+ self.state = 498
+ self.import_stmt()
+ pass
+ elif token in [24]:
+ self.state = 499
+ self.global_stmt()
+ pass
+ elif token in [32]:
+ self.state = 500
+ self.nonlocal_stmt()
+ pass
+ elif token in [8]:
+ self.state = 501
+ self.assert_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Expr_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def testlist_star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Testlist_star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Testlist_star_exprContext, i)
+
+ def annassign(self):
+ return self.getTypedRuleContext(Python3Parser.AnnassignContext, 0)
+
+ def augassign(self):
+ return self.getTypedRuleContext(Python3Parser.AugassignContext, 0)
+
+ def yield_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Yield_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, i)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_expr_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpr_stmt"):
+ listener.enterExpr_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpr_stmt"):
+ listener.exitExpr_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpr_stmt"):
+ return visitor.visitExpr_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expr_stmt(self):
+
+ localctx = Python3Parser.Expr_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 32, self.RULE_expr_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 504
+ self.testlist_star_expr()
+ self.state = 521
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [60]:
+ self.state = 505
+ self.annassign()
+ pass
+ elif token in [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]:
+ self.state = 506
+ self.augassign()
+ self.state = 509
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 507
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 508
+ self.testlist()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+ elif token in [44, 61, 63]:
+ self.state = 518
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 63:
+ self.state = 511
+ self.match(Python3Parser.ASSIGN)
+ self.state = 514
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 512
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 513
+ self.testlist_star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 520
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnassignContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_annassign
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnassign"):
+ listener.enterAnnassign(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnassign"):
+ listener.exitAnnassign(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnassign"):
+ return visitor.visitAnnassign(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annassign(self):
+
+ localctx = Python3Parser.AnnassignContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 34, self.RULE_annassign)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 523
+ self.match(Python3Parser.COLON)
+ self.state = 524
+ self.test()
+ self.state = 527
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 525
+ self.match(Python3Parser.ASSIGN)
+ self.state = 526
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Testlist_star_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist_star_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist_star_expr"):
+ listener.enterTestlist_star_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist_star_expr"):
+ listener.exitTestlist_star_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist_star_expr"):
+ return visitor.visitTestlist_star_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist_star_expr(self):
+
+ localctx = Python3Parser.Testlist_star_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 36, self.RULE_testlist_star_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 531
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 529
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 530
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 540
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 62, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 533
+ self.match(Python3Parser.COMMA)
+ self.state = 536
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 534
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 535
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 542
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 62, self._ctx)
+
+ self.state = 544
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 543
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AugassignContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ADD_ASSIGN(self):
+ return self.getToken(Python3Parser.ADD_ASSIGN, 0)
+
+ def SUB_ASSIGN(self):
+ return self.getToken(Python3Parser.SUB_ASSIGN, 0)
+
+ def MULT_ASSIGN(self):
+ return self.getToken(Python3Parser.MULT_ASSIGN, 0)
+
+ def AT_ASSIGN(self):
+ return self.getToken(Python3Parser.AT_ASSIGN, 0)
+
+ def DIV_ASSIGN(self):
+ return self.getToken(Python3Parser.DIV_ASSIGN, 0)
+
+ def MOD_ASSIGN(self):
+ return self.getToken(Python3Parser.MOD_ASSIGN, 0)
+
+ def AND_ASSIGN(self):
+ return self.getToken(Python3Parser.AND_ASSIGN, 0)
+
+ def OR_ASSIGN(self):
+ return self.getToken(Python3Parser.OR_ASSIGN, 0)
+
+ def XOR_ASSIGN(self):
+ return self.getToken(Python3Parser.XOR_ASSIGN, 0)
+
+ def LEFT_SHIFT_ASSIGN(self):
+ return self.getToken(Python3Parser.LEFT_SHIFT_ASSIGN, 0)
+
+ def RIGHT_SHIFT_ASSIGN(self):
+ return self.getToken(Python3Parser.RIGHT_SHIFT_ASSIGN, 0)
+
+ def POWER_ASSIGN(self):
+ return self.getToken(Python3Parser.POWER_ASSIGN, 0)
+
+ def IDIV_ASSIGN(self):
+ return self.getToken(Python3Parser.IDIV_ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_augassign
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAugassign"):
+ listener.enterAugassign(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAugassign"):
+ listener.exitAugassign(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAugassign"):
+ return visitor.visitAugassign(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def augassign(self):
+
+ localctx = Python3Parser.AugassignContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 38, self.RULE_augassign)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 546
+ _la = self._input.LA(1)
+ if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 8191) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Del_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEL(self):
+ return self.getToken(Python3Parser.DEL, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_del_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDel_stmt"):
+ listener.enterDel_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDel_stmt"):
+ listener.exitDel_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDel_stmt"):
+ return visitor.visitDel_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def del_stmt(self):
+
+ localctx = Python3Parser.Del_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 40, self.RULE_del_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 548
+ self.match(Python3Parser.DEL)
+ self.state = 549
+ self.exprlist()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Pass_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PASS(self):
+ return self.getToken(Python3Parser.PASS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pass_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPass_stmt"):
+ listener.enterPass_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPass_stmt"):
+ listener.exitPass_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPass_stmt"):
+ return visitor.visitPass_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pass_stmt(self):
+
+ localctx = Python3Parser.Pass_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 42, self.RULE_pass_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 551
+ self.match(Python3Parser.PASS)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Flow_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def break_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Break_stmtContext, 0)
+
+ def continue_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Continue_stmtContext, 0)
+
+ def return_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Return_stmtContext, 0)
+
+ def raise_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Raise_stmtContext, 0)
+
+ def yield_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_flow_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFlow_stmt"):
+ listener.enterFlow_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFlow_stmt"):
+ listener.exitFlow_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFlow_stmt"):
+ return visitor.visitFlow_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def flow_stmt(self):
+
+ localctx = Python3Parser.Flow_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 44, self.RULE_flow_stmt)
+ try:
+ self.state = 558
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [11]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 553
+ self.break_stmt()
+ pass
+ elif token in [14]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 554
+ self.continue_stmt()
+ pass
+ elif token in [37]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 555
+ self.return_stmt()
+ pass
+ elif token in [36]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 556
+ self.raise_stmt()
+ pass
+ elif token in [43]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 557
+ self.yield_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Break_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BREAK(self):
+ return self.getToken(Python3Parser.BREAK, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_break_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBreak_stmt"):
+ listener.enterBreak_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBreak_stmt"):
+ listener.exitBreak_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBreak_stmt"):
+ return visitor.visitBreak_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def break_stmt(self):
+
+ localctx = Python3Parser.Break_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 46, self.RULE_break_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 560
+ self.match(Python3Parser.BREAK)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Continue_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CONTINUE(self):
+ return self.getToken(Python3Parser.CONTINUE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_continue_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterContinue_stmt"):
+ listener.enterContinue_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitContinue_stmt"):
+ listener.exitContinue_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitContinue_stmt"):
+ return visitor.visitContinue_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def continue_stmt(self):
+
+ localctx = Python3Parser.Continue_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 48, self.RULE_continue_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 562
+ self.match(Python3Parser.CONTINUE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Return_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RETURN(self):
+ return self.getToken(Python3Parser.RETURN, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_return_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReturn_stmt"):
+ listener.enterReturn_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReturn_stmt"):
+ listener.exitReturn_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReturn_stmt"):
+ return visitor.visitReturn_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def return_stmt(self):
+
+ localctx = Python3Parser.Return_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 50, self.RULE_return_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 564
+ self.match(Python3Parser.RETURN)
+ self.state = 566
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 565
+ self.testlist()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def yield_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_stmt"):
+ listener.enterYield_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_stmt"):
+ listener.exitYield_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_stmt"):
+ return visitor.visitYield_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_stmt(self):
+
+ localctx = Python3Parser.Yield_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 52, self.RULE_yield_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 568
+ self.yield_expr()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Raise_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RAISE(self):
+ return self.getToken(Python3Parser.RAISE, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_raise_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRaise_stmt"):
+ listener.enterRaise_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRaise_stmt"):
+ listener.exitRaise_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRaise_stmt"):
+ return visitor.visitRaise_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def raise_stmt(self):
+
+ localctx = Python3Parser.Raise_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 54, self.RULE_raise_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 570
+ self.match(Python3Parser.RAISE)
+ self.state = 576
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 571
+ self.test()
+ self.state = 574
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 23:
+ self.state = 572
+ self.match(Python3Parser.FROM)
+ self.state = 573
+ self.test()
+
+
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def import_name(self):
+ return self.getTypedRuleContext(Python3Parser.Import_nameContext, 0)
+
+ def import_from(self):
+ return self.getTypedRuleContext(Python3Parser.Import_fromContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_stmt"):
+ listener.enterImport_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_stmt"):
+ listener.exitImport_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_stmt"):
+ return visitor.visitImport_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_stmt(self):
+
+ localctx = Python3Parser.Import_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 56, self.RULE_import_stmt)
+ try:
+ self.state = 580
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [26]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 578
+ self.import_name()
+ pass
+ elif token in [23]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 579
+ self.import_from()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Python3Parser.IMPORT, 0)
+
+ def dotted_as_names(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_as_namesContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_name"):
+ listener.enterImport_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_name"):
+ listener.exitImport_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_name"):
+ return visitor.visitImport_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_name(self):
+
+ localctx = Python3Parser.Import_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 58, self.RULE_import_name)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 582
+ self.match(Python3Parser.IMPORT)
+ self.state = 583
+ self.dotted_as_names()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_fromContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def IMPORT(self):
+ return self.getToken(Python3Parser.IMPORT, 0)
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def import_as_names(self):
+ return self.getTypedRuleContext(Python3Parser.Import_as_namesContext, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def ELLIPSIS(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ELLIPSIS)
+ else:
+ return self.getToken(Python3Parser.ELLIPSIS, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_from
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_from"):
+ listener.enterImport_from(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_from"):
+ listener.exitImport_from(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_from"):
+ return visitor.visitImport_from(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_from(self):
+
+ localctx = Python3Parser.Import_fromContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 60, self.RULE_import_from)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 585
+ self.match(Python3Parser.FROM)
+ self.state = 598
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 71, self._ctx)
+ if la_ == 1:
+ self.state = 589
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 54 or _la == 55:
+ self.state = 586
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 591
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 592
+ self.dotted_name()
+ pass
+
+ elif la_ == 2:
+ self.state = 594
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 593
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 596
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ break
+
+ pass
+
+ self.state = 600
+ self.match(Python3Parser.IMPORT)
+ self.state = 607
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 601
+ self.match(Python3Parser.STAR)
+ pass
+ elif token in [57]:
+ self.state = 602
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 603
+ self.import_as_names()
+ self.state = 604
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [30, 40, 45]:
+ self.state = 606
+ self.import_as_names()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_as_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_as_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_as_name"):
+ listener.enterImport_as_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_as_name"):
+ listener.exitImport_as_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_as_name"):
+ return visitor.visitImport_as_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_as_name(self):
+
+ localctx = Python3Parser.Import_as_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 62, self.RULE_import_as_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 609
+ self.name()
+ self.state = 612
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 610
+ self.match(Python3Parser.AS)
+ self.state = 611
+ self.name()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_as_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_as_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_as_name"):
+ listener.enterDotted_as_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_as_name"):
+ listener.exitDotted_as_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_as_name"):
+ return visitor.visitDotted_as_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_as_name(self):
+
+ localctx = Python3Parser.Dotted_as_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 64, self.RULE_dotted_as_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 614
+ self.dotted_name()
+ self.state = 617
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 615
+ self.match(Python3Parser.AS)
+ self.state = 616
+ self.name()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_as_namesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def import_as_name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Import_as_nameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Import_as_nameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_as_names
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_as_names"):
+ listener.enterImport_as_names(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_as_names"):
+ listener.exitImport_as_names(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_as_names"):
+ return visitor.visitImport_as_names(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_as_names(self):
+
+ localctx = Python3Parser.Import_as_namesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 66, self.RULE_import_as_names)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 619
+ self.import_as_name()
+ self.state = 624
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 75, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 620
+ self.match(Python3Parser.COMMA)
+ self.state = 621
+ self.import_as_name()
+ self.state = 626
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 75, self._ctx)
+
+ self.state = 628
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 627
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_as_namesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dotted_as_name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Dotted_as_nameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Dotted_as_nameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_as_names
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_as_names"):
+ listener.enterDotted_as_names(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_as_names"):
+ listener.exitDotted_as_names(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_as_names"):
+ return visitor.visitDotted_as_names(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_as_names(self):
+
+ localctx = Python3Parser.Dotted_as_namesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 68, self.RULE_dotted_as_names)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 630
+ self.dotted_as_name()
+ self.state = 635
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 631
+ self.match(Python3Parser.COMMA)
+ self.state = 632
+ self.dotted_as_name()
+ self.state = 637
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_name"):
+ listener.enterDotted_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_name"):
+ listener.exitDotted_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_name"):
+ return visitor.visitDotted_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_name(self):
+
+ localctx = Python3Parser.Dotted_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 70, self.RULE_dotted_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 638
+ self.name()
+ self.state = 643
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 54:
+ self.state = 639
+ self.match(Python3Parser.DOT)
+ self.state = 640
+ self.name()
+ self.state = 645
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Global_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def GLOBAL(self):
+ return self.getToken(Python3Parser.GLOBAL, 0)
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_global_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGlobal_stmt"):
+ listener.enterGlobal_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGlobal_stmt"):
+ listener.exitGlobal_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGlobal_stmt"):
+ return visitor.visitGlobal_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def global_stmt(self):
+
+ localctx = Python3Parser.Global_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 72, self.RULE_global_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 646
+ self.match(Python3Parser.GLOBAL)
+ self.state = 647
+ self.name()
+ self.state = 652
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 648
+ self.match(Python3Parser.COMMA)
+ self.state = 649
+ self.name()
+ self.state = 654
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Nonlocal_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NONLOCAL(self):
+ return self.getToken(Python3Parser.NONLOCAL, 0)
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_nonlocal_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNonlocal_stmt"):
+ listener.enterNonlocal_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNonlocal_stmt"):
+ listener.exitNonlocal_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNonlocal_stmt"):
+ return visitor.visitNonlocal_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def nonlocal_stmt(self):
+
+ localctx = Python3Parser.Nonlocal_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 74, self.RULE_nonlocal_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 655
+ self.match(Python3Parser.NONLOCAL)
+ self.state = 656
+ self.name()
+ self.state = 661
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 657
+ self.match(Python3Parser.COMMA)
+ self.state = 658
+ self.name()
+ self.state = 663
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Assert_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSERT(self):
+ return self.getToken(Python3Parser.ASSERT, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_assert_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssert_stmt"):
+ listener.enterAssert_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssert_stmt"):
+ listener.exitAssert_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssert_stmt"):
+ return visitor.visitAssert_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assert_stmt(self):
+
+ localctx = Python3Parser.Assert_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 76, self.RULE_assert_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 664
+ self.match(Python3Parser.ASSERT)
+ self.state = 665
+ self.test()
+ self.state = 668
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 666
+ self.match(Python3Parser.COMMA)
+ self.state = 667
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Compound_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def if_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.If_stmtContext, 0)
+
+ def while_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.While_stmtContext, 0)
+
+ def for_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0)
+
+ def try_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Try_stmtContext, 0)
+
+ def with_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def classdef(self):
+ return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0)
+
+ def decorated(self):
+ return self.getTypedRuleContext(Python3Parser.DecoratedContext, 0)
+
+ def async_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Async_stmtContext, 0)
+
+ def match_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Match_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_compound_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompound_stmt"):
+ listener.enterCompound_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompound_stmt"):
+ listener.exitCompound_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompound_stmt"):
+ return visitor.visitCompound_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compound_stmt(self):
+
+ localctx = Python3Parser.Compound_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 78, self.RULE_compound_stmt)
+ try:
+ self.state = 680
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [25]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 670
+ self.if_stmt()
+ pass
+ elif token in [41]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 671
+ self.while_stmt()
+ pass
+ elif token in [22]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 672
+ self.for_stmt()
+ pass
+ elif token in [39]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 673
+ self.try_stmt()
+ pass
+ elif token in [42]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 674
+ self.with_stmt()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 675
+ self.funcdef()
+ pass
+ elif token in [13]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 676
+ self.classdef()
+ pass
+ elif token in [86]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 677
+ self.decorated()
+ pass
+ elif token in [9]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 678
+ self.async_stmt()
+ pass
+ elif token in [30]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 679
+ self.match_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Async_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def with_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0)
+
+ def for_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_async_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAsync_stmt"):
+ listener.enterAsync_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAsync_stmt"):
+ listener.exitAsync_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAsync_stmt"):
+ return visitor.visitAsync_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def async_stmt(self):
+
+ localctx = Python3Parser.Async_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 80, self.RULE_async_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 682
+ self.match(Python3Parser.ASYNC)
+ self.state = 686
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [15]:
+ self.state = 683
+ self.funcdef()
+ pass
+ elif token in [42]:
+ self.state = 684
+ self.with_stmt()
+ pass
+ elif token in [22]:
+ self.state = 685
+ self.for_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class If_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELIF(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ELIF)
+ else:
+ return self.getToken(Python3Parser.ELIF, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_if_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIf_stmt"):
+ listener.enterIf_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIf_stmt"):
+ listener.exitIf_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIf_stmt"):
+ return visitor.visitIf_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def if_stmt(self):
+
+ localctx = Python3Parser.If_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 82, self.RULE_if_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 688
+ self.match(Python3Parser.IF)
+ self.state = 689
+ self.test()
+ self.state = 690
+ self.match(Python3Parser.COLON)
+ self.state = 691
+ self.block()
+ self.state = 699
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 17:
+ self.state = 692
+ self.match(Python3Parser.ELIF)
+ self.state = 693
+ self.test()
+ self.state = 694
+ self.match(Python3Parser.COLON)
+ self.state = 695
+ self.block()
+ self.state = 701
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 705
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 702
+ self.match(Python3Parser.ELSE)
+ self.state = 703
+ self.match(Python3Parser.COLON)
+ self.state = 704
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class While_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Python3Parser.WHILE, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_while_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhile_stmt"):
+ listener.enterWhile_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhile_stmt"):
+ listener.exitWhile_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhile_stmt"):
+ return visitor.visitWhile_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def while_stmt(self):
+
+ localctx = Python3Parser.While_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 84, self.RULE_while_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 707
+ self.match(Python3Parser.WHILE)
+ self.state = 708
+ self.test()
+ self.state = 709
+ self.match(Python3Parser.COLON)
+ self.state = 710
+ self.block()
+ self.state = 714
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 711
+ self.match(Python3Parser.ELSE)
+ self.state = 712
+ self.match(Python3Parser.COLON)
+ self.state = 713
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class For_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Python3Parser.FOR, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_for_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFor_stmt"):
+ listener.enterFor_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFor_stmt"):
+ listener.exitFor_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFor_stmt"):
+ return visitor.visitFor_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def for_stmt(self):
+
+ localctx = Python3Parser.For_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 86, self.RULE_for_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 716
+ self.match(Python3Parser.FOR)
+ self.state = 717
+ self.exprlist()
+ self.state = 718
+ self.match(Python3Parser.IN)
+ self.state = 719
+ self.testlist()
+ self.state = 720
+ self.match(Python3Parser.COLON)
+ self.state = 721
+ self.block()
+ self.state = 725
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 722
+ self.match(Python3Parser.ELSE)
+ self.state = 723
+ self.match(Python3Parser.COLON)
+ self.state = 724
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Try_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Python3Parser.TRY, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def FINALLY(self):
+ return self.getToken(Python3Parser.FINALLY, 0)
+
+ def except_clause(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Except_clauseContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Except_clauseContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_try_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTry_stmt"):
+ listener.enterTry_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTry_stmt"):
+ listener.exitTry_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTry_stmt"):
+ return visitor.visitTry_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def try_stmt(self):
+
+ localctx = Python3Parser.Try_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 88, self.RULE_try_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 727
+ self.match(Python3Parser.TRY)
+ self.state = 728
+ self.match(Python3Parser.COLON)
+ self.state = 729
+ self.block()
+ self.state = 751
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [19]:
+ self.state = 734
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 730
+ self.except_clause()
+ self.state = 731
+ self.match(Python3Parser.COLON)
+ self.state = 732
+ self.block()
+ self.state = 736
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 19):
+ break
+
+ self.state = 741
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 738
+ self.match(Python3Parser.ELSE)
+ self.state = 739
+ self.match(Python3Parser.COLON)
+ self.state = 740
+ self.block()
+
+ self.state = 746
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 21:
+ self.state = 743
+ self.match(Python3Parser.FINALLY)
+ self.state = 744
+ self.match(Python3Parser.COLON)
+ self.state = 745
+ self.block()
+
+ pass
+ elif token in [21]:
+ self.state = 748
+ self.match(Python3Parser.FINALLY)
+ self.state = 749
+ self.match(Python3Parser.COLON)
+ self.state = 750
+ self.block()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class With_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WITH(self):
+ return self.getToken(Python3Parser.WITH, 0)
+
+ def with_item(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.With_itemContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.With_itemContext, i)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_with_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWith_stmt"):
+ listener.enterWith_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWith_stmt"):
+ listener.exitWith_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWith_stmt"):
+ return visitor.visitWith_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def with_stmt(self):
+
+ localctx = Python3Parser.With_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 90, self.RULE_with_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 753
+ self.match(Python3Parser.WITH)
+ self.state = 754
+ self.with_item()
+ self.state = 759
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 755
+ self.match(Python3Parser.COMMA)
+ self.state = 756
+ self.with_item()
+ self.state = 761
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 762
+ self.match(Python3Parser.COLON)
+ self.state = 763
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class With_itemContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_with_item
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWith_item"):
+ listener.enterWith_item(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWith_item"):
+ listener.exitWith_item(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWith_item"):
+ return visitor.visitWith_item(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def with_item(self):
+
+ localctx = Python3Parser.With_itemContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 92, self.RULE_with_item)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 765
+ self.test()
+ self.state = 768
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 766
+ self.match(Python3Parser.AS)
+ self.state = 767
+ self.expr(0)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Except_clauseContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXCEPT(self):
+ return self.getToken(Python3Parser.EXCEPT, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_except_clause
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExcept_clause"):
+ listener.enterExcept_clause(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExcept_clause"):
+ listener.exitExcept_clause(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExcept_clause"):
+ return visitor.visitExcept_clause(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def except_clause(self):
+
+ localctx = Python3Parser.Except_clauseContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 94, self.RULE_except_clause)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 770
+ self.match(Python3Parser.EXCEPT)
+ self.state = 776
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 771
+ self.test()
+ self.state = 774
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 772
+ self.match(Python3Parser.AS)
+ self.state = 773
+ self.name()
+
+
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def INDENT(self):
+ return self.getToken(Python3Parser.INDENT, 0)
+
+ def DEDENT(self):
+ return self.getToken(Python3Parser.DEDENT, 0)
+
+ def stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.StmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.StmtContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlock"):
+ listener.enterBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlock"):
+ listener.exitBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlock"):
+ return visitor.visitBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def block(self):
+
+ localctx = Python3Parser.BlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 96, self.RULE_block)
+ self._la = 0 # Token type
+ try:
+ self.state = 788
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 8, 10, 11, 14, 16, 20, 23, 24, 26, 29, 30, 31, 32, 33, 35, 36, 37, 38, 40, 43, 45, 55,
+ 56, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 778
+ self.simple_stmts()
+ pass
+ elif token in [44]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 779
+ self.match(Python3Parser.NEWLINE)
+ self.state = 780
+ self.match(Python3Parser.INDENT)
+ self.state = 782
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 781
+ self.stmt()
+ self.state = 784
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252254338105339672) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0)):
+ break
+
+ self.state = 786
+ self.match(Python3Parser.DEDENT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Match_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def MATCH(self):
+ return self.getToken(Python3Parser.MATCH, 0)
+
+ def subject_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Subject_exprContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def INDENT(self):
+ return self.getToken(Python3Parser.INDENT, 0)
+
+ def DEDENT(self):
+ return self.getToken(Python3Parser.DEDENT, 0)
+
+ def case_block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Case_blockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Case_blockContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_match_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMatch_stmt"):
+ listener.enterMatch_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMatch_stmt"):
+ listener.exitMatch_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMatch_stmt"):
+ return visitor.visitMatch_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def match_stmt(self):
+
+ localctx = Python3Parser.Match_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 98, self.RULE_match_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 790
+ self.match(Python3Parser.MATCH)
+ self.state = 791
+ self.subject_expr()
+ self.state = 792
+ self.match(Python3Parser.COLON)
+ self.state = 793
+ self.match(Python3Parser.NEWLINE)
+ self.state = 794
+ self.match(Python3Parser.INDENT)
+ self.state = 796
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 795
+ self.case_block()
+ self.state = 798
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 12):
+ break
+
+ self.state = 800
+ self.match(Python3Parser.DEDENT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Subject_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def star_named_expression(self):
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def star_named_expressions(self):
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionsContext, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subject_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubject_expr"):
+ listener.enterSubject_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubject_expr"):
+ listener.exitSubject_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubject_expr"):
+ return visitor.visitSubject_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subject_expr(self):
+
+ localctx = Python3Parser.Subject_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 100, self.RULE_subject_expr)
+ self._la = 0 # Token type
+ try:
+ self.state = 808
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 100, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 802
+ self.star_named_expression()
+ self.state = 803
+ self.match(Python3Parser.COMMA)
+ self.state = 805
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 804
+ self.star_named_expressions()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 807
+ self.test()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_named_expressionsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def star_named_expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_named_expressionContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_named_expressions
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_named_expressions"):
+ listener.enterStar_named_expressions(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_named_expressions"):
+ listener.exitStar_named_expressions(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_named_expressions"):
+ return visitor.visitStar_named_expressions(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_named_expressions(self):
+
+ localctx = Python3Parser.Star_named_expressionsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 102, self.RULE_star_named_expressions)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 810
+ self.match(Python3Parser.COMMA)
+ self.state = 812
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 811
+ self.star_named_expression()
+ self.state = 814
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0)):
+ break
+
+ self.state = 817
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 816
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_named_expressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_named_expression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_named_expression"):
+ listener.enterStar_named_expression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_named_expression"):
+ listener.exitStar_named_expression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_named_expression"):
+ return visitor.visitStar_named_expression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_named_expression(self):
+
+ localctx = Python3Parser.Star_named_expressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 104, self.RULE_star_named_expression)
+ try:
+ self.state = 822
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 819
+ self.match(Python3Parser.STAR)
+ self.state = 820
+ self.expr(0)
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 821
+ self.test()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Case_blockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CASE(self):
+ return self.getToken(Python3Parser.CASE, 0)
+
+ def patterns(self):
+ return self.getTypedRuleContext(Python3Parser.PatternsContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def guard(self):
+ return self.getTypedRuleContext(Python3Parser.GuardContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_case_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCase_block"):
+ listener.enterCase_block(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCase_block"):
+ listener.exitCase_block(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCase_block"):
+ return visitor.visitCase_block(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def case_block(self):
+
+ localctx = Python3Parser.Case_blockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 106, self.RULE_case_block)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 824
+ self.match(Python3Parser.CASE)
+ self.state = 825
+ self.patterns()
+ self.state = 827
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 25:
+ self.state = 826
+ self.guard()
+
+ self.state = 829
+ self.match(Python3Parser.COLON)
+ self.state = 830
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class GuardContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_guard
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGuard"):
+ listener.enterGuard(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGuard"):
+ listener.exitGuard(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGuard"):
+ return visitor.visitGuard(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def guard(self):
+
+ localctx = Python3Parser.GuardContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 108, self.RULE_guard)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 832
+ self.match(Python3Parser.IF)
+ self.state = 833
+ self.test()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def open_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPatterns"):
+ listener.enterPatterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPatterns"):
+ listener.exitPatterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPatterns"):
+ return visitor.visitPatterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def patterns(self):
+
+ localctx = Python3Parser.PatternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 110, self.RULE_patterns)
+ try:
+ self.state = 837
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 105, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 835
+ self.open_sequence_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 836
+ self.pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def as_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.As_patternContext, 0)
+
+ def or_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern"):
+ listener.enterPattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern"):
+ listener.exitPattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern"):
+ return visitor.visitPattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern(self):
+
+ localctx = Python3Parser.PatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 112, self.RULE_pattern)
+ try:
+ self.state = 841
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 106, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 839
+ self.as_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 840
+ self.or_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class As_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_as_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAs_pattern"):
+ listener.enterAs_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAs_pattern"):
+ listener.exitAs_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAs_pattern"):
+ return visitor.visitAs_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def as_pattern(self):
+
+ localctx = Python3Parser.As_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 114, self.RULE_as_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 843
+ self.or_pattern()
+ self.state = 844
+ self.match(Python3Parser.AS)
+ self.state = 845
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Or_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def closed_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Closed_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Closed_patternContext, i)
+
+ def OR_OP(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.OR_OP)
+ else:
+ return self.getToken(Python3Parser.OR_OP, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_or_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOr_pattern"):
+ listener.enterOr_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOr_pattern"):
+ listener.exitOr_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOr_pattern"):
+ return visitor.visitOr_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def or_pattern(self):
+
+ localctx = Python3Parser.Or_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 116, self.RULE_or_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 847
+ self.closed_pattern()
+ self.state = 852
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 66:
+ self.state = 848
+ self.match(Python3Parser.OR_OP)
+ self.state = 849
+ self.closed_pattern()
+ self.state = 854
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Closed_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def literal_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Literal_patternContext, 0)
+
+ def capture_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Capture_patternContext, 0)
+
+ def wildcard_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0)
+
+ def value_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Value_patternContext, 0)
+
+ def group_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Group_patternContext, 0)
+
+ def sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Sequence_patternContext, 0)
+
+ def mapping_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Mapping_patternContext, 0)
+
+ def class_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Class_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_closed_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClosed_pattern"):
+ listener.enterClosed_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClosed_pattern"):
+ listener.exitClosed_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClosed_pattern"):
+ return visitor.visitClosed_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def closed_pattern(self):
+
+ localctx = Python3Parser.Closed_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 118, self.RULE_closed_pattern)
+ try:
+ self.state = 863
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 108, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 855
+ self.literal_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 856
+ self.capture_pattern()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 857
+ self.wildcard_pattern()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 858
+ self.value_pattern()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 859
+ self.group_pattern()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 860
+ self.sequence_pattern()
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 861
+ self.mapping_pattern()
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 862
+ self.class_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Literal_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0)
+
+ def complex_number(self):
+ return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0)
+
+ def strings(self):
+ return self.getTypedRuleContext(Python3Parser.StringsContext, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_literal_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral_pattern"):
+ listener.enterLiteral_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral_pattern"):
+ listener.exitLiteral_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral_pattern"):
+ return visitor.visitLiteral_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal_pattern(self):
+
+ localctx = Python3Parser.Literal_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 120, self.RULE_literal_pattern)
+ try:
+ self.state = 873
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 109, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 865
+ self.signed_number()
+ self.state = 866
+ if not self.CannotBePlusMinus():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBePlusMinus() ")
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 868
+ self.complex_number()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 869
+ self.strings()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 870
+ self.match(Python3Parser.NONE)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 871
+ self.match(Python3Parser.TRUE)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 872
+ self.match(Python3Parser.FALSE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Literal_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0)
+
+ def complex_number(self):
+ return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0)
+
+ def strings(self):
+ return self.getTypedRuleContext(Python3Parser.StringsContext, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_literal_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral_expr"):
+ listener.enterLiteral_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral_expr"):
+ listener.exitLiteral_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral_expr"):
+ return visitor.visitLiteral_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal_expr(self):
+
+ localctx = Python3Parser.Literal_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 122, self.RULE_literal_expr)
+ try:
+ self.state = 883
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 110, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 875
+ self.signed_number()
+ self.state = 876
+ if not self.CannotBePlusMinus():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBePlusMinus() ")
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 878
+ self.complex_number()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 879
+ self.strings()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 880
+ self.match(Python3Parser.NONE)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 881
+ self.match(Python3Parser.TRUE)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 882
+ self.match(Python3Parser.FALSE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Complex_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_real_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_real_numberContext, 0)
+
+ def ADD(self):
+ return self.getToken(Python3Parser.ADD, 0)
+
+ def imaginary_number(self):
+ return self.getTypedRuleContext(Python3Parser.Imaginary_numberContext, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_complex_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComplex_number"):
+ listener.enterComplex_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComplex_number"):
+ listener.exitComplex_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComplex_number"):
+ return visitor.visitComplex_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def complex_number(self):
+
+ localctx = Python3Parser.Complex_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 124, self.RULE_complex_number)
+ try:
+ self.state = 893
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 111, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 885
+ self.signed_real_number()
+ self.state = 886
+ self.match(Python3Parser.ADD)
+ self.state = 887
+ self.imaginary_number()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 889
+ self.signed_real_number()
+ self.state = 890
+ self.match(Python3Parser.MINUS)
+ self.state = 891
+ self.imaginary_number()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Signed_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_signed_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSigned_number"):
+ listener.enterSigned_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSigned_number"):
+ listener.exitSigned_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSigned_number"):
+ return visitor.visitSigned_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def signed_number(self):
+
+ localctx = Python3Parser.Signed_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 126, self.RULE_signed_number)
+ try:
+ self.state = 898
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [4]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 895
+ self.match(Python3Parser.NUMBER)
+ pass
+ elif token in [72]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 896
+ self.match(Python3Parser.MINUS)
+ self.state = 897
+ self.match(Python3Parser.NUMBER)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Signed_real_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def real_number(self):
+ return self.getTypedRuleContext(Python3Parser.Real_numberContext, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_signed_real_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSigned_real_number"):
+ listener.enterSigned_real_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSigned_real_number"):
+ listener.exitSigned_real_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSigned_real_number"):
+ return visitor.visitSigned_real_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def signed_real_number(self):
+
+ localctx = Python3Parser.Signed_real_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 128, self.RULE_signed_real_number)
+ try:
+ self.state = 903
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [4]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 900
+ self.real_number()
+ pass
+ elif token in [72]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 901
+ self.match(Python3Parser.MINUS)
+ self.state = 902
+ self.real_number()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Real_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_real_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReal_number"):
+ listener.enterReal_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReal_number"):
+ listener.exitReal_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReal_number"):
+ return visitor.visitReal_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def real_number(self):
+
+ localctx = Python3Parser.Real_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 130, self.RULE_real_number)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 905
+ self.match(Python3Parser.NUMBER)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Imaginary_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_imaginary_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImaginary_number"):
+ listener.enterImaginary_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImaginary_number"):
+ listener.exitImaginary_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImaginary_number"):
+ return visitor.visitImaginary_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def imaginary_number(self):
+
+ localctx = Python3Parser.Imaginary_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 132, self.RULE_imaginary_number)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 907
+ self.match(Python3Parser.NUMBER)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Capture_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_capture_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCapture_pattern"):
+ listener.enterCapture_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCapture_pattern"):
+ listener.exitCapture_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCapture_pattern"):
+ return visitor.visitCapture_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def capture_pattern(self):
+
+ localctx = Python3Parser.Capture_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 134, self.RULE_capture_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 909
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Pattern_capture_targetContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pattern_capture_target
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern_capture_target"):
+ listener.enterPattern_capture_target(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern_capture_target"):
+ listener.exitPattern_capture_target(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern_capture_target"):
+ return visitor.visitPattern_capture_target(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern_capture_target(self):
+
+ localctx = Python3Parser.Pattern_capture_targetContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 136, self.RULE_pattern_capture_target)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 911
+ self.name()
+ self.state = 912
+ if not self.CannotBeDotLpEq():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBeDotLpEq() ")
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Wildcard_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def UNDERSCORE(self):
+ return self.getToken(Python3Parser.UNDERSCORE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_wildcard_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcard_pattern"):
+ listener.enterWildcard_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcard_pattern"):
+ listener.exitWildcard_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcard_pattern"):
+ return visitor.visitWildcard_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcard_pattern(self):
+
+ localctx = Python3Parser.Wildcard_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 138, self.RULE_wildcard_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 914
+ self.match(Python3Parser.UNDERSCORE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Value_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_value_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterValue_pattern"):
+ listener.enterValue_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitValue_pattern"):
+ listener.exitValue_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitValue_pattern"):
+ return visitor.visitValue_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def value_pattern(self):
+
+ localctx = Python3Parser.Value_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 140, self.RULE_value_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 916
+ self.attr()
+ self.state = 917
+ if not self.CannotBeDotLpEq():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBeDotLpEq() ")
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AttrContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_attr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAttr"):
+ listener.enterAttr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAttr"):
+ listener.exitAttr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAttr"):
+ return visitor.visitAttr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def attr(self):
+
+ localctx = Python3Parser.AttrContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 142, self.RULE_attr)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 919
+ self.name()
+ self.state = 922
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 920
+ self.match(Python3Parser.DOT)
+ self.state = 921
+ self.name()
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 924
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 114, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Name_or_attrContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_name_or_attr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterName_or_attr"):
+ listener.enterName_or_attr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitName_or_attr"):
+ listener.exitName_or_attr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitName_or_attr"):
+ return visitor.visitName_or_attr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def name_or_attr(self):
+
+ localctx = Python3Parser.Name_or_attrContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 144, self.RULE_name_or_attr)
+ try:
+ self.state = 928
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 115, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 926
+ self.attr()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 927
+ self.name()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Group_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_group_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGroup_pattern"):
+ listener.enterGroup_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGroup_pattern"):
+ listener.exitGroup_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGroup_pattern"):
+ return visitor.visitGroup_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def group_pattern(self):
+
+ localctx = Python3Parser.Group_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 146, self.RULE_group_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 930
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 931
+ self.pattern()
+ self.state = 932
+ self.match(Python3Parser.CLOSE_PAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def maybe_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def open_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSequence_pattern"):
+ listener.enterSequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSequence_pattern"):
+ listener.exitSequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSequence_pattern"):
+ return visitor.visitSequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def sequence_pattern(self):
+
+ localctx = Python3Parser.Sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 148, self.RULE_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 944
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [64]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 934
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 936
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 935
+ self.maybe_sequence_pattern()
+
+ self.state = 938
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [57]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 939
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 941
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 940
+ self.open_sequence_pattern()
+
+ self.state = 943
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Open_sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def maybe_star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def maybe_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_open_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOpen_sequence_pattern"):
+ listener.enterOpen_sequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOpen_sequence_pattern"):
+ listener.exitOpen_sequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOpen_sequence_pattern"):
+ return visitor.visitOpen_sequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def open_sequence_pattern(self):
+
+ localctx = Python3Parser.Open_sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 150, self.RULE_open_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 946
+ self.maybe_star_pattern()
+ self.state = 947
+ self.match(Python3Parser.COMMA)
+ self.state = 949
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 948
+ self.maybe_sequence_pattern()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Maybe_sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def maybe_star_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Maybe_star_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_maybe_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMaybe_sequence_pattern"):
+ listener.enterMaybe_sequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMaybe_sequence_pattern"):
+ listener.exitMaybe_sequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMaybe_sequence_pattern"):
+ return visitor.visitMaybe_sequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def maybe_sequence_pattern(self):
+
+ localctx = Python3Parser.Maybe_sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 152, self.RULE_maybe_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 951
+ self.maybe_star_pattern()
+ self.state = 956
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 120, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 952
+ self.match(Python3Parser.COMMA)
+ self.state = 953
+ self.maybe_star_pattern()
+ self.state = 958
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 120, self._ctx)
+
+ self.state = 960
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 959
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Maybe_star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Star_patternContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_maybe_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMaybe_star_pattern"):
+ listener.enterMaybe_star_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMaybe_star_pattern"):
+ listener.exitMaybe_star_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMaybe_star_pattern"):
+ return visitor.visitMaybe_star_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def maybe_star_pattern(self):
+
+ localctx = Python3Parser.Maybe_star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 154, self.RULE_maybe_star_pattern)
+ try:
+ self.state = 964
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 962
+ self.star_pattern()
+ pass
+ elif token in [3, 4, 20, 30, 31, 38, 40, 45, 57, 64, 72, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 963
+ self.pattern()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def wildcard_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_pattern"):
+ listener.enterStar_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_pattern"):
+ listener.exitStar_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_pattern"):
+ return visitor.visitStar_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_pattern(self):
+
+ localctx = Python3Parser.Star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 156, self.RULE_star_pattern)
+ try:
+ self.state = 970
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 123, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 966
+ self.match(Python3Parser.STAR)
+ self.state = 967
+ self.pattern_capture_target()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 968
+ self.match(Python3Parser.STAR)
+ self.state = 969
+ self.wildcard_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Mapping_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_BRACE(self):
+ return self.getToken(Python3Parser.OPEN_BRACE, 0)
+
+ def CLOSE_BRACE(self):
+ return self.getToken(Python3Parser.CLOSE_BRACE, 0)
+
+ def double_star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Double_star_patternContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def items_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Items_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_mapping_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMapping_pattern"):
+ listener.enterMapping_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMapping_pattern"):
+ listener.exitMapping_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMapping_pattern"):
+ return visitor.visitMapping_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def mapping_pattern(self):
+
+ localctx = Python3Parser.Mapping_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 158, self.RULE_mapping_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 997
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 127, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 972
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 973
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 974
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 975
+ self.double_star_pattern()
+ self.state = 977
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 976
+ self.match(Python3Parser.COMMA)
+
+ self.state = 979
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 981
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 982
+ self.items_pattern()
+ self.state = 983
+ self.match(Python3Parser.COMMA)
+ self.state = 984
+ self.double_star_pattern()
+ self.state = 986
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 985
+ self.match(Python3Parser.COMMA)
+
+ self.state = 988
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 990
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 991
+ self.items_pattern()
+ self.state = 993
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 992
+ self.match(Python3Parser.COMMA)
+
+ self.state = 995
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Items_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def key_value_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Key_value_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Key_value_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_items_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterItems_pattern"):
+ listener.enterItems_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitItems_pattern"):
+ listener.exitItems_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitItems_pattern"):
+ return visitor.visitItems_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def items_pattern(self):
+
+ localctx = Python3Parser.Items_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 160, self.RULE_items_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 999
+ self.key_value_pattern()
+ self.state = 1004
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 128, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1000
+ self.match(Python3Parser.COMMA)
+ self.state = 1001
+ self.key_value_pattern()
+ self.state = 1006
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 128, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Key_value_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def literal_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Literal_exprContext, 0)
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_key_value_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKey_value_pattern"):
+ listener.enterKey_value_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKey_value_pattern"):
+ listener.exitKey_value_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKey_value_pattern"):
+ return visitor.visitKey_value_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def key_value_pattern(self):
+
+ localctx = Python3Parser.Key_value_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 162, self.RULE_key_value_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1009
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 20, 31, 38, 72]:
+ self.state = 1007
+ self.literal_expr()
+ pass
+ elif token in [30, 40, 45]:
+ self.state = 1008
+ self.attr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1011
+ self.match(Python3Parser.COLON)
+ self.state = 1012
+ self.pattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Double_star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_double_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDouble_star_pattern"):
+ listener.enterDouble_star_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDouble_star_pattern"):
+ listener.exitDouble_star_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDouble_star_pattern"):
+ return visitor.visitDouble_star_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def double_star_pattern(self):
+
+ localctx = Python3Parser.Double_star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 164, self.RULE_double_star_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1014
+ self.match(Python3Parser.POWER)
+ self.state = 1015
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Class_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name_or_attr(self):
+ return self.getTypedRuleContext(Python3Parser.Name_or_attrContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def positional_patterns(self):
+ return self.getTypedRuleContext(Python3Parser.Positional_patternsContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def keyword_patterns(self):
+ return self.getTypedRuleContext(Python3Parser.Keyword_patternsContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_class_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClass_pattern"):
+ listener.enterClass_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClass_pattern"):
+ listener.exitClass_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClass_pattern"):
+ return visitor.visitClass_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def class_pattern(self):
+
+ localctx = Python3Parser.Class_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 166, self.RULE_class_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 1047
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 133, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1017
+ self.name_or_attr()
+ self.state = 1018
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1019
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1021
+ self.name_or_attr()
+ self.state = 1022
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1023
+ self.positional_patterns()
+ self.state = 1025
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1024
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1027
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1029
+ self.name_or_attr()
+ self.state = 1030
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1031
+ self.keyword_patterns()
+ self.state = 1033
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1032
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1035
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1037
+ self.name_or_attr()
+ self.state = 1038
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1039
+ self.positional_patterns()
+ self.state = 1040
+ self.match(Python3Parser.COMMA)
+ self.state = 1041
+ self.keyword_patterns()
+ self.state = 1043
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1042
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1045
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Positional_patternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.PatternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.PatternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_positional_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPositional_patterns"):
+ listener.enterPositional_patterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPositional_patterns"):
+ listener.exitPositional_patterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPositional_patterns"):
+ return visitor.visitPositional_patterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def positional_patterns(self):
+
+ localctx = Python3Parser.Positional_patternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 168, self.RULE_positional_patterns)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1049
+ self.pattern()
+ self.state = 1054
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 134, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1050
+ self.match(Python3Parser.COMMA)
+ self.state = 1051
+ self.pattern()
+ self.state = 1056
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 134, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Keyword_patternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def keyword_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Keyword_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Keyword_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_keyword_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKeyword_patterns"):
+ listener.enterKeyword_patterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKeyword_patterns"):
+ listener.exitKeyword_patterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKeyword_patterns"):
+ return visitor.visitKeyword_patterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def keyword_patterns(self):
+
+ localctx = Python3Parser.Keyword_patternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 170, self.RULE_keyword_patterns)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1057
+ self.keyword_pattern()
+ self.state = 1062
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 135, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1058
+ self.match(Python3Parser.COMMA)
+ self.state = 1059
+ self.keyword_pattern()
+ self.state = 1064
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 135, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Keyword_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_keyword_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKeyword_pattern"):
+ listener.enterKeyword_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKeyword_pattern"):
+ listener.exitKeyword_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKeyword_pattern"):
+ return visitor.visitKeyword_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def keyword_pattern(self):
+
+ localctx = Python3Parser.Keyword_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 172, self.RULE_keyword_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1065
+ self.name()
+ self.state = 1066
+ self.match(Python3Parser.ASSIGN)
+ self.state = 1067
+ self.pattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TestContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Or_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, i)
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def lambdef(self):
+ return self.getTypedRuleContext(Python3Parser.LambdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTest"):
+ listener.enterTest(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTest"):
+ listener.exitTest(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTest"):
+ return visitor.visitTest(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def test(self):
+
+ localctx = Python3Parser.TestContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 174, self.RULE_test)
+ self._la = 0 # Token type
+ try:
+ self.state = 1078
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1069
+ self.or_test()
+ self.state = 1075
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 25:
+ self.state = 1070
+ self.match(Python3Parser.IF)
+ self.state = 1071
+ self.or_test()
+ self.state = 1072
+ self.match(Python3Parser.ELSE)
+ self.state = 1073
+ self.test()
+
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1077
+ self.lambdef()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Test_nocondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_test(self):
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, 0)
+
+ def lambdef_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Lambdef_nocondContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_test_nocond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTest_nocond"):
+ listener.enterTest_nocond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTest_nocond"):
+ listener.exitTest_nocond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTest_nocond"):
+ return visitor.visitTest_nocond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def test_nocond(self):
+
+ localctx = Python3Parser.Test_nocondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 176, self.RULE_test_nocond)
+ try:
+ self.state = 1082
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1080
+ self.or_test()
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1081
+ self.lambdef_nocond()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LAMBDA(self):
+ return self.getToken(Python3Parser.LAMBDA, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def varargslist(self):
+ return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_lambdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdef"):
+ listener.enterLambdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdef"):
+ listener.exitLambdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdef"):
+ return visitor.visitLambdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdef(self):
+
+ localctx = Python3Parser.LambdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 178, self.RULE_lambdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1084
+ self.match(Python3Parser.LAMBDA)
+ self.state = 1086
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 1085
+ self.varargslist()
+
+ self.state = 1088
+ self.match(Python3Parser.COLON)
+ self.state = 1089
+ self.test()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Lambdef_nocondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LAMBDA(self):
+ return self.getToken(Python3Parser.LAMBDA, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0)
+
+ def varargslist(self):
+ return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_lambdef_nocond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdef_nocond"):
+ listener.enterLambdef_nocond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdef_nocond"):
+ listener.exitLambdef_nocond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdef_nocond"):
+ return visitor.visitLambdef_nocond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdef_nocond(self):
+
+ localctx = Python3Parser.Lambdef_nocondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 180, self.RULE_lambdef_nocond)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1091
+ self.match(Python3Parser.LAMBDA)
+ self.state = 1093
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 1092
+ self.varargslist()
+
+ self.state = 1095
+ self.match(Python3Parser.COLON)
+ self.state = 1096
+ self.test_nocond()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Or_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def and_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.And_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.And_testContext, i)
+
+ def OR(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.OR)
+ else:
+ return self.getToken(Python3Parser.OR, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_or_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOr_test"):
+ listener.enterOr_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOr_test"):
+ listener.exitOr_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOr_test"):
+ return visitor.visitOr_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def or_test(self):
+
+ localctx = Python3Parser.Or_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 182, self.RULE_or_test)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1098
+ self.and_test()
+ self.state = 1103
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 34:
+ self.state = 1099
+ self.match(Python3Parser.OR)
+ self.state = 1100
+ self.and_test()
+ self.state = 1105
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class And_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def not_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Not_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Not_testContext, i)
+
+ def AND(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.AND)
+ else:
+ return self.getToken(Python3Parser.AND, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_and_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnd_test"):
+ listener.enterAnd_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnd_test"):
+ listener.exitAnd_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnd_test"):
+ return visitor.visitAnd_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def and_test(self):
+
+ localctx = Python3Parser.And_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 184, self.RULE_and_test)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1106
+ self.not_test()
+ self.state = 1111
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 6:
+ self.state = 1107
+ self.match(Python3Parser.AND)
+ self.state = 1108
+ self.not_test()
+ self.state = 1113
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Not_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NOT(self):
+ return self.getToken(Python3Parser.NOT, 0)
+
+ def not_test(self):
+ return self.getTypedRuleContext(Python3Parser.Not_testContext, 0)
+
+ def comparison(self):
+ return self.getTypedRuleContext(Python3Parser.ComparisonContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_not_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNot_test"):
+ listener.enterNot_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNot_test"):
+ listener.exitNot_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNot_test"):
+ return visitor.visitNot_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def not_test(self):
+
+ localctx = Python3Parser.Not_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 186, self.RULE_not_test)
+ try:
+ self.state = 1117
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [33]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1114
+ self.match(Python3Parser.NOT)
+ self.state = 1115
+ self.not_test()
+ pass
+ elif token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1116
+ self.comparison()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ComparisonContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def comp_op(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Comp_opContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Comp_opContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comparison
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComparison"):
+ listener.enterComparison(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComparison"):
+ listener.exitComparison(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComparison"):
+ return visitor.visitComparison(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comparison(self):
+
+ localctx = Python3Parser.ComparisonContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 188, self.RULE_comparison)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1119
+ self.expr(0)
+ self.state = 1125
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 144, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1120
+ self.comp_op()
+ self.state = 1121
+ self.expr(0)
+ self.state = 1127
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 144, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_opContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LESS_THAN(self):
+ return self.getToken(Python3Parser.LESS_THAN, 0)
+
+ def GREATER_THAN(self):
+ return self.getToken(Python3Parser.GREATER_THAN, 0)
+
+ def EQUALS(self):
+ return self.getToken(Python3Parser.EQUALS, 0)
+
+ def GT_EQ(self):
+ return self.getToken(Python3Parser.GT_EQ, 0)
+
+ def LT_EQ(self):
+ return self.getToken(Python3Parser.LT_EQ, 0)
+
+ def NOT_EQ_1(self):
+ return self.getToken(Python3Parser.NOT_EQ_1, 0)
+
+ def NOT_EQ_2(self):
+ return self.getToken(Python3Parser.NOT_EQ_2, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def NOT(self):
+ return self.getToken(Python3Parser.NOT, 0)
+
+ def IS(self):
+ return self.getToken(Python3Parser.IS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_op
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_op"):
+ listener.enterComp_op(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_op"):
+ listener.exitComp_op(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_op"):
+ return visitor.visitComp_op(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_op(self):
+
+ localctx = Python3Parser.Comp_opContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 190, self.RULE_comp_op)
+ try:
+ self.state = 1141
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 145, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1128
+ self.match(Python3Parser.LESS_THAN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1129
+ self.match(Python3Parser.GREATER_THAN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1130
+ self.match(Python3Parser.EQUALS)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1131
+ self.match(Python3Parser.GT_EQ)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1132
+ self.match(Python3Parser.LT_EQ)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1133
+ self.match(Python3Parser.NOT_EQ_1)
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1134
+ self.match(Python3Parser.NOT_EQ_2)
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1135
+ self.match(Python3Parser.IN)
+ pass
+
+ elif la_ == 9:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1136
+ self.match(Python3Parser.NOT)
+ self.state = 1137
+ self.match(Python3Parser.IN)
+ pass
+
+ elif la_ == 10:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1138
+ self.match(Python3Parser.IS)
+ pass
+
+ elif la_ == 11:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 1139
+ self.match(Python3Parser.IS)
+ self.state = 1140
+ self.match(Python3Parser.NOT)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_expr"):
+ listener.enterStar_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_expr"):
+ listener.exitStar_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_expr"):
+ return visitor.visitStar_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_expr(self):
+
+ localctx = Python3Parser.Star_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 192, self.RULE_star_expr)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1143
+ self.match(Python3Parser.STAR)
+ self.state = 1144
+ self.expr(0)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def atom_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Atom_exprContext, 0)
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def ADD(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ADD)
+ else:
+ return self.getToken(Python3Parser.ADD, i)
+
+ def MINUS(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.MINUS)
+ else:
+ return self.getToken(Python3Parser.MINUS, i)
+
+ def NOT_OP(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NOT_OP)
+ else:
+ return self.getToken(Python3Parser.NOT_OP, i)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def AT(self):
+ return self.getToken(Python3Parser.AT, 0)
+
+ def DIV(self):
+ return self.getToken(Python3Parser.DIV, 0)
+
+ def MOD(self):
+ return self.getToken(Python3Parser.MOD, 0)
+
+ def IDIV(self):
+ return self.getToken(Python3Parser.IDIV, 0)
+
+ def LEFT_SHIFT(self):
+ return self.getToken(Python3Parser.LEFT_SHIFT, 0)
+
+ def RIGHT_SHIFT(self):
+ return self.getToken(Python3Parser.RIGHT_SHIFT, 0)
+
+ def AND_OP(self):
+ return self.getToken(Python3Parser.AND_OP, 0)
+
+ def XOR(self):
+ return self.getToken(Python3Parser.XOR, 0)
+
+ def OR_OP(self):
+ return self.getToken(Python3Parser.OR_OP, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpr"):
+ listener.enterExpr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpr"):
+ listener.exitExpr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpr"):
+ return visitor.visitExpr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expr(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Python3Parser.ExprContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 194
+ self.enterRecursionRule(localctx, 194, self.RULE_expr, _p)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1154
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 77]:
+ self.state = 1147
+ self.atom_expr()
+ pass
+ elif token in [71, 72, 76]:
+ self.state = 1149
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1148
+ _la = self._input.LA(1)
+ if not (((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & 35) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 1151
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 146, self._ctx)
+
+ self.state = 1153
+ self.expr(7)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 1179
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 149, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 1177
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 148, self._ctx)
+ if la_ == 1:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1156
+ if not self.precpred(self._ctx, 8):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 8)")
+ self.state = 1157
+ self.match(Python3Parser.POWER)
+ self.state = 1158
+ self.expr(9)
+ pass
+
+ elif la_ == 2:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1159
+ if not self.precpred(self._ctx, 6):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 6)")
+ self.state = 1160
+ _la = self._input.LA(1)
+ if not (((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & 1074659329) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1161
+ self.expr(7)
+ pass
+
+ elif la_ == 3:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1162
+ if not self.precpred(self._ctx, 5):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+ self.state = 1163
+ _la = self._input.LA(1)
+ if not (_la == 71 or _la == 72):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1164
+ self.expr(6)
+ pass
+
+ elif la_ == 4:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1165
+ if not self.precpred(self._ctx, 4):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+ self.state = 1166
+ _la = self._input.LA(1)
+ if not (_la == 69 or _la == 70):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1167
+ self.expr(5)
+ pass
+
+ elif la_ == 5:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1168
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 1169
+ self.match(Python3Parser.AND_OP)
+ self.state = 1170
+ self.expr(4)
+ pass
+
+ elif la_ == 6:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1171
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 1172
+ self.match(Python3Parser.XOR)
+ self.state = 1173
+ self.expr(3)
+ pass
+
+ elif la_ == 7:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1174
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 1175
+ self.match(Python3Parser.OR_OP)
+ self.state = 1176
+ self.expr(2)
+ pass
+
+ self.state = 1181
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 149, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class Atom_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def atom(self):
+ return self.getTypedRuleContext(Python3Parser.AtomContext, 0)
+
+ def AWAIT(self):
+ return self.getToken(Python3Parser.AWAIT, 0)
+
+ def trailer(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TrailerContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TrailerContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_atom_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAtom_expr"):
+ listener.enterAtom_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAtom_expr"):
+ listener.exitAtom_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAtom_expr"):
+ return visitor.visitAtom_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def atom_expr(self):
+
+ localctx = Python3Parser.Atom_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 196, self.RULE_atom_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1183
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 10:
+ self.state = 1182
+ self.match(Python3Parser.AWAIT)
+
+ self.state = 1185
+ self.atom()
+ self.state = 1189
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 151, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1186
+ self.trailer()
+ self.state = 1191
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 151, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AtomContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def yield_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0)
+
+ def testlist_comp(self):
+ return self.getTypedRuleContext(Python3Parser.Testlist_compContext, 0)
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def OPEN_BRACE(self):
+ return self.getToken(Python3Parser.OPEN_BRACE, 0)
+
+ def CLOSE_BRACE(self):
+ return self.getToken(Python3Parser.CLOSE_BRACE, 0)
+
+ def dictorsetmaker(self):
+ return self.getTypedRuleContext(Python3Parser.DictorsetmakerContext, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def STRING(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.STRING)
+ else:
+ return self.getToken(Python3Parser.STRING, i)
+
+ def ELLIPSIS(self):
+ return self.getToken(Python3Parser.ELLIPSIS, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_atom
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAtom"):
+ listener.enterAtom(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAtom"):
+ listener.exitAtom(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAtom"):
+ return visitor.visitAtom(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def atom(self):
+
+ localctx = Python3Parser.AtomContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 198, self.RULE_atom)
+ self._la = 0 # Token type
+ try:
+ self.state = 1219
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [57]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1192
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1195
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 1193
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 1194
+ self.testlist_comp()
+ pass
+ elif token in [58]:
+ pass
+ else:
+ pass
+ self.state = 1197
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1198
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 1200
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1199
+ self.testlist_comp()
+
+ self.state = 1202
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [77]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1203
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 1205
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1204
+ self.dictorsetmaker()
+
+ self.state = 1207
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+ elif token in [30, 40, 45]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1208
+ self.name()
+ pass
+ elif token in [4]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1209
+ self.match(Python3Parser.NUMBER)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1211
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1210
+ self.match(Python3Parser.STRING)
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 1213
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 155, self._ctx)
+
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1215
+ self.match(Python3Parser.ELLIPSIS)
+ pass
+ elif token in [31]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1216
+ self.match(Python3Parser.NONE)
+ pass
+ elif token in [38]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1217
+ self.match(Python3Parser.TRUE)
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1218
+ self.match(Python3Parser.FALSE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NAME(self):
+ return self.getToken(Python3Parser.NAME, 0)
+
+ def UNDERSCORE(self):
+ return self.getToken(Python3Parser.UNDERSCORE, 0)
+
+ def MATCH(self):
+ return self.getToken(Python3Parser.MATCH, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterName"):
+ listener.enterName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitName"):
+ listener.exitName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitName"):
+ return visitor.visitName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def name(self):
+
+ localctx = Python3Parser.NameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 200, self.RULE_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1221
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Testlist_compContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist_comp
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist_comp"):
+ listener.enterTestlist_comp(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist_comp"):
+ listener.exitTestlist_comp(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist_comp"):
+ return visitor.visitTestlist_comp(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist_comp(self):
+
+ localctx = Python3Parser.Testlist_compContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 202, self.RULE_testlist_comp)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1225
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1223
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1224
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1241
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1227
+ self.comp_for()
+ pass
+ elif token in [58, 59, 65]:
+ self.state = 1235
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 159, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1228
+ self.match(Python3Parser.COMMA)
+ self.state = 1231
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1229
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1230
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1237
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 159, self._ctx)
+
+ self.state = 1239
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1238
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TrailerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def subscriptlist(self):
+ return self.getTypedRuleContext(Python3Parser.SubscriptlistContext, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def DOT(self):
+ return self.getToken(Python3Parser.DOT, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_trailer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTrailer"):
+ listener.enterTrailer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTrailer"):
+ listener.exitTrailer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTrailer"):
+ return visitor.visitTrailer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def trailer(self):
+
+ localctx = Python3Parser.TrailerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 204, self.RULE_trailer)
+ self._la = 0 # Token type
+ try:
+ self.state = 1254
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [57]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1243
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1245
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1244
+ self.arglist()
+
+ self.state = 1247
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1248
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 1249
+ self.subscriptlist()
+ self.state = 1250
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [54]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1252
+ self.match(Python3Parser.DOT)
+ self.state = 1253
+ self.name()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SubscriptlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def subscript_(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Subscript_Context)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Subscript_Context, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subscriptlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubscriptlist"):
+ listener.enterSubscriptlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubscriptlist"):
+ listener.exitSubscriptlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubscriptlist"):
+ return visitor.visitSubscriptlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subscriptlist(self):
+
+ localctx = Python3Parser.SubscriptlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 206, self.RULE_subscriptlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1256
+ self.subscript_()
+ self.state = 1261
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 164, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1257
+ self.match(Python3Parser.COMMA)
+ self.state = 1258
+ self.subscript_()
+ self.state = 1263
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 164, self._ctx)
+
+ self.state = 1265
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1264
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Subscript_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def sliceop(self):
+ return self.getTypedRuleContext(Python3Parser.SliceopContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subscript_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubscript_"):
+ listener.enterSubscript_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubscript_"):
+ listener.exitSubscript_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubscript_"):
+ return visitor.visitSubscript_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subscript_(self):
+
+ localctx = Python3Parser.Subscript_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 208, self.RULE_subscript_)
+ self._la = 0 # Token type
+ try:
+ self.state = 1278
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 169, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1267
+ self.test()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1269
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1268
+ self.test()
+
+ self.state = 1271
+ self.match(Python3Parser.COLON)
+ self.state = 1273
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1272
+ self.test()
+
+ self.state = 1276
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 60:
+ self.state = 1275
+ self.sliceop()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SliceopContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_sliceop
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSliceop"):
+ listener.enterSliceop(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSliceop"):
+ listener.exitSliceop(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSliceop"):
+ return visitor.visitSliceop(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def sliceop(self):
+
+ localctx = Python3Parser.SliceopContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 210, self.RULE_sliceop)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1280
+ self.match(Python3Parser.COLON)
+ self.state = 1282
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1281
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExprlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_exprlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExprlist"):
+ listener.enterExprlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExprlist"):
+ listener.exitExprlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExprlist"):
+ return visitor.visitExprlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exprlist(self):
+
+ localctx = Python3Parser.ExprlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 212, self.RULE_exprlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1286
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1284
+ self.expr(0)
+ pass
+ elif token in [56]:
+ self.state = 1285
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1295
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 173, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1288
+ self.match(Python3Parser.COMMA)
+ self.state = 1291
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1289
+ self.expr(0)
+ pass
+ elif token in [56]:
+ self.state = 1290
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1297
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 173, self._ctx)
+
+ self.state = 1299
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1298
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TestlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist"):
+ listener.enterTestlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist"):
+ listener.exitTestlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist"):
+ return visitor.visitTestlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist(self):
+
+ localctx = Python3Parser.TestlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 214, self.RULE_testlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1301
+ self.test()
+ self.state = 1306
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 175, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1302
+ self.match(Python3Parser.COMMA)
+ self.state = 1303
+ self.test()
+ self.state = 1308
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 175, self._ctx)
+
+ self.state = 1310
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1309
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DictorsetmakerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def POWER(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.POWER)
+ else:
+ return self.getToken(Python3Parser.POWER, i)
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dictorsetmaker
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDictorsetmaker"):
+ listener.enterDictorsetmaker(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDictorsetmaker"):
+ listener.exitDictorsetmaker(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDictorsetmaker"):
+ return visitor.visitDictorsetmaker(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dictorsetmaker(self):
+
+ localctx = Python3Parser.DictorsetmakerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 216, self.RULE_dictorsetmaker)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1360
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 187, self._ctx)
+ if la_ == 1:
+ self.state = 1318
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1312
+ self.test()
+ self.state = 1313
+ self.match(Python3Parser.COLON)
+ self.state = 1314
+ self.test()
+ pass
+ elif token in [62]:
+ self.state = 1316
+ self.match(Python3Parser.POWER)
+ self.state = 1317
+ self.expr(0)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1338
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1320
+ self.comp_for()
+ pass
+ elif token in [59, 78]:
+ self.state = 1332
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1321
+ self.match(Python3Parser.COMMA)
+ self.state = 1328
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1322
+ self.test()
+ self.state = 1323
+ self.match(Python3Parser.COLON)
+ self.state = 1324
+ self.test()
+ pass
+ elif token in [62]:
+ self.state = 1326
+ self.match(Python3Parser.POWER)
+ self.state = 1327
+ self.expr(0)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1334
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+
+ self.state = 1336
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1335
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+
+ elif la_ == 2:
+ self.state = 1342
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1340
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1341
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1358
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1344
+ self.comp_for()
+ pass
+ elif token in [59, 78]:
+ self.state = 1352
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1345
+ self.match(Python3Parser.COMMA)
+ self.state = 1348
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1346
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1347
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1354
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)
+
+ self.state = 1356
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1355
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CLASS(self):
+ return self.getToken(Python3Parser.CLASS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_classdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassdef"):
+ listener.enterClassdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassdef"):
+ listener.exitClassdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassdef"):
+ return visitor.visitClassdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classdef(self):
+
+ localctx = Python3Parser.ClassdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 218, self.RULE_classdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1362
+ self.match(Python3Parser.CLASS)
+ self.state = 1363
+ self.name()
+ self.state = 1369
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 57:
+ self.state = 1364
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1365
+ self.arglist()
+
+ self.state = 1368
+ self.match(Python3Parser.CLOSE_PAREN)
+
+ self.state = 1371
+ self.match(Python3Parser.COLON)
+ self.state = 1372
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArglistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def argument(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ArgumentContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ArgumentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_arglist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArglist"):
+ listener.enterArglist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArglist"):
+ listener.exitArglist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArglist"):
+ return visitor.visitArglist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arglist(self):
+
+ localctx = Python3Parser.ArglistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 220, self.RULE_arglist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1374
+ self.argument()
+ self.state = 1379
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 190, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1375
+ self.match(Python3Parser.COMMA)
+ self.state = 1376
+ self.argument()
+ self.state = 1381
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 190, self._ctx)
+
+ self.state = 1383
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1382
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArgumentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_argument
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArgument"):
+ listener.enterArgument(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArgument"):
+ listener.exitArgument(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArgument"):
+ return visitor.visitArgument(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def argument(self):
+
+ localctx = Python3Parser.ArgumentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 222, self.RULE_argument)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1397
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 193, self._ctx)
+ if la_ == 1:
+ self.state = 1385
+ self.test()
+ self.state = 1387
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 9 or _la == 22:
+ self.state = 1386
+ self.comp_for()
+
+ pass
+
+ elif la_ == 2:
+ self.state = 1389
+ self.test()
+ self.state = 1390
+ self.match(Python3Parser.ASSIGN)
+ self.state = 1391
+ self.test()
+ pass
+
+ elif la_ == 3:
+ self.state = 1393
+ self.match(Python3Parser.POWER)
+ self.state = 1394
+ self.test()
+ pass
+
+ elif la_ == 4:
+ self.state = 1395
+ self.match(Python3Parser.STAR)
+ self.state = 1396
+ self.test()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_iterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def comp_if(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_ifContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_iter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_iter"):
+ listener.enterComp_iter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_iter"):
+ listener.exitComp_iter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_iter"):
+ return visitor.visitComp_iter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_iter(self):
+
+ localctx = Python3Parser.Comp_iterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 224, self.RULE_comp_iter)
+ try:
+ self.state = 1401
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1399
+ self.comp_for()
+ pass
+ elif token in [25]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1400
+ self.comp_if()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_forContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Python3Parser.FOR, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def or_test(self):
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, 0)
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def comp_iter(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_for
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_for"):
+ listener.enterComp_for(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener,
+):
+ listener.exitComp_for(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_for"):
+ return visitor.visitComp_for(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_for(self):
+
+ localctx = Python3Parser.Comp_forContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 226, self.RULE_comp_for)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1404
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 9:
+ self.state = 1403
+ self.match(Python3Parser.ASYNC)
+
+ self.state = 1406
+ self.match(Python3Parser.FOR)
+ self.state = 1407
+ self.exprlist()
+ self.state = 1408
+ self.match(Python3Parser.IN)
+ self.state = 1409
+ self.or_test()
+ self.state = 1411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0):
+ self.state = 1410
+ self.comp_iter()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_ifContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0)
+
+ def comp_iter(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_if
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_if"):
+ listener.enterComp_if(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_if"):
+ listener.exitComp_if(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_if"):
+ return visitor.visitComp_if(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_if(self):
+
+ localctx = Python3Parser.Comp_ifContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 228, self.RULE_comp_if)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1413
+ self.match(Python3Parser.IF)
+ self.state = 1414
+ self.test_nocond()
+ self.state = 1416
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0):
+ self.state = 1415
+ self.comp_iter()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Encoding_declContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_encoding_decl
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEncoding_decl"):
+ listener.enterEncoding_decl(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEncoding_decl"):
+ listener.exitEncoding_decl(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEncoding_decl"):
+ return visitor.visitEncoding_decl(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def encoding_decl(self):
+
+ localctx = Python3Parser.Encoding_declContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 230, self.RULE_encoding_decl)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1418
+ self.name()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def YIELD(self):
+ return self.getToken(Python3Parser.YIELD, 0)
+
+ def yield_arg(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_argContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_expr"):
+ listener.enterYield_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_expr"):
+ listener.exitYield_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_expr"):
+ return visitor.visitYield_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_expr(self):
+
+ localctx = Python3Parser.Yield_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 232, self.RULE_yield_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1420
+ self.match(Python3Parser.YIELD)
+ self.state = 1422
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556213912600) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1421
+ self.yield_arg()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_argContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_arg
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_arg"):
+ listener.enterYield_arg(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_arg"):
+ listener.exitYield_arg(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_arg"):
+ return visitor.visitYield_arg(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_arg(self):
+
+ localctx = Python3Parser.Yield_argContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 234, self.RULE_yield_arg)
+ try:
+ self.state = 1427
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [23]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1424
+ self.match(Python3Parser.FROM)
+ self.state = 1425
+ self.test()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1426
+ self.testlist()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StringsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STRING(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.STRING)
+ else:
+ return self.getToken(Python3Parser.STRING, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_strings
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStrings"):
+ listener.enterStrings(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStrings"):
+ listener.exitStrings(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStrings"):
+ return visitor.visitStrings(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def strings(self):
+
+ localctx = Python3Parser.StringsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 236, self.RULE_strings)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1430
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 1429
+ self.match(Python3Parser.STRING)
+ self.state = 1432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 3):
+ break
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
+ if self._predicates == None:
+ self._predicates = dict()
+ self._predicates[60] = self.literal_pattern_sempred
+ self._predicates[61] = self.literal_expr_sempred
+ self._predicates[68] = self.pattern_capture_target_sempred
+ self._predicates[70] = self.value_pattern_sempred
+ self._predicates[97] = self.expr_sempred
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is None:
+ raise Exception("No predicate with index:" + str(ruleIndex))
+ else:
+ return pred(localctx, predIndex)
+
+ def literal_pattern_sempred(self, localctx: Literal_patternContext, predIndex: int):
+ if predIndex == 0:
+ return self.CannotBePlusMinus()
+
+ def literal_expr_sempred(self, localctx: Literal_exprContext, predIndex: int):
+ if predIndex == 1:
+ return self.CannotBePlusMinus()
+
+ def pattern_capture_target_sempred(self, localctx: Pattern_capture_targetContext, predIndex: int):
+ if predIndex == 2:
+ return self.CannotBeDotLpEq()
+
+ def value_pattern_sempred(self, localctx: Value_patternContext, predIndex: int):
+ if predIndex == 3:
+ return self.CannotBeDotLpEq()
+
+ def expr_sempred(self, localctx: ExprContext, predIndex: int):
+ if predIndex == 4:
+ return self.precpred(self._ctx, 8)
+
+ if predIndex == 5:
+ return self.precpred(self._ctx, 6)
+
+ if predIndex == 6:
+ return self.precpred(self._ctx, 5)
+
+ if predIndex == 7:
+ return self.precpred(self._ctx, 4)
+
+ if predIndex == 8:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 9:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 10:
+ return self.precpred(self._ctx, 1)
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
new file mode 100644
index 000000000..ed67f5c29
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
@@ -0,0 +1,10 @@
+from antlr4 import *
+
+
+class Python3ParserBase(Parser):
+
+ def CannotBePlusMinus(self) -> bool:
+ return True
+
+ def CannotBeDotLpEq(self) -> bool:
+ return True
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
new file mode 100644
index 000000000..8117a775d
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
@@ -0,0 +1,1083 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+if "." in __name__:
+ from .Python3Parser import Python3Parser
+else:
+ from Python3Parser import Python3Parser
+
+# This class defines a complete listener for a parse tree produced by Python3Parser.
+class Python3ParserListener(ParseTreeListener):
+
+ # Enter a parse tree produced by Python3Parser#single_input.
+ def enterSingle_input(self, ctx:Python3Parser.Single_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#single_input.
+ def exitSingle_input(self, ctx:Python3Parser.Single_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#file_input.
+ def enterFile_input(self, ctx:Python3Parser.File_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#file_input.
+ def exitFile_input(self, ctx:Python3Parser.File_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#eval_input.
+ def enterEval_input(self, ctx:Python3Parser.Eval_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#eval_input.
+ def exitEval_input(self, ctx:Python3Parser.Eval_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorator.
+ def enterDecorator(self, ctx:Python3Parser.DecoratorContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorator.
+ def exitDecorator(self, ctx:Python3Parser.DecoratorContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorators.
+ def enterDecorators(self, ctx:Python3Parser.DecoratorsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorators.
+ def exitDecorators(self, ctx:Python3Parser.DecoratorsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorated.
+ def enterDecorated(self, ctx:Python3Parser.DecoratedContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorated.
+ def exitDecorated(self, ctx:Python3Parser.DecoratedContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#async_funcdef.
+ def enterAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#async_funcdef.
+ def exitAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#funcdef.
+ def enterFuncdef(self, ctx:Python3Parser.FuncdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#funcdef.
+ def exitFuncdef(self, ctx:Python3Parser.FuncdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#parameters.
+ def enterParameters(self, ctx:Python3Parser.ParametersContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#parameters.
+ def exitParameters(self, ctx:Python3Parser.ParametersContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#typedargslist.
+ def enterTypedargslist(self, ctx:Python3Parser.TypedargslistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#typedargslist.
+ def exitTypedargslist(self, ctx:Python3Parser.TypedargslistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#tfpdef.
+ def enterTfpdef(self, ctx:Python3Parser.TfpdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#tfpdef.
+ def exitTfpdef(self, ctx:Python3Parser.TfpdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#varargslist.
+ def enterVarargslist(self, ctx:Python3Parser.VarargslistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#varargslist.
+ def exitVarargslist(self, ctx:Python3Parser.VarargslistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#vfpdef.
+ def enterVfpdef(self, ctx:Python3Parser.VfpdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#vfpdef.
+ def exitVfpdef(self, ctx:Python3Parser.VfpdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#stmt.
+ def enterStmt(self, ctx:Python3Parser.StmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#stmt.
+ def exitStmt(self, ctx:Python3Parser.StmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#simple_stmts.
+ def enterSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#simple_stmts.
+ def exitSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#simple_stmt.
+ def enterSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#simple_stmt.
+ def exitSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#expr_stmt.
+ def enterExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#expr_stmt.
+ def exitExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#annassign.
+ def enterAnnassign(self, ctx:Python3Parser.AnnassignContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#annassign.
+ def exitAnnassign(self, ctx:Python3Parser.AnnassignContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist_star_expr.
+ def enterTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist_star_expr.
+ def exitTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#augassign.
+ def enterAugassign(self, ctx:Python3Parser.AugassignContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#augassign.
+ def exitAugassign(self, ctx:Python3Parser.AugassignContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#del_stmt.
+ def enterDel_stmt(self, ctx:Python3Parser.Del_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#del_stmt.
+ def exitDel_stmt(self, ctx:Python3Parser.Del_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pass_stmt.
+ def enterPass_stmt(self, ctx:Python3Parser.Pass_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pass_stmt.
+ def exitPass_stmt(self, ctx:Python3Parser.Pass_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#flow_stmt.
+ def enterFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#flow_stmt.
+ def exitFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#break_stmt.
+ def enterBreak_stmt(self, ctx:Python3Parser.Break_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#break_stmt.
+ def exitBreak_stmt(self, ctx:Python3Parser.Break_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#continue_stmt.
+ def enterContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#continue_stmt.
+ def exitContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#return_stmt.
+ def enterReturn_stmt(self, ctx:Python3Parser.Return_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#return_stmt.
+ def exitReturn_stmt(self, ctx:Python3Parser.Return_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_stmt.
+ def enterYield_stmt(self, ctx:Python3Parser.Yield_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_stmt.
+ def exitYield_stmt(self, ctx:Python3Parser.Yield_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#raise_stmt.
+ def enterRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#raise_stmt.
+ def exitRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_stmt.
+ def enterImport_stmt(self, ctx:Python3Parser.Import_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_stmt.
+ def exitImport_stmt(self, ctx:Python3Parser.Import_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_name.
+ def enterImport_name(self, ctx:Python3Parser.Import_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_name.
+ def exitImport_name(self, ctx:Python3Parser.Import_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_from.
+ def enterImport_from(self, ctx:Python3Parser.Import_fromContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_from.
+ def exitImport_from(self, ctx:Python3Parser.Import_fromContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_as_name.
+ def enterImport_as_name(self, ctx:Python3Parser.Import_as_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_as_name.
+ def exitImport_as_name(self, ctx:Python3Parser.Import_as_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_as_name.
+ def enterDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_as_name.
+ def exitDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_as_names.
+ def enterImport_as_names(self, ctx:Python3Parser.Import_as_namesContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_as_names.
+ def exitImport_as_names(self, ctx:Python3Parser.Import_as_namesContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_as_names.
+ def enterDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_as_names.
+ def exitDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_name.
+ def enterDotted_name(self, ctx:Python3Parser.Dotted_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_name.
+ def exitDotted_name(self, ctx:Python3Parser.Dotted_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#global_stmt.
+ def enterGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#global_stmt.
+ def exitGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#nonlocal_stmt.
+ def enterNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#nonlocal_stmt.
+ def exitNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#assert_stmt.
+ def enterAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#assert_stmt.
+ def exitAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#compound_stmt.
+ def enterCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#compound_stmt.
+ def exitCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#async_stmt.
+ def enterAsync_stmt(self, ctx:Python3Parser.Async_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#async_stmt.
+ def exitAsync_stmt(self, ctx:Python3Parser.Async_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#if_stmt.
+ def enterIf_stmt(self, ctx:Python3Parser.If_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#if_stmt.
+ def exitIf_stmt(self, ctx:Python3Parser.If_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#while_stmt.
+ def enterWhile_stmt(self, ctx:Python3Parser.While_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#while_stmt.
+ def exitWhile_stmt(self, ctx:Python3Parser.While_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#for_stmt.
+ def enterFor_stmt(self, ctx:Python3Parser.For_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#for_stmt.
+ def exitFor_stmt(self, ctx:Python3Parser.For_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#try_stmt.
+ def enterTry_stmt(self, ctx:Python3Parser.Try_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#try_stmt.
+ def exitTry_stmt(self, ctx:Python3Parser.Try_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#with_stmt.
+ def enterWith_stmt(self, ctx:Python3Parser.With_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#with_stmt.
+ def exitWith_stmt(self, ctx:Python3Parser.With_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#with_item.
+ def enterWith_item(self, ctx:Python3Parser.With_itemContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#with_item.
+ def exitWith_item(self, ctx:Python3Parser.With_itemContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#except_clause.
+ def enterExcept_clause(self, ctx:Python3Parser.Except_clauseContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#except_clause.
+ def exitExcept_clause(self, ctx:Python3Parser.Except_clauseContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#block.
+ def enterBlock(self, ctx:Python3Parser.BlockContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#block.
+ def exitBlock(self, ctx:Python3Parser.BlockContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#match_stmt.
+ def enterMatch_stmt(self, ctx:Python3Parser.Match_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#match_stmt.
+ def exitMatch_stmt(self, ctx:Python3Parser.Match_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subject_expr.
+ def enterSubject_expr(self, ctx:Python3Parser.Subject_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subject_expr.
+ def exitSubject_expr(self, ctx:Python3Parser.Subject_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_named_expressions.
+ def enterStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_named_expressions.
+ def exitStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_named_expression.
+ def enterStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_named_expression.
+ def exitStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#case_block.
+ def enterCase_block(self, ctx:Python3Parser.Case_blockContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#case_block.
+ def exitCase_block(self, ctx:Python3Parser.Case_blockContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#guard.
+ def enterGuard(self, ctx:Python3Parser.GuardContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#guard.
+ def exitGuard(self, ctx:Python3Parser.GuardContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#patterns.
+ def enterPatterns(self, ctx:Python3Parser.PatternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#patterns.
+ def exitPatterns(self, ctx:Python3Parser.PatternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pattern.
+ def enterPattern(self, ctx:Python3Parser.PatternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pattern.
+ def exitPattern(self, ctx:Python3Parser.PatternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#as_pattern.
+ def enterAs_pattern(self, ctx:Python3Parser.As_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#as_pattern.
+ def exitAs_pattern(self, ctx:Python3Parser.As_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#or_pattern.
+ def enterOr_pattern(self, ctx:Python3Parser.Or_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#or_pattern.
+ def exitOr_pattern(self, ctx:Python3Parser.Or_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#closed_pattern.
+ def enterClosed_pattern(self, ctx:Python3Parser.Closed_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#closed_pattern.
+ def exitClosed_pattern(self, ctx:Python3Parser.Closed_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#literal_pattern.
+ def enterLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#literal_pattern.
+ def exitLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#literal_expr.
+ def enterLiteral_expr(self, ctx:Python3Parser.Literal_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#literal_expr.
+ def exitLiteral_expr(self, ctx:Python3Parser.Literal_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#complex_number.
+ def enterComplex_number(self, ctx:Python3Parser.Complex_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#complex_number.
+ def exitComplex_number(self, ctx:Python3Parser.Complex_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#signed_number.
+ def enterSigned_number(self, ctx:Python3Parser.Signed_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#signed_number.
+ def exitSigned_number(self, ctx:Python3Parser.Signed_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#signed_real_number.
+ def enterSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#signed_real_number.
+ def exitSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#real_number.
+ def enterReal_number(self, ctx:Python3Parser.Real_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#real_number.
+ def exitReal_number(self, ctx:Python3Parser.Real_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#imaginary_number.
+ def enterImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#imaginary_number.
+ def exitImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#capture_pattern.
+ def enterCapture_pattern(self, ctx:Python3Parser.Capture_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#capture_pattern.
+ def exitCapture_pattern(self, ctx:Python3Parser.Capture_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pattern_capture_target.
+ def enterPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pattern_capture_target.
+ def exitPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#wildcard_pattern.
+ def enterWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#wildcard_pattern.
+ def exitWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#value_pattern.
+ def enterValue_pattern(self, ctx:Python3Parser.Value_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#value_pattern.
+ def exitValue_pattern(self, ctx:Python3Parser.Value_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#attr.
+ def enterAttr(self, ctx:Python3Parser.AttrContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#attr.
+ def exitAttr(self, ctx:Python3Parser.AttrContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#name_or_attr.
+ def enterName_or_attr(self, ctx:Python3Parser.Name_or_attrContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#name_or_attr.
+ def exitName_or_attr(self, ctx:Python3Parser.Name_or_attrContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#group_pattern.
+ def enterGroup_pattern(self, ctx:Python3Parser.Group_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#group_pattern.
+ def exitGroup_pattern(self, ctx:Python3Parser.Group_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#sequence_pattern.
+ def enterSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#sequence_pattern.
+ def exitSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#open_sequence_pattern.
+ def enterOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#open_sequence_pattern.
+ def exitOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def enterMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def exitMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#maybe_star_pattern.
+ def enterMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#maybe_star_pattern.
+ def exitMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_pattern.
+ def enterStar_pattern(self, ctx:Python3Parser.Star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_pattern.
+ def exitStar_pattern(self, ctx:Python3Parser.Star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#mapping_pattern.
+ def enterMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#mapping_pattern.
+ def exitMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#items_pattern.
+ def enterItems_pattern(self, ctx:Python3Parser.Items_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#items_pattern.
+ def exitItems_pattern(self, ctx:Python3Parser.Items_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#key_value_pattern.
+ def enterKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#key_value_pattern.
+ def exitKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#double_star_pattern.
+ def enterDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#double_star_pattern.
+ def exitDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#class_pattern.
+ def enterClass_pattern(self, ctx:Python3Parser.Class_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#class_pattern.
+ def exitClass_pattern(self, ctx:Python3Parser.Class_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#positional_patterns.
+ def enterPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#positional_patterns.
+ def exitPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#keyword_patterns.
+ def enterKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#keyword_patterns.
+ def exitKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#keyword_pattern.
+ def enterKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#keyword_pattern.
+ def exitKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#test.
+ def enterTest(self, ctx:Python3Parser.TestContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#test.
+ def exitTest(self, ctx:Python3Parser.TestContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#test_nocond.
+ def enterTest_nocond(self, ctx:Python3Parser.Test_nocondContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#test_nocond.
+ def exitTest_nocond(self, ctx:Python3Parser.Test_nocondContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#lambdef.
+ def enterLambdef(self, ctx:Python3Parser.LambdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#lambdef.
+ def exitLambdef(self, ctx:Python3Parser.LambdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#lambdef_nocond.
+ def enterLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#lambdef_nocond.
+ def exitLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#or_test.
+ def enterOr_test(self, ctx:Python3Parser.Or_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#or_test.
+ def exitOr_test(self, ctx:Python3Parser.Or_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#and_test.
+ def enterAnd_test(self, ctx:Python3Parser.And_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#and_test.
+ def exitAnd_test(self, ctx:Python3Parser.And_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#not_test.
+ def enterNot_test(self, ctx:Python3Parser.Not_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#not_test.
+ def exitNot_test(self, ctx:Python3Parser.Not_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comparison.
+ def enterComparison(self, ctx:Python3Parser.ComparisonContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comparison.
+ def exitComparison(self, ctx:Python3Parser.ComparisonContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_op.
+ def enterComp_op(self, ctx:Python3Parser.Comp_opContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_op.
+ def exitComp_op(self, ctx:Python3Parser.Comp_opContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_expr.
+ def enterStar_expr(self, ctx:Python3Parser.Star_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_expr.
+ def exitStar_expr(self, ctx:Python3Parser.Star_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#expr.
+ def enterExpr(self, ctx:Python3Parser.ExprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#expr.
+ def exitExpr(self, ctx:Python3Parser.ExprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#atom_expr.
+ def enterAtom_expr(self, ctx:Python3Parser.Atom_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#atom_expr.
+ def exitAtom_expr(self, ctx:Python3Parser.Atom_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#atom.
+ def enterAtom(self, ctx:Python3Parser.AtomContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#atom.
+ def exitAtom(self, ctx:Python3Parser.AtomContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#name.
+ def enterName(self, ctx:Python3Parser.NameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#name.
+ def exitName(self, ctx:Python3Parser.NameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist_comp.
+ def enterTestlist_comp(self, ctx:Python3Parser.Testlist_compContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist_comp.
+ def exitTestlist_comp(self, ctx:Python3Parser.Testlist_compContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#trailer.
+ def enterTrailer(self, ctx:Python3Parser.TrailerContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#trailer.
+ def exitTrailer(self, ctx:Python3Parser.TrailerContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subscriptlist.
+ def enterSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subscriptlist.
+ def exitSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subscript_.
+ def enterSubscript_(self, ctx:Python3Parser.Subscript_Context):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subscript_.
+ def exitSubscript_(self, ctx:Python3Parser.Subscript_Context):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#sliceop.
+ def enterSliceop(self, ctx:Python3Parser.SliceopContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#sliceop.
+ def exitSliceop(self, ctx:Python3Parser.SliceopContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#exprlist.
+ def enterExprlist(self, ctx:Python3Parser.ExprlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#exprlist.
+ def exitExprlist(self, ctx:Python3Parser.ExprlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist.
+ def enterTestlist(self, ctx:Python3Parser.TestlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist.
+ def exitTestlist(self, ctx:Python3Parser.TestlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dictorsetmaker.
+ def enterDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dictorsetmaker.
+ def exitDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#classdef.
+ def enterClassdef(self, ctx:Python3Parser.ClassdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#classdef.
+ def exitClassdef(self, ctx:Python3Parser.ClassdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#arglist.
+ def enterArglist(self, ctx:Python3Parser.ArglistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#arglist.
+ def exitArglist(self, ctx:Python3Parser.ArglistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#argument.
+ def enterArgument(self, ctx:Python3Parser.ArgumentContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#argument.
+ def exitArgument(self, ctx:Python3Parser.ArgumentContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_iter.
+ def enterComp_iter(self, ctx:Python3Parser.Comp_iterContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_iter.
+ def exitComp_iter(self, ctx:Python3Parser.Comp_iterContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_for.
+ def enterComp_for(self, ctx:Python3Parser.Comp_forContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_for.
+ def exitComp_for(self, ctx:Python3Parser.Comp_forContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_if.
+ def enterComp_if(self, ctx:Python3Parser.Comp_ifContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_if.
+ def exitComp_if(self, ctx:Python3Parser.Comp_ifContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#encoding_decl.
+ def enterEncoding_decl(self, ctx:Python3Parser.Encoding_declContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#encoding_decl.
+ def exitEncoding_decl(self, ctx:Python3Parser.Encoding_declContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_expr.
+ def enterYield_expr(self, ctx:Python3Parser.Yield_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_expr.
+ def exitYield_expr(self, ctx:Python3Parser.Yield_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_arg.
+ def enterYield_arg(self, ctx:Python3Parser.Yield_argContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_arg.
+ def exitYield_arg(self, ctx:Python3Parser.Yield_argContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#strings.
+ def enterStrings(self, ctx:Python3Parser.StringsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#strings.
+ def exitStrings(self, ctx:Python3Parser.StringsContext):
+ pass
+
+
+
+del Python3Parser
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
new file mode 100644
index 000000000..2baaa2317
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
@@ -0,0 +1,491 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+
+if "." in __name__:
+ from .Python3Parser import Python3Parser
+else:
+ from Python3Parser import Python3Parser
+
+
+# This class defines a complete generic visitor for a parse tree produced by Python3Parser.
+
+class Python3ParserVisitor(ParseTreeVisitor):
+
+ # Visit a parse tree produced by Python3Parser#single_input.
+ def visitSingle_input(self, ctx: Python3Parser.Single_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#file_input.
+ def visitFile_input(self, ctx: Python3Parser.File_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#eval_input.
+ def visitEval_input(self, ctx: Python3Parser.Eval_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorator.
+ def visitDecorator(self, ctx: Python3Parser.DecoratorContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorators.
+ def visitDecorators(self, ctx: Python3Parser.DecoratorsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorated.
+ def visitDecorated(self, ctx: Python3Parser.DecoratedContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#async_funcdef.
+ def visitAsync_funcdef(self, ctx: Python3Parser.Async_funcdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#funcdef.
+ def visitFuncdef(self, ctx: Python3Parser.FuncdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#parameters.
+ def visitParameters(self, ctx: Python3Parser.ParametersContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#typedargslist.
+ def visitTypedargslist(self, ctx: Python3Parser.TypedargslistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#tfpdef.
+ def visitTfpdef(self, ctx: Python3Parser.TfpdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#varargslist.
+ def visitVarargslist(self, ctx: Python3Parser.VarargslistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#vfpdef.
+ def visitVfpdef(self, ctx: Python3Parser.VfpdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#stmt.
+ def visitStmt(self, ctx: Python3Parser.StmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#simple_stmts.
+ def visitSimple_stmts(self, ctx: Python3Parser.Simple_stmtsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#simple_stmt.
+ def visitSimple_stmt(self, ctx: Python3Parser.Simple_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#expr_stmt.
+ def visitExpr_stmt(self, ctx: Python3Parser.Expr_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#annassign.
+ def visitAnnassign(self, ctx: Python3Parser.AnnassignContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist_star_expr.
+ def visitTestlist_star_expr(self, ctx: Python3Parser.Testlist_star_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#augassign.
+ def visitAugassign(self, ctx: Python3Parser.AugassignContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#del_stmt.
+ def visitDel_stmt(self, ctx: Python3Parser.Del_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pass_stmt.
+ def visitPass_stmt(self, ctx: Python3Parser.Pass_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#flow_stmt.
+ def visitFlow_stmt(self, ctx: Python3Parser.Flow_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#break_stmt.
+ def visitBreak_stmt(self, ctx: Python3Parser.Break_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#continue_stmt.
+ def visitContinue_stmt(self, ctx: Python3Parser.Continue_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#return_stmt.
+ def visitReturn_stmt(self, ctx: Python3Parser.Return_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_stmt.
+ def visitYield_stmt(self, ctx: Python3Parser.Yield_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#raise_stmt.
+ def visitRaise_stmt(self, ctx: Python3Parser.Raise_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_stmt.
+ def visitImport_stmt(self, ctx: Python3Parser.Import_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_name.
+ def visitImport_name(self, ctx: Python3Parser.Import_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_from.
+ def visitImport_from(self, ctx: Python3Parser.Import_fromContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_as_name.
+ def visitImport_as_name(self, ctx: Python3Parser.Import_as_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_as_name.
+ def visitDotted_as_name(self, ctx: Python3Parser.Dotted_as_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_as_names.
+ def visitImport_as_names(self, ctx: Python3Parser.Import_as_namesContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_as_names.
+ def visitDotted_as_names(self, ctx: Python3Parser.Dotted_as_namesContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_name.
+ def visitDotted_name(self, ctx: Python3Parser.Dotted_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#global_stmt.
+ def visitGlobal_stmt(self, ctx: Python3Parser.Global_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#nonlocal_stmt.
+ def visitNonlocal_stmt(self, ctx: Python3Parser.Nonlocal_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#assert_stmt.
+ def visitAssert_stmt(self, ctx: Python3Parser.Assert_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#compound_stmt.
+ def visitCompound_stmt(self, ctx: Python3Parser.Compound_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#async_stmt.
+ def visitAsync_stmt(self, ctx: Python3Parser.Async_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#if_stmt.
+ def visitIf_stmt(self, ctx: Python3Parser.If_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#while_stmt.
+ def visitWhile_stmt(self, ctx: Python3Parser.While_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#for_stmt.
+ def visitFor_stmt(self, ctx: Python3Parser.For_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#try_stmt.
+ def visitTry_stmt(self, ctx: Python3Parser.Try_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#with_stmt.
+ def visitWith_stmt(self, ctx: Python3Parser.With_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#with_item.
+ def visitWith_item(self, ctx: Python3Parser.With_itemContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#except_clause.
+ def visitExcept_clause(self, ctx: Python3Parser.Except_clauseContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#block.
+ def visitBlock(self, ctx: Python3Parser.BlockContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#match_stmt.
+ def visitMatch_stmt(self, ctx: Python3Parser.Match_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subject_expr.
+ def visitSubject_expr(self, ctx: Python3Parser.Subject_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_named_expressions.
+ def visitStar_named_expressions(self, ctx: Python3Parser.Star_named_expressionsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_named_expression.
+ def visitStar_named_expression(self, ctx: Python3Parser.Star_named_expressionContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#case_block.
+ def visitCase_block(self, ctx: Python3Parser.Case_blockContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#guard.
+ def visitGuard(self, ctx: Python3Parser.GuardContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#patterns.
+ def visitPatterns(self, ctx: Python3Parser.PatternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pattern.
+ def visitPattern(self, ctx: Python3Parser.PatternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#as_pattern.
+ def visitAs_pattern(self, ctx: Python3Parser.As_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#or_pattern.
+ def visitOr_pattern(self, ctx: Python3Parser.Or_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#closed_pattern.
+ def visitClosed_pattern(self, ctx: Python3Parser.Closed_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#literal_pattern.
+ def visitLiteral_pattern(self, ctx: Python3Parser.Literal_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#literal_expr.
+ def visitLiteral_expr(self, ctx: Python3Parser.Literal_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#complex_number.
+ def visitComplex_number(self, ctx: Python3Parser.Complex_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#signed_number.
+ def visitSigned_number(self, ctx: Python3Parser.Signed_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#signed_real_number.
+ def visitSigned_real_number(self, ctx: Python3Parser.Signed_real_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#real_number.
+ def visitReal_number(self, ctx: Python3Parser.Real_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#imaginary_number.
+ def visitImaginary_number(self, ctx: Python3Parser.Imaginary_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#capture_pattern.
+ def visitCapture_pattern(self, ctx: Python3Parser.Capture_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pattern_capture_target.
+ def visitPattern_capture_target(self, ctx: Python3Parser.Pattern_capture_targetContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#wildcard_pattern.
+ def visitWildcard_pattern(self, ctx: Python3Parser.Wildcard_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#value_pattern.
+ def visitValue_pattern(self, ctx: Python3Parser.Value_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#attr.
+ def visitAttr(self, ctx: Python3Parser.AttrContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#name_or_attr.
+ def visitName_or_attr(self, ctx: Python3Parser.Name_or_attrContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#group_pattern.
+ def visitGroup_pattern(self, ctx: Python3Parser.Group_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#sequence_pattern.
+ def visitSequence_pattern(self, ctx: Python3Parser.Sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#open_sequence_pattern.
+ def visitOpen_sequence_pattern(self, ctx: Python3Parser.Open_sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def visitMaybe_sequence_pattern(self, ctx: Python3Parser.Maybe_sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#maybe_star_pattern.
+ def visitMaybe_star_pattern(self, ctx: Python3Parser.Maybe_star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_pattern.
+ def visitStar_pattern(self, ctx: Python3Parser.Star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#mapping_pattern.
+ def visitMapping_pattern(self, ctx: Python3Parser.Mapping_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#items_pattern.
+ def visitItems_pattern(self, ctx: Python3Parser.Items_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#key_value_pattern.
+ def visitKey_value_pattern(self, ctx: Python3Parser.Key_value_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#double_star_pattern.
+ def visitDouble_star_pattern(self, ctx: Python3Parser.Double_star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#class_pattern.
+ def visitClass_pattern(self, ctx: Python3Parser.Class_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#positional_patterns.
+ def visitPositional_patterns(self, ctx: Python3Parser.Positional_patternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#keyword_patterns.
+ def visitKeyword_patterns(self, ctx: Python3Parser.Keyword_patternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#keyword_pattern.
+ def visitKeyword_pattern(self, ctx: Python3Parser.Keyword_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#test.
+ def visitTest(self, ctx: Python3Parser.TestContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#test_nocond.
+ def visitTest_nocond(self, ctx: Python3Parser.Test_nocondContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#lambdef.
+ def visitLambdef(self, ctx: Python3Parser.LambdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#lambdef_nocond.
+ def visitLambdef_nocond(self, ctx: Python3Parser.Lambdef_nocondContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#or_test.
+ def visitOr_test(self, ctx: Python3Parser.Or_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#and_test.
+ def visitAnd_test(self, ctx: Python3Parser.And_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#not_test.
+ def visitNot_test(self, ctx: Python3Parser.Not_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comparison.
+ def visitComparison(self, ctx: Python3Parser.ComparisonContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_op.
+ def visitComp_op(self, ctx: Python3Parser.Comp_opContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_expr.
+ def visitStar_expr(self, ctx: Python3Parser.Star_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#expr.
+ def visitExpr(self, ctx: Python3Parser.ExprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#atom_expr.
+ def visitAtom_expr(self, ctx: Python3Parser.Atom_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#atom.
+ def visitAtom(self, ctx: Python3Parser.AtomContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#name.
+ def visitName(self, ctx: Python3Parser.NameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist_comp.
+ def visitTestlist_comp(self, ctx: Python3Parser.Testlist_compContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#trailer.
+ def visitTrailer(self, ctx: Python3Parser.TrailerContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subscriptlist.
+ def visitSubscriptlist(self, ctx: Python3Parser.SubscriptlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subscript_.
+ def visitSubscript_(self, ctx: Python3Parser.Subscript_Context):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#sliceop.
+ def visitSliceop(self, ctx: Python3Parser.SliceopContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#exprlist.
+ def visitExprlist(self, ctx: Python3Parser.ExprlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist.
+ def visitTestlist(self, ctx: Python3Parser.TestlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dictorsetmaker.
+ def visitDictorsetmaker(self, ctx: Python3Parser.DictorsetmakerContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#classdef.
+ def visitClassdef(self, ctx: Python3Parser.ClassdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#arglist.
+ def visitArglist(self, ctx: Python3Parser.ArglistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#argument.
+ def visitArgument(self, ctx: Python3Parser.ArgumentContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_iter.
+ def visitComp_iter(self, ctx: Python3Parser.Comp_iterContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_for.
+ def visitComp_for(self, ctx: Python3Parser.Comp_forContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_if.
+ def visitComp_if(self, ctx: Python3Parser.Comp_ifContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#encoding_decl.
+ def visitEncoding_decl(self, ctx: Python3Parser.Encoding_declContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_expr.
+ def visitYield_expr(self, ctx: Python3Parser.Yield_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_arg.
+ def visitYield_arg(self, ctx: Python3Parser.Yield_argContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#strings.
+ def visitStrings(self, ctx: Python3Parser.StringsContext):
+ return self.visitChildren(ctx)
+
+
+del Python3Parser
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
new file mode 100644
index 000000000..e8bd60bf1
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
@@ -0,0 +1,134 @@
+from antlr4 import *
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserVisitor import Python3ParserVisitor
+
+
+class RemoveVariableNames(Python3ParserVisitor):
+ def visitAtom(self, ctx):
+ name_ctx = ctx.name()
+ if name_ctx:
+ token = name_ctx.getToken(Python3Parser.NAME, 0)
+ if token:
+ token.text = 'x'
+ return self.visitChildren(ctx)
+
+
+class CustomPythonVisitor(Python3ParserVisitor):
+ def __init__(self):
+ self.loop_count = 0
+ self.if_count = 0
+ self.method_count = 0
+
+ def visitWhile_stmt(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitFor_stmt(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitIf_stmt(self, ctx):
+ self.if_count += 1
+ return self.visitChildren(ctx)
+
+ def visitFuncdef(self, ctx):
+ self.method_count += 1
+ return self.visitChildren(ctx)
+
+
+def mutate(source_code: str):
+ input_stream = InputStream(source_code)
+ lexer = Python3Lexer(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = Python3Parser(stream)
+ tree = parser.file_input()
+
+ # Transform the AST
+ transformer = RemoveVariableNames()
+ transformer.visit(tree)
+
+ return tree
+
+
+level0 = []
+level1 = []
+level2 = []
+
+
+def find_levels(node, parser, level=0):
+ if level == 0:
+ level0.append(node.toStringTree(recog=parser))
+ elif level == 1:
+ level1.append(node.toStringTree(recog=parser))
+ elif level == 2:
+ level2.append(node.toStringTree(recog=parser))
+
+ for child in node.getChildren():
+ if isinstance(child, ParserRuleContext):
+ find_levels(child, parser, level=level + 1)
+
+
+def get_children(node, parser):
+ parent = node.toStringTree(recog=parser)
+ children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for child
+ in node.getChildren()]
+ return parent, children
+
+
+parents1 = []
+parents2 = []
+children1 = []
+children2 = []
+
+
+def get_parent_children_relation(root, parser, level=0):
+ for child in root.getChildren():
+ if isinstance(child, ParserRuleContext):
+ p, c = get_children(child, parser)
+ if level == 0:
+ parents1.append(p)
+ children1.append(c)
+ elif level == 1:
+ parents2.append(p)
+ children2.append(c)
+ get_parent_children_relation(child, parser, level + 1)
+
+
+def analyze(source_code: str):
+ input_tree = mutate(source_code)
+
+ parser = Python3Parser(CommonTokenStream(Python3Lexer(InputStream(source_code))))
+
+ visitor = CustomPythonVisitor()
+ visitor.visit(input_tree)
+ count_l = visitor.loop_count
+ count_if = visitor.if_count
+ count_f = visitor.method_count
+
+ # Finden der Ebenen
+ find_levels(input_tree, parser)
+
+ # Eltern-Kind-Beziehungen finden
+ get_parent_children_relation(input_tree, parser)
+
+ counts = [count_l, count_if, count_f]
+ print(counts)
+ levels = [level0, level1, level2]
+ i = 1
+ for lev in levels:
+ print("Level", i)
+ print(lev)
+ i += 1
+
+ return counts, levels
+
+
+if __name__ == "__main__":
+ code = """
+ def sum_first_ten():
+ sum = 0
+ for i in range (11):
+ sum += i
+ return sum"""
+ counts, levels = analyze(code)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
new file mode 100644
index 000000000..5f2bd6d2b
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
@@ -0,0 +1,15 @@
+from dataclasses import dataclass
+from typing import Any
+
+
+#TODO Extract the datanode to here
+@dataclass
+class MethodNode:
+ line_start: int
+ line_end: int
+ source_code: str
+ name: str
+ ast: Any
+
+ def __str__(self):
+ return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})"
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
new file mode 100644
index 000000000..8058e47c2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
@@ -0,0 +1,12 @@
+from itertools import islice, zip_longest
+
+# https://docs.python.org/3/library/itertools.html#itertools-recipes
+def batched(iterable, n):
+ """Batch data into lists of length n. The last batch may be shorter."""
+ # batched('ABCDEFG', 3) --> ABC DEF G
+ it = iter(iterable)
+ while True:
+ batch = list(islice(it, n))
+ if not batch:
+ return
+ yield batch
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
new file mode 100644
index 000000000..ca434c4d6
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
@@ -0,0 +1,133 @@
+from dataclasses import dataclass
+from typing import Dict, Tuple, Union, cast
+from module_programming_winnowing.feedback_suggestions.winnowing import calculate_similarity
+
+from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze as analyze_python
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaAstVisitor import analyze as analyze_java
+
+
+def remove_whitespace(s: str) -> str:
+ return "".join(s.split())
+
+
+def cache_key(code1: str, code2: str) -> Tuple[str, str]:
+ return remove_whitespace(code1), remove_whitespace(code2)
+
+
+@dataclass
+class UncomputedComparison:
+ code1: str
+ counts1: list[int]
+ levels1: list[list]
+ code2: str
+ counts2: list[int]
+ levels2: list[list]
+
+
+@dataclass
+class SimilarityScore:
+ similarity_score: float
+
+ def __repr__(self):
+ return f"SimilarityScore(similarity_score={self.similarity_score})"
+
+ def __str__(self):
+ return f"similarity_score={self.similarity_score}"
+
+
+def create_ast_level_and_counts(code: str, programming_language: str):
+ if programming_language == "java":
+ # return analyze_java(code)
+ return
+ if programming_language == "python":
+ return analyze_python(code)
+ raise ValueError(f"Unsupported programming language: {programming_language}")
+
+
+class CodeSimilarityComputer:
+ """
+ Takes multiple pairs of code snippets and their corresponding tree representations,
+ and computes their similarity scores using AP-TED. It also caches the similarity
+ scores for faster computation and auto-assigns a similarity of 0.0 distance to
+ identical code snippets (ignoring whitespace).
+ """
+
+ def __init__(self) -> None:
+ # keys are with all whitespace removed
+ self.cache: Dict[Tuple[str, str], Union[SimilarityScore, UncomputedComparison]] = {}
+
+ def add_comparison(self, code1: str, code2: str, programming_language: str):
+ """Add a comparison to later compute."""
+ key = cache_key(code1, code2)
+ if key in self.cache:
+ return
+ if remove_whitespace(code1) == remove_whitespace(code2):
+ # identical code snippets in almost all cases
+ self.cache[key] = SimilarityScore(100.0) # perfect match (Similarity Score = 100)
+ else:
+ counts1, level1 = create_ast_level_and_counts(code1, programming_language)
+ counts2, level2 = create_ast_level_and_counts(code2, programming_language)
+ self.cache[key] = UncomputedComparison(code1, counts1, level1, code2, counts2, level2)
+
+ def compute_similarity_scores(self):
+ """Compute the similarity scores for all comparisons."""
+ wanted_comparisons = []
+
+ for value in self.cache.values():
+ if isinstance(value, UncomputedComparison):
+ wanted_comparisons.append((value.code1, value.counts1, value.levels1, value.code2, value.counts2,
+ value.levels2))
+ if not wanted_comparisons:
+ return
+
+ for code1, counts1, levels1, code2, counts2, levels2 in wanted_comparisons:
+ similarity_score = calculate_similarity(counts1, levels1, counts2, levels2)
+ self.cache[cache_key(code1, code2)] = SimilarityScore(similarity_score)
+
+ def get_similarity_score(self, code1: str, code2: str) -> SimilarityScore:
+ """Get the similarity score for a comparison."""
+ key = cache_key(code1, code2)
+ if key not in self.cache:
+ raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.")
+ if isinstance(self.cache[key], UncomputedComparison):
+ raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.")
+ return cast(SimilarityScore, self.cache[key])
+
+
+# TODO: These are test functions; to be deleted when productive later
+def test_code_similarity_computer():
+ # Beispiel-Code-Snippets
+ code1 = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int feld = 4;
+ int test = 5;
+
+ }"""
+ code2 = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+
+ }"""
+
+ # Initialisiere den CodeSimilarityComputer
+ sim_computer = CodeSimilarityComputer()
+
+ # Füge die Code-Vergleiche hinzu
+ sim_computer.add_comparison(code1, code2, "java")
+
+ # Berechne die Ähnlichkeitspunkte
+ sim_computer.compute_similarity_scores()
+
+ # Hole die Ähnlichkeitspunkte
+ similarity = sim_computer.get_similarity_score(code1, code2)
+
+ # Ausgabe der Ähnlichkeit
+ print(f"Similarity score between code1 and code2: {similarity.similarity_score}")
+
+
+if __name__ == "__main__":
+ test_code_similarity_computer()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
new file mode 100644
index 000000000..94e7048eb
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
@@ -0,0 +1,198 @@
+from typing import Dict, Iterable, List, Optional
+import gc
+
+from pydantic import BaseModel, Field
+
+from athena.helpers.programming.feedback import format_feedback_title
+from athena.logger import logger
+from athena.programming import Feedback, Submission
+from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse
+from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode
+from module_programming_winnowing.feedback_suggestions.batch import batched
+from module_programming_winnowing.feedback_suggestions.code_similarity_computer import CodeSimilarityComputer
+
+SIMILARITY_THRESHOLD = 95 # TODO Needs to be adapted
+
+
+def make_feedback_suggestion_from(feedback: Feedback, submission: Submission,
+ submission_method: MethodNode) -> Feedback:
+ suggestion = feedback.copy(deep=True)
+ # add meta information for debugging
+ suggestion.meta["original_feedback_id"] = feedback.id
+ suggestion.meta["original_method_code"] = suggestion.meta["method_code"]
+ suggestion.meta["method_code"] = submission_method.source_code
+ # adjust for submission
+ suggestion.submission_id = submission.id
+ suggestion.line_start = submission_method.line_start
+ suggestion.line_end = submission_method.line_end
+ # regenerate title from filename and line numbers
+ suggestion.title = format_feedback_title(suggestion.file_path, suggestion.line_start, suggestion.line_end)
+ # remove ID
+ suggestion.id = None
+ return suggestion
+
+class CodeComparisonWithCorrespondingSuggestions:
+ """A pair of code snippets with a corresponding suggestions if their similarity is high enough."""
+
+ def __init__(self, code1: str, code2: str, suggestion: Feedback) -> None:
+ self.code1 = code1
+ self.code2 = code2
+ self.suggestion = suggestion
+
+ def has_same_code(self, other) -> bool:
+ return self.code1 == other.code1 and self.code2 == other.code2
+
+
+def group_feedbacks_by_file_path(feedbacks: List[Feedback]) -> Dict[str, List[Feedback]]:
+ """Groups feedbacks by file path for faster access."""
+ feedbacks_by_file_path: Dict[str, List[Feedback]] = {}
+ for feedback in feedbacks:
+ if feedback.file_path not in feedbacks_by_file_path:
+ feedbacks_by_file_path[str(feedback.file_path)] = []
+ feedbacks_by_file_path[str(feedback.file_path)].append(feedback)
+ return feedbacks_by_file_path
+
+
+def create_comparisons_with_suggestions(
+ submissions: List[Submission],
+ feedbacks: List[Feedback],
+ programming_language: str,
+) -> Iterable[CodeComparisonWithCorrespondingSuggestions]:
+ """Creates code comparisons and corresponding feedback suggestions as a generator."""
+ if len(feedbacks) == 0:
+ return
+ # group feedbacks by file path for faster access
+ logger.debug("Grouping %d feedbacks by file path", len(feedbacks))
+ feedbacks_by_file_path = group_feedbacks_by_file_path(feedbacks)
+ for submission in submissions:
+ for file_path, file_feedbacks in feedbacks_by_file_path.items():
+ # read file from submission
+ try:
+ code = submission.get_code(file_path)
+ except KeyError: # KeyError is for when the file is not in the zip
+ logger.debug("File %s not found in submission %d.", file_path, submission.id)
+ continue
+ except UnicodeDecodeError:
+ logger.warning("File %s in submission %d is not UTF-8 encoded.", file_path, submission.id)
+ continue
+ # get all methods in the file of the submission
+ submission_methods = parse(code, programming_language)
+ # get all feedbacks that match methods in the submission
+ for s_method in submission_methods:
+ for feedback in file_feedbacks:
+ if feedback.submission_id == submission.id:
+ # don't compare feedback with itself
+ continue
+ if feedback.meta["method_name"] == s_method.name:
+ # compare code (later) and add feedback as a possible suggestion (also later)
+ suggestion = make_feedback_suggestion_from(feedback, submission, s_method)
+ yield CodeComparisonWithCorrespondingSuggestions(s_method.source_code,
+ feedback.meta["method_code"], suggestion)
+
+
+def create_feedback_suggestions(
+ submissions: List[Submission],
+ feedbacks: List[Feedback],
+ programming_language: str,
+) -> List[Feedback]:
+ """
+ Get a list of all submissions that the given feedback could also apply to (similar code in same method).
+ Then generate feedback suggestions for those submissions.
+ """
+ if len(feedbacks) == 0:
+ return [] # nothing to do
+
+ suggestions: List[Feedback] = []
+
+ # create code comparisons and corresponding feedback suggestions in batches for less memory usage
+ for idx, comparisons_with_suggestions in enumerate(
+ batched(create_comparisons_with_suggestions(submissions, feedbacks, programming_language), 128)):
+ # compute similarity scores for all comparisons at once
+ sim_computer = CodeSimilarityComputer()
+ for s_comp in comparisons_with_suggestions:
+ sim_computer.add_comparison(s_comp.code1, s_comp.code2, programming_language)
+ logger.debug("Computing similarity scores for %d code comparisons (batch #%d)",
+ len(comparisons_with_suggestions), idx)
+ sim_computer.compute_similarity_scores() # compute all at once, enables vectorization
+
+ # create suggestions
+ for s_comp in comparisons_with_suggestions:
+ similarity = sim_computer.get_similarity_score(s_comp.code1, s_comp.code2)
+ if similarity.similarity_score <= SIMILARITY_THRESHOLD:
+ # found similar code -> create feedback suggestion
+ logger.info("Found similar code wih similarity of %d", similarity.similarity_score)
+ # add meta information for debugging
+ s_comp.suggestion.meta["similarity_score"] = similarity.similarity_score
+ # add to suggestions
+ suggestions.append(s_comp.suggestion)
+ # clear memory to prevent being killed by OOM killer
+ del sim_computer
+ del comparisons_with_suggestions
+ gc.collect()
+
+ return suggestions
+
+
+# TODO From here on these are just testing functions below:
+def extract_methods_from_code(code, programming_language):
+ # Parsing und AST-Erstellung
+ methods = parse(code, programming_language)
+
+ # Ausgabe der extrahierten Methoden
+ print("Extrahierte Methoden:")
+ for method in methods:
+ print(f"Method Name: {method.name}")
+ print(f"Method Source Code:\n{method.source_code}\n")
+ print(f"Method Start Line: {method.line_start}, End Line: {method.line_end}\n")
+
+ return methods
+
+
+def compare_methods(methods1, methods2, programming_language):
+ # Initialisiere den CodeSimilarityComputer
+ sim_computer = CodeSimilarityComputer()
+
+ # Füge die Code-Vergleiche hinzu
+ for method1 in methods1:
+ for method2 in methods2:
+ sim_computer.add_comparison(method1.source_code, method2.source_code, programming_language)
+
+ # Berechne die Ähnlichkeitspunkte
+ sim_computer.compute_similarity_scores()
+
+ # Ausgabe der Ähnlichkeitspunkte
+ for method1 in methods1:
+ for method2 in methods2:
+ similarity = sim_computer.get_similarity_score(method1.source_code, method2.source_code)
+ print(f"Similarity score between {method1.name} and {method2.name}: {similarity.similarity_score}")
+
+
+def test_ast_creation_and_code_similarity():
+ code1 = """
+ def sum_first_ten():
+ sum = 0
+ return sum
+ """
+
+ code2 = """
+ def sum_first_ten():
+ sum = 0
+ for i in range(11):
+ sum += i
+ return sum
+ """
+
+ programming_language = "python"
+
+ print("Extracting methods from code1...")
+ methods1 = extract_methods_from_code(code1, programming_language)
+
+ print("Extracting methods from code2...")
+ methods2 = extract_methods_from_code(code2, programming_language)
+
+ print("Comparing methods from code1 and code2...")
+ compare_methods(methods1, methods2, programming_language)
+
+
+if __name__ == "__main__":
+ test_ast_creation_and_code_similarity()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
new file mode 100644
index 000000000..03c88e7b2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
@@ -0,0 +1,40 @@
+"""
+Feedback suggestions can overlap each other, which is not ideal.
+This module removes overlapping suggestions.
+"""
+
+from typing import List
+
+from athena.programming import Feedback
+
+
+def is_overlapping(feedback1: Feedback, feedback2: Feedback) -> bool:
+ """Returns whether the two given feedbacks overlap."""
+ if feedback1.file_path != feedback2.file_path:
+ # feedback in different files
+ return False
+ if feedback1.line_start is None or feedback2.line_start is None or feedback1.line_end is None or feedback2.line_end is None:
+ # unreferenced feedback (both start and end are None because of Schema validation for line_end)
+ return False
+ if feedback1.line_start > feedback2.line_end:
+ return False
+ if feedback2.line_start > feedback1.line_end:
+ return False
+ return True
+
+
+def filter_overlapping_suggestions(suggestions: List[Feedback]) -> List[Feedback]:
+ """Filters out overlapping suggestions we don't want to suggest to tutors.
+
+ Arguments:
+ suggestions {list} -- List of suggestions to filter
+ """
+ # sort suggestions by similarity_score to keep the most accurate ones
+ suggestions.sort(key=lambda s: s.meta.get("similarity_score", 0), reverse=True)
+ # skip suggestions if they overlap with a suggestion that was already added
+ added_suggestions: List[Feedback] = []
+ for suggestion in suggestions:
+ if any(is_overlapping(suggestion, added_suggestion) for added_suggestion in added_suggestions):
+ continue
+ added_suggestions.append(suggestion)
+ return added_suggestions
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
new file mode 100644
index 000000000..32827ed63
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
@@ -0,0 +1,47 @@
+"""
+When evaluating Winnowing, we found the following problems with the suggestions:
+(1) Sometimes, there was a feedback on something banal like a getter, which was actually meant for another method.
+ This caused suggestions for almost all the other submissions, which were not helpful.
+ We therefore classify a suggestion as "suspicious" if it affects too many other submissions (> 10% and > 2).
+(2) However, this would also sometimes classify a suggestion as suspicious if it is actually helpful.
+ Therefore, we make a suggestion non-supicious if there are at least 3 other suggestions for the same method.
+ This makes a mistake like described above unlikely.
+(3) Suggestions are also non-suspicious if they include words that hint at other parts of the code, like
+ "again", "consequential error", "previous", "later", "earlier", "above", "below" and German equivalents of these words.
+"""
+
+from typing import Dict, List, cast
+
+from athena.programming import Feedback
+
+
+def filter_suspicious(suggestions: List[Feedback], n_submissions: int) -> List[Feedback]:
+ """
+ Filters out suspicious suggestions we don't want to suggest to tutors.
+ suggestions: List of suggestions to filter
+ n_submissions: Number of submissions for the exercise
+ """
+ suspicious: Dict[int, bool] = {} # feedback id: is suspicious
+ # (1) classify suggestions as suspicious if they affect too many other submissions
+ for suggestion in suggestions:
+ n_feedback_suggestions = suggestion.meta.get("n_feedback_suggestions", 999999)
+ if n_feedback_suggestions > 2 and n_feedback_suggestions > 0.1 * n_submissions:
+ suspicious[cast(int, suggestion.id)] = True
+ # find all other suggestions for the same method
+ other_suggestions: List[Feedback] = []
+ for other_suggestion in suggestions:
+ if other_suggestion.id == suggestion.id:
+ continue
+ if other_suggestion.file_path == suggestion.file_path and other_suggestion.meta.get("method_name") == suggestion.meta.get("method_name"):
+ other_suggestions.append(other_suggestion)
+ # (2) make suggestion non-suspicious if there are at least 3 other suggestions for the same method
+ if len(other_suggestions) >= 3:
+ suspicious[cast(int, suggestion.id)] = False
+ # (3) classify suggestions as suspicious if they include words that hint at other parts of the code
+ suspicious_words = ["again", "consequential error", "previous", "later", "earlier", "above", "below"]
+ for suggestion in suggestions:
+ for word in suspicious_words:
+ if word in str(suggestion.description):
+ suspicious[cast(int, suggestion.id)] = True
+ # filter out suspicious suggestions
+ return list(filter(lambda s: not suspicious.get(cast(int, s.id), False), suggestions))
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
new file mode 100644
index 000000000..511a9c5e2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
@@ -0,0 +1,170 @@
+# This implementation has been adapted from the algorithm provided in the repository:
+# https://github.com/prateksha/Source-Code-Similarity-Measurement/blob/master/generate_ast.py
+# The original code has been modified to fit the specific requirements of this project,
+# including changes in the caching mechanism and additional functionality to handle
+# both Java and Python code (and potentially further programming languages) similarity measurements.
+
+
+import nltk
+import math
+from nltk.util import ngrams
+from collections import Counter
+from statistics import mean
+
+def cosine_similarity(l1, l2):
+ vec1 = Counter(l1)
+ vec2 = Counter(l2)
+
+ intersection = set(vec1.keys()) & set(vec2.keys())
+
+ numerator = sum([vec1[x] * vec2[x] for x in intersection])
+
+ sum1 = sum([vec1[x] ** 2 for x in vec1.keys()])
+ sum2 = sum([vec2[x] ** 2 for x in vec2.keys()])
+ denominator = math.sqrt(sum1) * math.sqrt(sum2)
+
+ if not denominator:
+ return 0.0
+
+ return float(numerator) / denominator
+
+
+# Could be changed to include rightmost minimum too
+def get_min(get_key=lambda x: x):
+ def rightmost_minimum(l):
+ minimum = float('inf')
+ minimum_index = -1
+ pos = 0
+
+ while pos < len(l):
+ if get_key(l[pos]) < minimum:
+ minimum = get_key(l[pos])
+ minimum_index = pos
+ pos += 1
+
+ return l[minimum_index]
+
+ return rightmost_minimum
+
+
+# Have used the inbuilt hash function (Should try a self defined rolling hash function)
+def winnowing(kgrams, k, t):
+ modified_min_func = get_min(lambda key_value: key_value[0])
+
+ document_fingerprints = []
+
+ # print(kgrams)
+ hash_table = [(hash(kgrams[i]), i) for i in range(len(kgrams))]
+ # print(len(hash_table))
+
+ window_length = t - k + 1
+ window_begin = 0
+ window_end = window_length
+
+ minimum_hash = None
+
+ while (window_end < len(hash_table)):
+ window = hash_table[window_begin:window_end]
+ window_minimum = modified_min_func(window)
+
+ if (minimum_hash != window_minimum):
+ # print(window_minimum)
+ document_fingerprints.append(window_minimum[0]) # not taking positions into consideration
+ minimum_hash = window_minimum
+
+ window_begin = window_begin + 1
+ window_end = window_end + 1
+
+ return document_fingerprints
+
+
+def generate_kgrams(data, k):
+ for text in data:
+ token = nltk.word_tokenize(text)
+ kgrams = ngrams(token, k)
+ lst_kgrams = list(kgrams)
+ # print("Kgrams : ", lst_kgrams)
+ return lst_kgrams
+
+
+# only conversion to lowercase for now
+def preprocess(document):
+ preprocessed_document = []
+ for item in document:
+ item = item.lower()
+ preprocessed_document.append(item)
+ return preprocessed_document
+
+
+def generate_fingerprints(data, k, t):
+ preprocessed_data = preprocess(data)
+ kgrams = generate_kgrams(preprocessed_data, k)
+ # print(len(kgrams))
+ document_fingerprints = winnowing(kgrams, k, t)
+ return document_fingerprints
+
+
+def calculate_similarity(counts1, levels1, counts2, levels2):
+ lev0s = []
+ lev1s = []
+ lev2s = []
+
+ for i in range(10):
+ fingerprints1_0 = generate_fingerprints(levels1[0], 13, 17)
+ fingerprints2_0 = generate_fingerprints(levels2[0], 13, 17)
+ cosine_similarity_lev0 = cosine_similarity(fingerprints1_0, fingerprints2_0)
+ lev0s.append(cosine_similarity_lev0)
+
+ fingerprints1_1 = generate_fingerprints(levels1[1], 13, 17)
+ fingerprints2_1 = generate_fingerprints(levels2[1], 13, 17)
+ cosine_similarity_lev1 = cosine_similarity(fingerprints1_1, fingerprints2_1)
+ lev1s.append(cosine_similarity_lev1)
+
+ fingerprints1_2 = generate_fingerprints(levels1[2], 13, 17)
+ fingerprints2_2 = generate_fingerprints(levels2[2], 13, 17)
+ cosine_similarity_lev2 = cosine_similarity(fingerprints1_2, fingerprints2_2)
+ lev2s.append(cosine_similarity_lev2)
+
+ final_cosine_similarity_lev0 = round(mean(lev0s), 2)
+ final_cosine_similarity_lev1 = round(mean(lev1s), 2)
+ final_cosine_similarity_lev2 = round(mean(lev2s), 2)
+
+ normalization_score = 0
+ t = 0
+ for c in range(3):
+ x = counts1[c]
+ y = counts2[c]
+ if (x + y) != 0:
+ t = t + 1
+ if x > y:
+ s = 1 - ((x - y) / (x + y))
+ else:
+ s = 1 - ((y - x) / (x + y))
+ normalization_score += (10 * s)
+
+ if t != 0:
+ normalization_score = normalization_score / (t * 10)
+ total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + (
+ 0.2 * final_cosine_similarity_lev2))
+ normalization_score = normalization_score
+ final_score = (total_similarity_score_win * 60) + (normalization_score * 40)
+ print("Similarity score = : \n", final_score)
+ else:
+ total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + (
+ 0.2 * final_cosine_similarity_lev2))
+ final_score = (total_similarity_score_win * 100)
+
+ return final_score
+
+
+if __name__ == "__main__":
+ from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze
+
+ file_path1 = "1.py" #TODO test with string
+ file_path2 = "test6b.py" #TODO Test with String
+
+ counts1, levels1 = analyze(file_path1)
+ counts2, levels2 = analyze(file_path2)
+
+ similarity_score = calculate_similarity(counts1, levels1, counts2, levels2)
+ print("Similarity score:", similarity_score)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
new file mode 100644
index 000000000..13e84ece9
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
@@ -0,0 +1,4 @@
+a = 5
+for i in range(a):
+ for j in range(i):
+ print("Hi")
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
new file mode 100644
index 000000000..a183a1c0a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
@@ -0,0 +1,15 @@
+def foo(x, y) do
+ if x + y > 10 then
+ z = x + y
+ endif
+endef
+
+for i in 0 do
+ while i < 5 do
+ i = i + 1
+ endwhile
+endfor
+
+x = 5
+y = 10
+result = x * y
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
new file mode 100644
index 000000000..53cc9f233
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
@@ -0,0 +1,3 @@
+for i in range(5):
+ for j in range(5):
+ print(i*j)
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
new file mode 100644
index 000000000..f62c926bc
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
@@ -0,0 +1,11 @@
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+ for(int i = 0; i < 5; i++) {
+ //Das ist ein Kommentar
+ String foooler = "Test";
+ System.out.println(i);
+ }
+ }
+ }
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
new file mode 100644
index 000000000..cebbe482f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
@@ -0,0 +1,7 @@
+import math
+
+p1=input()
+p2=input()
+p1 = int(p1)
+p2 = int(p2)
+print (math.sqrt((p1*p1)+(p2*p2)))
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
new file mode 100644
index 000000000..ca3516805
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
@@ -0,0 +1,10 @@
+import math
+
+x = input()
+y = input()
+x = int(x)
+y = int(y)
+# Square and add terms
+res = math.sqrt(pow(x, 2)+pow(y, 2))
+
+print (res)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
new file mode 100644
index 000000000..2b6873bc4
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
@@ -0,0 +1,11 @@
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, world!");
+ int test = 5;
+ for(int i = 0; i < 10; i++) {
+ //Das ist ein Kommentar
+ String foooler = "Test";
+ System.out.println(i);
+ }
+ }
+ }
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
new file mode 100644
index 000000000..7eec08e3a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
@@ -0,0 +1,12 @@
+a=input()
+a=int(a)
+
+
+if(5<=a<18):
+ print ("child")
+elif(a>=18):
+ print ("adult")
+elif(a<5):
+ print ("infant")
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
new file mode 100644
index 000000000..df18531b7
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
@@ -0,0 +1,9 @@
+x=input()
+x=int(x)
+
+if(x<5):
+ print ("infant")
+elif(5<=x<18):
+ print ("child")
+elif(x>=18):
+ print ("adult")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
new file mode 100644
index 000000000..fa828bf74
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
@@ -0,0 +1,5 @@
+a=input()
+a=int(a)
+
+for i in range(a):
+ print ("Hello world!")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
new file mode 100644
index 000000000..7767e2386
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
@@ -0,0 +1,6 @@
+a=input()
+a=int(a)
+count=0
+while(count= 1900 and year <= 100000:
+ if year % 4 == 0:
+ leap = True
+ if year % 100 == 0:
+ leap = False
+ if year % 400 == 0:
+ leap = True
+ return leap
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
new file mode 100644
index 000000000..96e3a41bf
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
@@ -0,0 +1,10 @@
+a = input()
+a = int(a)
+
+
+if(5 <= a < 18):
+ print("child")
+elif(a >= 18):
+ print("adult")
+elif(a < 5):
+ print("infant")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
new file mode 100644
index 000000000..3c8a12f3f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
@@ -0,0 +1,12 @@
+a = input()
+a = int(a)
+
+
+if(5 <= a < 18):
+ print("child")
+elif(a >= 18):
+ print("adult")
+elif(a < 5):
+ print("infant")
+
+print("Finish")
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/poetry.lock b/modules/programming/module_programming_winnowing/poetry.lock
new file mode 100644
index 000000000..5cbf8aeb1
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/poetry.lock
@@ -0,0 +1,1197 @@
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+
+[[package]]
+name = "antlr4-python3-runtime"
+version = "4.13.2"
+description = "ANTLR 4.13.2 runtime for Python 3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "antlr4_python3_runtime-4.13.2-py3-none-any.whl", hash = "sha256:fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8"},
+ {file = "antlr4_python3_runtime-4.13.2.tar.gz", hash = "sha256:909b647e1d2fc2b70180ac586df3933e38919c85f98ccc656a96cd3f25ef3916"},
+]
+
+[[package]]
+name = "anyio"
+version = "4.6.2.post1"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
+]
+
+[package.dependencies]
+idna = ">=2.8"
+sniffio = ">=1.1"
+
+[package.extras]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
+
+[[package]]
+name = "astroid"
+version = "3.3.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.9.0"
+files = [
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
+]
+
+[[package]]
+name = "athena"
+version = "1.0.0"
+description = "This is a helper module for easier development of Athena modules. It provides communication functionality with the Assessment Module manager, as well as helper functions for storage."
+optional = false
+python-versions = "3.11.*"
+files = []
+develop = false
+
+[package.dependencies]
+fastapi = "^0.109.1"
+gitpython = "^3.1.41"
+httpx = "^0.24.1"
+psycopg2 = "^2.9.9"
+sqlalchemy = {version = "^2.0.21", extras = ["mypy"]}
+uvicorn = "^0.23.0"
+
+[package.source]
+type = "git"
+url = "https://github.com/ls1intum/Athena.git"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
+subdirectory = "athena"
+
+[[package]]
+name = "certifi"
+version = "2024.8.30"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"},
+ {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "dill"
+version = "0.3.9"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dodgy"
+version = "0.2.1"
+description = "Dodgy: Searches for dodgy looking lines in Python code"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dodgy-0.2.1-py3-none-any.whl", hash = "sha256:51f54c0fd886fa3854387f354b19f429d38c04f984f38bc572558b703c0542a6"},
+ {file = "dodgy-0.2.1.tar.gz", hash = "sha256:28323cbfc9352139fdd3d316fa17f325cc0e9ac74438cbba51d70f9b48f86c3a"},
+]
+
+[[package]]
+name = "fastapi"
+version = "0.109.2"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"},
+ {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"},
+]
+
+[package.dependencies]
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
+starlette = ">=0.36.3,<0.37.0"
+typing-extensions = ">=4.8.0"
+
+[package.extras]
+all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
+
+[[package]]
+name = "flake8"
+version = "7.1.1"
+description = "the modular source code checker: pep8 pyflakes and co"
+optional = false
+python-versions = ">=3.8.1"
+files = [
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
+]
+
+[package.dependencies]
+mccabe = ">=0.7.0,<0.8.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
+
+[[package]]
+name = "flake8-polyfill"
+version = "1.0.2"
+description = "Polyfill package for Flake8 plugins"
+optional = false
+python-versions = "*"
+files = [
+ {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"},
+ {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
+]
+
+[package.dependencies]
+flake8 = "*"
+
+[[package]]
+name = "gitdb"
+version = "4.0.11"
+description = "Git Object Database"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
+ {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
+]
+
+[package.dependencies]
+smmap = ">=3.0.1,<6"
+
+[[package]]
+name = "gitpython"
+version = "3.1.43"
+description = "GitPython is a Python library used to interact with Git repositories"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"},
+ {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"},
+]
+
+[package.dependencies]
+gitdb = ">=4.0.1,<5"
+
+[package.extras]
+doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"]
+test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"]
+
+[[package]]
+name = "greenlet"
+version = "3.1.1"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "0.17.3"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"},
+ {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"},
+]
+
+[package.dependencies]
+anyio = ">=3.0,<5.0"
+certifi = "*"
+h11 = ">=0.13,<0.15"
+sniffio = "==1.*"
+
+[package.extras]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "httpx"
+version = "0.24.1"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"},
+ {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"},
+]
+
+[package.dependencies]
+certifi = "*"
+httpcore = ">=0.15.0,<0.18.0"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "idna"
+version = "3.10"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
+]
+
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "joblib"
+version = "1.4.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"},
+ {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"},
+]
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mypy"
+version = "1.13.0"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=1.0.0"
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
+install-types = ["pip"]
+mypyc = ["setuptools (>=50)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nltk"
+version = "3.9.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"},
+ {file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "packaging"
+version = "24.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
+]
+
+[[package]]
+name = "pep8-naming"
+version = "0.10.0"
+description = "Check PEP-8 naming conventions, plugin for flake8"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pep8-naming-0.10.0.tar.gz", hash = "sha256:f3b4a5f9dd72b991bf7d8e2a341d2e1aa3a884a769b5aaac4f56825c1763bf3a"},
+ {file = "pep8_naming-0.10.0-py2.py3-none-any.whl", hash = "sha256:5d9f1056cb9427ce344e98d1a7f5665710e2f20f748438e308995852cfa24164"},
+]
+
+[package.dependencies]
+flake8-polyfill = ">=1.0.2,<2"
+
+[[package]]
+name = "platformdirs"
+version = "4.3.6"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
+]
+
+[package.extras]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
+
+[[package]]
+name = "prospector"
+version = "1.13.3"
+description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
+]
+
+[package.dependencies]
+dodgy = ">=0.2.1,<0.3.0"
+GitPython = ">=3.1.27,<4.0.0"
+mccabe = ">=0.7.0,<0.8.0"
+packaging = "*"
+pep8-naming = ">=0.3.3,<=0.10.0"
+pycodestyle = ">=2.9.0"
+pydocstyle = ">=2.0.0"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
+pylint-celery = "0.3"
+pylint-django = ">=2.6.1"
+pylint-flask = "0.6"
+PyYAML = "*"
+requirements-detector = ">=1.3.2"
+setoptconf-tmp = ">=0.3.1,<0.4.0"
+toml = ">=0.10.2,<0.11.0"
+
+[package.extras]
+with-bandit = ["bandit (>=1.5.1)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
+with-mypy = ["mypy (>=0.600)"]
+with-pyright = ["pyright (>=1.1.3)"]
+with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
+with-vulture = ["vulture (>=1.5)"]
+
+[[package]]
+name = "psycopg2"
+version = "2.9.10"
+description = "psycopg2 - Python-PostgreSQL Database Adapter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
+]
+
+[[package]]
+name = "pycodestyle"
+version = "2.12.1"
+description = "Python style guide checker"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.17"
+description = "Data validation and settings management using python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fa51175313cc30097660b10eec8ca55ed08bfa07acbfe02f7a42f6c242e9a4b"},
+ {file = "pydantic-1.10.17-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7e8988bb16988890c985bd2093df9dd731bfb9d5e0860db054c23034fab8f7a"},
+ {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:371dcf1831f87c9e217e2b6a0c66842879a14873114ebb9d0861ab22e3b5bb1e"},
+ {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4866a1579c0c3ca2c40575398a24d805d4db6cb353ee74df75ddeee3c657f9a7"},
+ {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:543da3c6914795b37785703ffc74ba4d660418620cc273490d42c53949eeeca6"},
+ {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7623b59876f49e61c2e283551cc3647616d2fbdc0b4d36d3d638aae8547ea681"},
+ {file = "pydantic-1.10.17-cp310-cp310-win_amd64.whl", hash = "sha256:409b2b36d7d7d19cd8310b97a4ce6b1755ef8bd45b9a2ec5ec2b124db0a0d8f3"},
+ {file = "pydantic-1.10.17-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fa43f362b46741df8f201bf3e7dff3569fa92069bcc7b4a740dea3602e27ab7a"},
+ {file = "pydantic-1.10.17-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a72d2a5ff86a3075ed81ca031eac86923d44bc5d42e719d585a8eb547bf0c9b"},
+ {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ad32aed3bf5eea5ca5decc3d1bbc3d0ec5d4fbcd72a03cdad849458decbc63"},
+ {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb4e741782e236ee7dc1fb11ad94dc56aabaf02d21df0e79e0c21fe07c95741"},
+ {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2f89a719411cb234105735a520b7c077158a81e0fe1cb05a79c01fc5eb59d3c"},
+ {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db3b48d9283d80a314f7a682f7acae8422386de659fffaba454b77a083c3937d"},
+ {file = "pydantic-1.10.17-cp311-cp311-win_amd64.whl", hash = "sha256:9c803a5113cfab7bbb912f75faa4fc1e4acff43e452c82560349fff64f852e1b"},
+ {file = "pydantic-1.10.17-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:820ae12a390c9cbb26bb44913c87fa2ff431a029a785642c1ff11fed0a095fcb"},
+ {file = "pydantic-1.10.17-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1e51d1af306641b7d1574d6d3307eaa10a4991542ca324f0feb134fee259815"},
+ {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e53fb834aae96e7b0dadd6e92c66e7dd9cdf08965340ed04c16813102a47fab"},
+ {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2495309b1266e81d259a570dd199916ff34f7f51f1b549a0d37a6d9b17b4dc"},
+ {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:098ad8de840c92ea586bf8efd9e2e90c6339d33ab5c1cfbb85be66e4ecf8213f"},
+ {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:525bbef620dac93c430d5d6bdbc91bdb5521698d434adf4434a7ef6ffd5c4b7f"},
+ {file = "pydantic-1.10.17-cp312-cp312-win_amd64.whl", hash = "sha256:6654028d1144df451e1da69a670083c27117d493f16cf83da81e1e50edce72ad"},
+ {file = "pydantic-1.10.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c87cedb4680d1614f1d59d13fea353faf3afd41ba5c906a266f3f2e8c245d655"},
+ {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11289fa895bcbc8f18704efa1d8020bb9a86314da435348f59745473eb042e6b"},
+ {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94833612d6fd18b57c359a127cbfd932d9150c1b72fea7c86ab58c2a77edd7c7"},
+ {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4ecb515fa7cb0e46e163ecd9d52f9147ba57bc3633dca0e586cdb7a232db9e3"},
+ {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7017971ffa7fd7808146880aa41b266e06c1e6e12261768a28b8b41ba55c8076"},
+ {file = "pydantic-1.10.17-cp37-cp37m-win_amd64.whl", hash = "sha256:e840e6b2026920fc3f250ea8ebfdedf6ea7a25b77bf04c6576178e681942ae0f"},
+ {file = "pydantic-1.10.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bfbb18b616abc4df70591b8c1ff1b3eabd234ddcddb86b7cac82657ab9017e33"},
+ {file = "pydantic-1.10.17-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebb249096d873593e014535ab07145498957091aa6ae92759a32d40cb9998e2e"},
+ {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c209af63ccd7b22fba94b9024e8b7fd07feffee0001efae50dd99316b27768"},
+ {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b40c9e13a0b61583e5599e7950490c700297b4a375b55b2b592774332798b7"},
+ {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c31d281c7485223caf6474fc2b7cf21456289dbaa31401844069b77160cab9c7"},
+ {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae5184e99a060a5c80010a2d53c99aee76a3b0ad683d493e5f0620b5d86eeb75"},
+ {file = "pydantic-1.10.17-cp38-cp38-win_amd64.whl", hash = "sha256:ad1e33dc6b9787a6f0f3fd132859aa75626528b49cc1f9e429cdacb2608ad5f0"},
+ {file = "pydantic-1.10.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17c0ee7192e54a10943f245dc79e36d9fe282418ea05b886e1c666063a7b54"},
+ {file = "pydantic-1.10.17-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cafb9c938f61d1b182dfc7d44a7021326547b7b9cf695db5b68ec7b590214773"},
+ {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ef534e3c22e5abbdbdd6f66b6ea9dac3ca3e34c5c632894f8625d13d084cbe"},
+ {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d96b8799ae3d782df7ec9615cb59fc32c32e1ed6afa1b231b0595f6516e8ab"},
+ {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ab2f976336808fd5d539fdc26eb51f9aafc1f4b638e212ef6b6f05e753c8011d"},
+ {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8ad363330557beac73159acfbeed220d5f1bfcd6b930302a987a375e02f74fd"},
+ {file = "pydantic-1.10.17-cp39-cp39-win_amd64.whl", hash = "sha256:48db882e48575ce4b39659558b2f9f37c25b8d348e37a2b4e32971dd5a7d6227"},
+ {file = "pydantic-1.10.17-py3-none-any.whl", hash = "sha256:e41b5b973e5c64f674b3b4720286ded184dcc26a691dd55f34391c62c6934688"},
+ {file = "pydantic-1.10.17.tar.gz", hash = "sha256:f434160fb14b353caf634149baaf847206406471ba70e64657c1e8330277a991"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pydocstyle"
+version = "6.3.0"
+description = "Python docstring style checker"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"},
+ {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"},
+]
+
+[package.dependencies]
+snowballstemmer = ">=2.2.0"
+
+[package.extras]
+toml = ["tomli (>=1.2.3)"]
+
+[[package]]
+name = "pyflakes"
+version = "3.2.0"
+description = "passive checker of Python programs"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
+]
+
+[[package]]
+name = "pylint"
+version = "3.3.2"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.9.0"
+files = [
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
+]
+
+[package.dependencies]
+astroid = ">=3.3.5,<=3.4.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomlkit = ">=0.10.1"
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pylint-celery"
+version = "0.3"
+description = "pylint-celery is a Pylint plugin to aid Pylint in recognising and understandingerrors caused when using the Celery library"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pylint-celery-0.3.tar.gz", hash = "sha256:41e32094e7408d15c044178ea828dd524beedbdbe6f83f712c5e35bde1de4beb"},
+]
+
+[package.dependencies]
+astroid = ">=1.0"
+pylint = ">=1.0"
+pylint-plugin-utils = ">=0.2.1"
+
+[[package]]
+name = "pylint-django"
+version = "2.6.1"
+description = "A Pylint plugin to help Pylint understand the Django web framework"
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
+]
+
+[package.dependencies]
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
+
+[package.extras]
+with-django = ["Django (>=2.2)"]
+
+[[package]]
+name = "pylint-flask"
+version = "0.6"
+description = "pylint-flask is a Pylint plugin to aid Pylint in recognizing and understanding errors caused when using Flask"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pylint-flask-0.6.tar.gz", hash = "sha256:f4d97de2216bf7bfce07c9c08b166e978fe9f2725de2a50a9845a97de7e31517"},
+]
+
+[package.dependencies]
+pylint-plugin-utils = ">=0.2.1"
+
+[[package]]
+name = "pylint-plugin-utils"
+version = "0.8.2"
+description = "Utilities and helpers for writing Pylint plugins"
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
+]
+
+[package.dependencies]
+pylint = ">=1.7"
+
+[[package]]
+name = "pyyaml"
+version = "6.0.2"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
+ {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
+ {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
+ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
+]
+
+[[package]]
+name = "regex"
+version = "2024.11.6"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"},
+ {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"},
+ {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"},
+ {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"},
+ {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"},
+ {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"},
+ {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"},
+ {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"},
+ {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"},
+ {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"},
+ {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"},
+ {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"},
+ {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"},
+ {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"},
+]
+
+[[package]]
+name = "requirements-detector"
+version = "1.3.2"
+description = "Python tool to find and list requirements of a Python project"
+optional = false
+python-versions = "<4.0,>=3.8"
+files = [
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
+]
+
+[package.dependencies]
+astroid = ">=3.0,<4.0"
+packaging = ">=21.3"
+semver = ">=3.0.0,<4.0.0"
+
+[[package]]
+name = "semver"
+version = "3.0.2"
+description = "Python helper for Semantic Versioning (https://semver.org)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"},
+ {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"},
+]
+
+[[package]]
+name = "setoptconf-tmp"
+version = "0.3.1"
+description = "A module for retrieving program settings from various sources in a consistant method."
+optional = false
+python-versions = "*"
+files = [
+ {file = "setoptconf-tmp-0.3.1.tar.gz", hash = "sha256:e0480addd11347ba52f762f3c4d8afa3e10ad0affbc53e3ffddc0ca5f27d5778"},
+ {file = "setoptconf_tmp-0.3.1-py3-none-any.whl", hash = "sha256:76035d5cd1593d38b9056ae12d460eca3aaa34ad05c315b69145e138ba80a745"},
+]
+
+[package.extras]
+yaml = ["pyyaml"]
+
+[[package]]
+name = "smmap"
+version = "5.0.1"
+description = "A pure Python implementation of a sliding window memory map manager"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
+ {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.1"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
+]
+
+[[package]]
+name = "snowballstemmer"
+version = "2.2.0"
+description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
+optional = false
+python-versions = "*"
+files = [
+ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
+ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.36"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"}
+mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "starlette"
+version = "0.36.3"
+description = "The little ASGI library that shines."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"},
+ {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"},
+]
+
+[package.dependencies]
+anyio = ">=3.4.0,<5"
+
+[package.extras]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
+
+[[package]]
+name = "toml"
+version = "0.10.2"
+description = "Python Library for Tom's Obvious, Minimal Language"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.13.2"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"},
+ {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.67.1"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
+ {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
+discord = ["requests"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "typing-extensions"
+version = "4.12.2"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
+ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
+]
+
+[[package]]
+name = "uvicorn"
+version = "0.23.2"
+description = "The lightning-fast ASGI server."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"},
+ {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+h11 = ">=0.8"
+
+[package.extras]
+standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "3.11.*"
+content-hash = "b5943cc8ae2e2fe7b1d84126fe323532445afea6680a775ca5415f63b5bd2256"
diff --git a/modules/programming/module_programming_winnowing/pyproject.toml b/modules/programming/module_programming_winnowing/pyproject.toml
new file mode 100644
index 000000000..c8517b6c2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/pyproject.toml
@@ -0,0 +1,25 @@
+[tool.poetry]
+name = "module_programming_winnowing"
+version = "0.1.0"
+description = "Programming assessment Winnowing module."
+authors = ["Marlon Bucciarelli "]
+license = "MIT"
+
+[tool.poetry.dependencies]
+python = "3.11.*"
+# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
+# athena = { path = "../athena", develop = true }
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
+nltk = "^3.6.5"
+antlr4-python3-runtime = "^4.13.1"
+
+[tool.poetry.group.dev.dependencies]
+pydantic = "1.10.17"
+prospector = "^1.10.2"
+
+[tool.poetry.scripts]
+module = "athena:run_module"
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"